PageSourceSearch

https://togayther.com/js/app.js?id=80d8a9ca3bda98aa34935e6c401c293f

js togayther.com collected 2026-09-29 06:55:13 UTC 2,780,137 bytes, 73,822 lines download raw bytes

vendor: 78 bytes, lines 1-3
1/******/ (() => { // webpackBootstrap
2/******/ 	var __webpack_modules__ = ({
3
vendor: 9,944 bytes, lines 4-227
4/***/ "./node_modules/@popperjs/core/lib/createPopper.js":
5/*!*********************************************************!*\
6  !*** ./node_modules/@popperjs/core/lib/createPopper.js ***!
7  \*********************************************************/
8/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
9
10"use strict";
11__webpack_require__.r(__webpack_exports__);
12/* harmony export */ __webpack_require__.d(__webpack_exports__, {
13/* harmony export */   createPopper: () => (/* binding */ createPopper),
14/* harmony export */   detectOverflow: () => (/* reexport safe */ _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_8__["default"]),
15/* harmony export */   popperGenerator: () => (/* binding */ popperGenerator)
16/* harmony export */ });
17/* harmony import */ var _dom_utils_getCompositeRect_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./dom-utils/getCompositeRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js");
18/* harmony import */ var _dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./dom-utils/getLayoutRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js");
19/* harmony import */ var _dom_utils_listScrollParents_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./dom-utils/listScrollParents.js */ "./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js");
20/* harmony import */ var _dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./dom-utils/getOffsetParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js");
21/* harmony import */ var _utils_orderModifiers_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils/orderModifiers.js */ "./node_modules/@popperjs/core/lib/utils/orderModifiers.js");
22/* harmony import */ var _utils_debounce_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./utils/debounce.js */ "./node_modules/@popperjs/core/lib/utils/debounce.js");
23/* harmony import */ var _utils_mergeByName_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils/mergeByName.js */ "./node_modules/@popperjs/core/lib/utils/mergeByName.js");
24/* harmony import */ var _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./utils/detectOverflow.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js");
25/* harmony import */ var _dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dom-utils/instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js");
26
27
28
29
30
31
32
33
34
35var DEFAULT_OPTIONS = {
36  placement: 'bottom',
37  modifiers: [],
38  strategy: 'absolute'
39};
40
41function areValidElements() {
42  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
43    args[_key] = arguments[_key];
44  }
45
46  return !args.some(function (element) {
47    return !(element && typeof element.getBoundingClientRect === 'function');
48  });
49}
50
51function popperGenerator(generatorOptions) {
52  if (generatorOptions === void 0) {
53    generatorOptions = {};
54  }
55
56  var _generatorOptions = generatorOptions,
57      _generatorOptions$def = _generatorOptions.defaultModifiers,
58      defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,
59      _generatorOptions$def2 = _generatorOptions.defaultOptions,
60      defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;
61  return function createPopper(reference, popper, options) {
62    if (options === void 0) {
63      options = defaultOptions;
64    }
65
66    var state = {
67      placement: 'bottom',
68      orderedModifiers: [],
69      options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),
70      modifiersData: {},
71      elements: {
72        reference: reference,
73        popper: popper
74      },
75      attributes: {},
76      styles: {}
77    };
78    var effectCleanupFns = [];
79    var isDestroyed = false;
80    var instance = {
81      state: state,
82      setOptions: function setOptions(setOptionsAction) {
83        var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;
84        cleanupModifierEffects();
85        state.options = Object.assign({}, defaultOptions, state.options, options);
86        state.scrollParents = {
87          reference: (0,_dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isElement)(reference) ? (0,_dom_utils_listScrollParents_js__WEBPACK_IMPORTED_MODULE_1__["default"])(reference) : reference.contextElement ? (0,_dom_utils_listScrollParents_js__WEBPACK_IMPORTED_MODULE_1__["default"])(reference.contextElement) : [],
88          popper: (0,_dom_utils_listScrollParents_js__WEBPACK_IMPORTED_MODULE_1__["default"])(popper)
89        }; // Orders the modifiers based on their dependencies and `phase`
90        // properties
91
92        var orderedModifiers = (0,_utils_orderModifiers_js__WEBPACK_IMPORTED_MODULE_2__["default"])((0,_utils_mergeByName_js__WEBPACK_IMPORTED_MODULE_3__["default"])([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers
93
94        state.orderedModifiers = orderedModifiers.filter(function (m) {
95          return m.enabled;
96        });
97        runModifierEffects();
98        return instance.update();
99      },
100      // Sync update – it will always be executed, even if not necessary. This
101      // is useful for low frequency updates where sync behavior simplifies the
102      // logic.
103      // For high frequency updates (e.g. `resize` and `scroll` events), always
104      // prefer the async Popper#update method
105      forceUpdate: function forceUpdate() {
106        if (isDestroyed) {
107          return;
108        }
109
110        var _state$elements = state.elements,
111            reference = _state$elements.reference,
112            popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements
113        // anymore
114
115        if (!areValidElements(reference, popper)) {
116          return;
117        } // Store the reference and popper rects to be read by modifiers
118
119
120        state.rects = {
121          reference: (0,_dom_utils_getCompositeRect_js__WEBPACK_IMPORTED_MODULE_4__["default"])(reference, (0,_dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_5__["default"])(popper), state.options.strategy === 'fixed'),
122          popper: (0,_dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_6__["default"])(popper)
123        }; // Modifiers have the ability to reset the current update cycle. The
124        // most common use case for this is the `flip` modifier changing the
125        // placement, which then needs to re-run all the modifiers, because the
126        // logic was previously ran for the previous placement and is therefore
127        // stale/incorrect
128
129        state.reset = false;
130        state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier
131        // is filled with the initial data specified by the modifier. This means
132        // it doesn't persist and is fresh on each update.
133        // To ensure persistent data, use `${name}#persistent`
134
135        state.orderedModifiers.forEach(function (modifier) {
136          return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);
137        });
138
139        for (var index = 0; index < state.orderedModifiers.length; index++) {
140          if (state.reset === true) {
141            state.reset = false;
142            index = -1;
143            continue;
144          }
145
146          var _state$orderedModifie = state.orderedModifiers[index],
147              fn = _state$orderedModifie.fn,
148              _state$orderedModifie2 = _state$orderedModifie.options,
149              _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,
150              name = _state$orderedModifie.name;
151
152          if (typeof fn === 'function') {
153            state = fn({
154              state: state,
155              options: _options,
156              name: name,
157              instance: instance
158            }) || state;
159          }
160        }
161      },
162      // Async and optimistically optimized update – it will not be executed if
163      // not necessary (debounced to run at most once-per-tick)
164      update: (0,_utils_debounce_js__WEBPACK_IMPORTED_MODULE_7__["default"])(function () {
165        return new Promise(function (resolve) {
166          instance.forceUpdate();
167          resolve(state);
168        });
169      }),
170      destroy: function destroy() {
171        cleanupModifierEffects();
172        isDestroyed = true;
173      }
174    };
175
176    if (!areValidElements(reference, popper)) {
177      return instance;
178    }
179
180    instance.setOptions(options).then(function (state) {
181      if (!isDestroyed && options.onFirstUpdate) {
182        options.onFirstUpdate(state);
183      }
184    }); // Modifiers have the ability to execute arbitrary code before the first
185    // update cycle runs. They will be executed in the same order as the update
186    // cycle. This is useful when a modifier adds some persistent data that
187    // other modifiers need to use, but the modifier is run after the dependent
188    // one.
189
190    function runModifierEffects() {
191      state.orderedModifiers.forEach(function (_ref) {
192        var name = _ref.name,
193            _ref$options = _ref.options,
194            options = _ref$options === void 0 ? {} : _ref$options,
195            effect = _ref.effect;
196
197        if (typeof effect === 'function') {
198          var cleanupFn = effect({
199            state: state,
200            name: name,
201            instance: instance,
202            options: options
203          });
204
205          var noopFn = function noopFn() {};
206
207          effectCleanupFns.push(cleanupFn || noopFn);
208        }
209      });
210    }
211
212    function cleanupModifierEffects() {
213      effectCleanupFns.forEach(function (fn) {
214        return fn();
215      });
216      effectCleanupFns = [];
217    }
218
219    return instance;
220  };
221}
222var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules
223
224
225
226/***/ }),
227
vendor: 1,418 bytes, lines 228-265
228/***/ "./node_modules/@popperjs/core/lib/dom-utils/contains.js":
229/*!***************************************************************!*\
230  !*** ./node_modules/@popperjs/core/lib/dom-utils/contains.js ***!
231  \***************************************************************/
232/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
233
234"use strict";
235__webpack_require__.r(__webpack_exports__);
236/* harmony export */ __webpack_require__.d(__webpack_exports__, {
237/* harmony export */   "default": () => (/* binding */ contains)
238/* harmony export */ });
239/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js");
240
241function contains(parent, child) {
242  var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method
243
244  if (parent.contains(child)) {
245    return true;
246  } // then fallback to custom implementation with Shadow DOM support
247  else if (rootNode && (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isShadowRoot)(rootNode)) {
248      var next = child;
249
250      do {
251        if (next && parent.isSameNode(next)) {
252          return true;
253        } // $FlowFixMe[prop-missing]: need a better way to handle this...
254
255
256        next = next.parentNode || next.host;
257      } while (next);
258    } // Give up, the result is false
259
260
261  return false;
262}
263
264/***/ }),
265
vendor: 2,806 bytes, lines 266-324
266/***/ "./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js":
267/*!****************************************************************************!*\
268  !*** ./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js ***!
269  \****************************************************************************/
270/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
271
272"use strict";
273__webpack_require__.r(__webpack_exports__);
274/* harmony export */ __webpack_require__.d(__webpack_exports__, {
275/* harmony export */   "default": () => (/* binding */ getBoundingClientRect)
276/* harmony export */ });
277/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js");
278/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/math.js */ "./node_modules/@popperjs/core/lib/utils/math.js");
279/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js");
280/* harmony import */ var _isLayoutViewport_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./isLayoutViewport.js */ "./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js");
281
282
283
284
285function getBoundingClientRect(element, includeScale, isFixedStrategy) {
286  if (includeScale === void 0) {
287    includeScale = false;
288  }
289
290  if (isFixedStrategy === void 0) {
291    isFixedStrategy = false;
292  }
293
294  var clientRect = element.getBoundingClientRect();
295  var scaleX = 1;
296  var scaleY = 1;
297
298  if (includeScale && (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(element)) {
299    scaleX = element.offsetWidth > 0 ? (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_1__.round)(clientRect.width) / element.offsetWidth || 1 : 1;
300    scaleY = element.offsetHeight > 0 ? (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_1__.round)(clientRect.height) / element.offsetHeight || 1 : 1;
301  }
302
303  var _ref = (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isElement)(element) ? (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_2__["default"])(element) : window,
304      visualViewport = _ref.visualViewport;
305
306  var addVisualOffsets = !(0,_isLayoutViewport_js__WEBPACK_IMPORTED_MODULE_3__["default"])() && isFixedStrategy;
307  var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;
308  var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;
309  var width = clientRect.width / scaleX;
310  var height = clientRect.height / scaleY;
311  return {
312    width: width,
313    height: height,
314    top: y,
315    right: x + width,
316    bottom: y + height,
317    left: x,
318    x: x,
319    y: y
320  };
321}
322
323/***/ }),
324
vendor: 6,916 bytes, lines 325-422
325/***/ "./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js":
326/*!**********************************************************************!*\
327  !*** ./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js ***!
328  \**********************************************************************/
329/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
330
331"use strict";
332__webpack_require__.r(__webpack_exports__);
333/* harmony export */ __webpack_require__.d(__webpack_exports__, {
334/* harmony export */   "default": () => (/* binding */ getClippingRect)
335/* harmony export */ });
336/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js");
337/* harmony import */ var _getViewportRect_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getViewportRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js");
338/* harmony import */ var _getDocumentRect_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./getDocumentRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js");
339/* harmony import */ var _listScrollParents_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./listScrollParents.js */ "./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js");
340/* harmony import */ var _getOffsetParent_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./getOffsetParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js");
341/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js");
342/* harmony import */ var _getComputedStyle_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./getComputedStyle.js */ "./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js");
343/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js");
344/* harmony import */ var _getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getBoundingClientRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js");
345/* harmony import */ var _getParentNode_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./getParentNode.js */ "./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js");
346/* harmony import */ var _contains_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./contains.js */ "./node_modules/@popperjs/core/lib/dom-utils/contains.js");
347/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js");
348/* harmony import */ var _utils_rectToClientRect_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/rectToClientRect.js */ "./node_modules/@popperjs/core/lib/utils/rectToClientRect.js");
349/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../utils/math.js */ "./node_modules/@popperjs/core/lib/utils/math.js");
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365function getInnerBoundingClientRect(element, strategy) {
366  var rect = (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element, false, strategy === 'fixed');
367  rect.top = rect.top + element.clientTop;
368  rect.left = rect.left + element.clientLeft;
369  rect.bottom = rect.top + element.clientHeight;
370  rect.right = rect.left + element.clientWidth;
371  rect.width = element.clientWidth;
372  rect.height = element.clientHeight;
373  rect.x = rect.left;
374  rect.y = rect.top;
375  return rect;
376}
377
378function getClientRectFromMixedType(element, clippingParent, strategy) {
379  return clippingParent === _enums_js__WEBPACK_IMPORTED_MODULE_1__.viewport ? (0,_utils_rectToClientRect_js__WEBPACK_IMPORTED_MODULE_2__["default"])((0,_getViewportRect_js__WEBPACK_IMPORTED_MODULE_3__["default"])(element, strategy)) : (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__.isElement)(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : (0,_utils_rectToClientRect_js__WEBPACK_IMPORTED_MODULE_2__["default"])((0,_getDocumentRect_js__WEBPACK_IMPORTED_MODULE_5__["default"])((0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_6__["default"])(element)));
380} // A "clipping parent" is an overflowable container with the characteristic of
381// clipping (or hiding) overflowing elements with a position different from
382// `initial`
383
384
385function getClippingParents(element) {
386  var clippingParents = (0,_listScrollParents_js__WEBPACK_IMPORTED_MODULE_7__["default"])((0,_getParentNode_js__WEBPACK_IMPORTED_MODULE_8__["default"])(element));
387  var canEscapeClipping = ['absolute', 'fixed'].indexOf((0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_9__["default"])(element).position) >= 0;
388  var clipperElement = canEscapeClipping && (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__.isHTMLElement)(element) ? (0,_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_10__["default"])(element) : element;
389
390  if (!(0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__.isElement)(clipperElement)) {
391    return [];
392  } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414
393
394
395  return clippingParents.filter(function (clippingParent) {
396    return (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__.isElement)(clippingParent) && (0,_contains_js__WEBPACK_IMPORTED_MODULE_11__["default"])(clippingParent, clipperElement) && (0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_12__["default"])(clippingParent) !== 'body';
397  });
398} // Gets the maximum area that the element is visible in due to any number of
399// clipping parents
400
401
402function getClippingRect(element, boundary, rootBoundary, strategy) {
403  var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);
404  var clippingParents = [].concat(mainClippingParents, [rootBoundary]);
405  var firstClippingParent = clippingParents[0];
406  var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {
407    var rect = getClientRectFromMixedType(element, clippingParent, strategy);
408    accRect.top = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_13__.max)(rect.top, accRect.top);
409    accRect.right = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_13__.min)(rect.right, accRect.right);
410    accRect.bottom = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_13__.min)(rect.bottom, accRect.bottom);
411    accRect.left = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_13__.max)(rect.left, accRect.left);
412    return accRect;
413  }, getClientRectFromMixedType(element, firstClippingParent, strategy));
414  clippingRect.width = clippingRect.right - clippingRect.left;
415  clippingRect.height = clippingRect.bottom - clippingRect.top;
416  clippingRect.x = clippingRect.left;
417  clippingRect.y = clippingRect.top;
418  return clippingRect;
419}
420
421/***/ }),
422
vendor: 4,352 bytes, lines 423-502
423/***/ "./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js":
424/*!***********************************************************************!*\
425  !*** ./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js ***!
426  \***********************************************************************/
427/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
428
429"use strict";
430__webpack_require__.r(__webpack_exports__);
431/* harmony export */ __webpack_require__.d(__webpack_exports__, {
432/* harmony export */   "default": () => (/* binding */ getCompositeRect)
433/* harmony export */ });
434/* harmony import */ var _getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getBoundingClientRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js");
435/* harmony import */ var _getNodeScroll_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./getNodeScroll.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js");
436/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js");
437/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js");
438/* harmony import */ var _getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./getWindowScrollBarX.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js");
439/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js");
440/* harmony import */ var _isScrollParent_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./isScrollParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js");
441/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/math.js */ "./node_modules/@popperjs/core/lib/utils/math.js");
442
443
444
445
446
447
448
449
450
451function isElementScaled(element) {
452  var rect = element.getBoundingClientRect();
453  var scaleX = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_0__.round)(rect.width) / element.offsetWidth || 1;
454  var scaleY = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_0__.round)(rect.height) / element.offsetHeight || 1;
455  return scaleX !== 1 || scaleY !== 1;
456} // Returns the composite rect of an element relative to its offsetParent.
457// Composite means it takes into account transforms as well as layout.
458
459
460function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
461  if (isFixed === void 0) {
462    isFixed = false;
463  }
464
465  var isOffsetParentAnElement = (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isHTMLElement)(offsetParent);
466  var offsetParentIsScaled = (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isHTMLElement)(offsetParent) && isElementScaled(offsetParent);
467  var documentElement = (0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_2__["default"])(offsetParent);
468  var rect = (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_3__["default"])(elementOrVirtualElement, offsetParentIsScaled, isFixed);
469  var scroll = {
470    scrollLeft: 0,
471    scrollTop: 0
472  };
473  var offsets = {
474    x: 0,
475    y: 0
476  };
477
478  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
479    if ((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_4__["default"])(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078
480    (0,_isScrollParent_js__WEBPACK_IMPORTED_MODULE_5__["default"])(documentElement)) {
481      scroll = (0,_getNodeScroll_js__WEBPACK_IMPORTED_MODULE_6__["default"])(offsetParent);
482    }
483
484    if ((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isHTMLElement)(offsetParent)) {
485      offsets = (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_3__["default"])(offsetParent, true);
486      offsets.x += offsetParent.clientLeft;
487      offsets.y += offsetParent.clientTop;
488    } else if (documentElement) {
489      offsets.x = (0,_getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_7__["default"])(documentElement);
490    }
491  }
492
493  return {
494    x: rect.left + scroll.scrollLeft - offsets.x,
495    y: rect.top + scroll.scrollTop - offsets.y,
496    width: rect.width,
497    height: rect.height
498  };
499}
500
501/***/ }),
502
vendor: 934 bytes, lines 503-521
503/***/ "./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js":
504/*!***********************************************************************!*\
505  !*** ./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js ***!
506  \***********************************************************************/
507/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
508
509"use strict";
510__webpack_require__.r(__webpack_exports__);
511/* harmony export */ __webpack_require__.d(__webpack_exports__, {
512/* harmony export */   "default": () => (/* binding */ getComputedStyle)
513/* harmony export */ });
514/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js");
515
516function getComputedStyle(element) {
517  return (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element).getComputedStyle(element);
518}
519
520/***/ }),
521
vendor: 1,105 bytes, lines 522-542
522/***/ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js":
523/*!*************************************************************************!*\
524  !*** ./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js ***!
525  \*************************************************************************/
526/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
527
528"use strict";
529__webpack_require__.r(__webpack_exports__);
530/* harmony export */ __webpack_require__.d(__webpack_exports__, {
531/* harmony export */   "default": () => (/* binding */ getDocumentElement)
532/* harmony export */ });
533/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js");
534
535function getDocumentElement(element) {
536  // $FlowFixMe[incompatible-return]: assume body is always available
537  return (((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isElement)(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]
538  element.document) || window.document).documentElement;
539}
540
541/***/ }),
542
vendor: 2,858 bytes, lines 543-590
543/***/ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js":
544/*!**********************************************************************!*\
545  !*** ./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js ***!
546  \**********************************************************************/
547/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
548
549"use strict";
550__webpack_require__.r(__webpack_exports__);
551/* harmony export */ __webpack_require__.d(__webpack_exports__, {
552/* harmony export */   "default": () => (/* binding */ getDocumentRect)
553/* harmony export */ });
554/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js");
555/* harmony import */ var _getComputedStyle_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./getComputedStyle.js */ "./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js");
556/* harmony import */ var _getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getWindowScrollBarX.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js");
557/* harmony import */ var _getWindowScroll_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getWindowScroll.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js");
558/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/math.js */ "./node_modules/@popperjs/core/lib/utils/math.js");
559
560
561
562
563 // Gets the entire size of the scrollable document area, even extending outside
564// of the `<html>` and `<body>` rect bounds if horizontally scrollable
565
566function getDocumentRect(element) {
567  var _element$ownerDocumen;
568
569  var html = (0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element);
570  var winScroll = (0,_getWindowScroll_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element);
571  var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;
572  var width = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_2__.max)(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);
573  var height = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_2__.max)(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);
574  var x = -winScroll.scrollLeft + (0,_getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_3__["default"])(element);
575  var y = -winScroll.scrollTop;
576
577  if ((0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_4__["default"])(body || html).direction === 'rtl') {
578    x += (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_2__.max)(html.clientWidth, body ? body.clientWidth : 0) - width;
579  }
580
581  return {
582    width: width,
583    height: height,
584    x: x,
585    y: y
586  };
587}
588
589/***/ }),
590
vendor: 766 bytes, lines 591-610
591/***/ "./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js":
592/*!***************************************************************************!*\
593  !*** ./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js ***!
594  \***************************************************************************/
595/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
596
597"use strict";
598__webpack_require__.r(__webpack_exports__);
599/* harmony export */ __webpack_require__.d(__webpack_exports__, {
600/* harmony export */   "default": () => (/* binding */ getHTMLElementScroll)
601/* harmony export */ });
602function getHTMLElementScroll(element) {
603  return {
604    scrollLeft: element.scrollLeft,
605    scrollTop: element.scrollTop
606  };
607}
608
609/***/ }),
610
vendor: 1,550 bytes, lines 611-650
611/***/ "./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js":
612/*!********************************************************************!*\
613  !*** ./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js ***!
614  \********************************************************************/
615/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
616
617"use strict";
618__webpack_require__.r(__webpack_exports__);
619/* harmony export */ __webpack_require__.d(__webpack_exports__, {
620/* harmony export */   "default": () => (/* binding */ getLayoutRect)
621/* harmony export */ });
622/* harmony import */ var _getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getBoundingClientRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js");
623 // Returns the layout rect of an element relative to its offsetParent. Layout
624// means it doesn't take into account transforms.
625
626function getLayoutRect(element) {
627  var clientRect = (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element); // Use the clientRect sizes if it's not been transformed.
628  // Fixes https://github.com/popperjs/popper-core/issues/1223
629
630  var width = element.offsetWidth;
631  var height = element.offsetHeight;
632
633  if (Math.abs(clientRect.width - width) <= 1) {
634    width = clientRect.width;
635  }
636
637  if (Math.abs(clientRect.height - height) <= 1) {
638    height = clientRect.height;
639  }
640
641  return {
642    x: element.offsetLeft,
643    y: element.offsetTop,
644    width: width,
645    height: height
646  };
647}
648
649/***/ }),
650
vendor: 693 bytes, lines 651-667
651/***/ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js":
652/*!******************************************************************!*\
653  !*** ./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js ***!
654  \******************************************************************/
655/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
656
657"use strict";
658__webpack_require__.r(__webpack_exports__);
659/* harmony export */ __webpack_require__.d(__webpack_exports__, {
660/* harmony export */   "default": () => (/* binding */ getNodeName)
661/* harmony export */ });
662function getNodeName(element) {
663  return element ? (element.nodeName || '').toLowerCase() : null;
664}
665
666/***/ }),
667
vendor: 1,724 bytes, lines 668-696
668/***/ "./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js":
669/*!********************************************************************!*\
670  !*** ./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js ***!
671  \********************************************************************/
672/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
673
674"use strict";
675__webpack_require__.r(__webpack_exports__);
676/* harmony export */ __webpack_require__.d(__webpack_exports__, {
677/* harmony export */   "default": () => (/* binding */ getNodeScroll)
678/* harmony export */ });
679/* harmony import */ var _getWindowScroll_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getWindowScroll.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js");
680/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js");
681/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js");
682/* harmony import */ var _getHTMLElementScroll_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getHTMLElementScroll.js */ "./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js");
683
684
685
686
687function getNodeScroll(node) {
688  if (node === (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(node) || !(0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isHTMLElement)(node)) {
689    return (0,_getWindowScroll_js__WEBPACK_IMPORTED_MODULE_2__["default"])(node);
690  } else {
691    return (0,_getHTMLElementScroll_js__WEBPACK_IMPORTED_MODULE_3__["default"])(node);
692  }
693}
694
695/***/ }),
696
vendor: 4,972 bytes, lines 697-786
697/***/ "./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js":
698/*!**********************************************************************!*\
699  !*** ./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js ***!
700  \**********************************************************************/
701/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
702
703"use strict";
704__webpack_require__.r(__webpack_exports__);
705/* harmony export */ __webpack_require__.d(__webpack_exports__, {
706/* harmony export */   "default": () => (/* binding */ getOffsetParent)
707/* harmony export */ });
708/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js");
709/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js");
710/* harmony import */ var _getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getComputedStyle.js */ "./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js");
711/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js");
712/* harmony import */ var _isTableElement_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./isTableElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js");
713/* harmony import */ var _getParentNode_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getParentNode.js */ "./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js");
714/* harmony import */ var _utils_userAgent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/userAgent.js */ "./node_modules/@popperjs/core/lib/utils/userAgent.js");
715
716
717
718
719
720
721
722
723function getTrueOffsetParent(element) {
724  if (!(0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(element) || // https://github.com/popperjs/popper-core/issues/837
725  (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element).position === 'fixed') {
726    return null;
727  }
728
729  return element.offsetParent;
730} // `.offsetParent` reports `null` for fixed elements, while absolute elements
731// return the containing block
732
733
734function getContainingBlock(element) {
735  var isFirefox = /firefox/i.test((0,_utils_userAgent_js__WEBPACK_IMPORTED_MODULE_2__["default"])());
736  var isIE = /Trident/i.test((0,_utils_userAgent_js__WEBPACK_IMPORTED_MODULE_2__["default"])());
737
738  if (isIE && (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(element)) {
739    // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport
740    var elementCss = (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element);
741
742    if (elementCss.position === 'fixed') {
743      return null;
744    }
745  }
746
747  var currentNode = (0,_getParentNode_js__WEBPACK_IMPORTED_MODULE_3__["default"])(element);
748
749  if ((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isShadowRoot)(currentNode)) {
750    currentNode = currentNode.host;
751  }
752
753  while ((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(currentNode) && ['html', 'body'].indexOf((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_4__["default"])(currentNode)) < 0) {
754    var css = (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__["default"])(currentNode); // This is non-exhaustive but covers the most common CSS properties that
755    // create a containing block.
756    // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block
757
758    if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {
759      return currentNode;
760    } else {
761      currentNode = currentNode.parentNode;
762    }
763  }
764
765  return null;
766} // Gets the closest ancestor positioned element. Handles some edge cases,
767// such as table ancestors and cross browser bugs.
768
769
770function getOffsetParent(element) {
771  var window = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_5__["default"])(element);
772  var offsetParent = getTrueOffsetParent(element);
773
774  while (offsetParent && (0,_isTableElement_js__WEBPACK_IMPORTED_MODULE_6__["default"])(offsetParent) && (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__["default"])(offsetParent).position === 'static') {
775    offsetParent = getTrueOffsetParent(offsetParent);
776  }
777
778  if (offsetParent && ((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_4__["default"])(offsetParent) === 'html' || (0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_4__["default"])(offsetParent) === 'body' && (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__["default"])(offsetParent).position === 'static')) {
779    return window;
780  }
781
782  return offsetParent || getContainingBlock(element) || window;
783}
784
785/***/ }),
786
vendor: 1,900 bytes, lines 787-822
787/***/ "./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js":
788/*!********************************************************************!*\
789  !*** ./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js ***!
790  \********************************************************************/
791/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
792
793"use strict";
794__webpack_require__.r(__webpack_exports__);
795/* harmony export */ __webpack_require__.d(__webpack_exports__, {
796/* harmony export */   "default": () => (/* binding */ getParentNode)
797/* harmony export */ });
798/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js");
799/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js");
800/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js");
801
802
803
804function getParentNode(element) {
805  if ((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element) === 'html') {
806    return element;
807  }
808
809  return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle
810    // $FlowFixMe[incompatible-return]
811    // $FlowFixMe[prop-missing]
812    element.assignedSlot || // step into the shadow DOM of the parent of a slotted node
813    element.parentNode || ( // DOM Element detected
814    (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isShadowRoot)(element) ? element.host : null) || // ShadowRoot detected
815    // $FlowFixMe[incompatible-call]: HTMLElement is a Node
816    (0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_2__["default"])(element) // fallback
817
818  );
819}
820
821/***/ }),
822
vendor: 1,878 bytes, lines 823-856
823/***/ "./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js":
824/*!**********************************************************************!*\
825  !*** ./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js ***!
826  \**********************************************************************/
827/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
828
829"use strict";
830__webpack_require__.r(__webpack_exports__);
831/* harmony export */ __webpack_require__.d(__webpack_exports__, {
832/* harmony export */   "default": () => (/* binding */ getScrollParent)
833/* harmony export */ });
834/* harmony import */ var _getParentNode_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getParentNode.js */ "./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js");
835/* harmony import */ var _isScrollParent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./isScrollParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js");
836/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js");
837/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js");
838
839
840
841
842function getScrollParent(node) {
843  if (['html', 'body', '#document'].indexOf((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_0__["default"])(node)) >= 0) {
844    // $FlowFixMe[incompatible-return]: assume body is always available
845    return node.ownerDocument.body;
846  }
847
848  if ((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isHTMLElement)(node) && (0,_isScrollParent_js__WEBPACK_IMPORTED_MODULE_2__["default"])(node)) {
849    return node;
850  }
851
852  return getScrollParent((0,_getParentNode_js__WEBPACK_IMPORTED_MODULE_3__["default"])(node));
853}
854
855/***/ }),
856
vendor: 2,234 bytes, lines 857-905
857/***/ "./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js":
858/*!**********************************************************************!*\
859  !*** ./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js ***!
860  \**********************************************************************/
861/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
862
863"use strict";
864__webpack_require__.r(__webpack_exports__);
865/* harmony export */ __webpack_require__.d(__webpack_exports__, {
866/* harmony export */   "default": () => (/* binding */ getViewportRect)
867/* harmony export */ });
868/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js");
869/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js");
870/* harmony import */ var _getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getWindowScrollBarX.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js");
871/* harmony import */ var _isLayoutViewport_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./isLayoutViewport.js */ "./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js");
872
873
874
875
876function getViewportRect(element, strategy) {
877  var win = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element);
878  var html = (0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element);
879  var visualViewport = win.visualViewport;
880  var width = html.clientWidth;
881  var height = html.clientHeight;
882  var x = 0;
883  var y = 0;
884
885  if (visualViewport) {
886    width = visualViewport.width;
887    height = visualViewport.height;
888    var layoutViewport = (0,_isLayoutViewport_js__WEBPACK_IMPORTED_MODULE_2__["default"])();
889
890    if (layoutViewport || !layoutViewport && strategy === 'fixed') {
891      x = visualViewport.offsetLeft;
892      y = visualViewport.offsetTop;
893    }
894  }
895
896  return {
897    width: width,
898    height: height,
899    x: x + (0,_getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_3__["default"])(element),
900    y: y
901  };
902}
903
904/***/ }),
905
vendor: 842 bytes, lines 906-931
906/***/ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js":
907/*!****************************************************************!*\
908  !*** ./node_modules/@popperjs/core/lib/dom-utils/getWindow.js ***!
909  \****************************************************************/
910/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
911
912"use strict";
913__webpack_require__.r(__webpack_exports__);
914/* harmony export */ __webpack_require__.d(__webpack_exports__, {
915/* harmony export */   "default": () => (/* binding */ getWindow)
916/* harmony export */ });
917function getWindow(node) {
918  if (node == null) {
919    return window;
920  }
921
922  if (node.toString() !== '[object Window]') {
923    var ownerDocument = node.ownerDocument;
924    return ownerDocument ? ownerDocument.defaultView || window : window;
925  }
926
927  return node;
928}
929
930/***/ }),
931
vendor: 1,039 bytes, lines 932-956
932/***/ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js":
933/*!**********************************************************************!*\
934  !*** ./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js ***!
935  \**********************************************************************/
936/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
937
938"use strict";
939__webpack_require__.r(__webpack_exports__);
940/* harmony export */ __webpack_require__.d(__webpack_exports__, {
941/* harmony export */   "default": () => (/* binding */ getWindowScroll)
942/* harmony export */ });
943/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js");
944
945function getWindowScroll(node) {
946  var win = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(node);
947  var scrollLeft = win.pageXOffset;
948  var scrollTop = win.pageYOffset;
949  return {
950    scrollLeft: scrollLeft,
951    scrollTop: scrollTop
952  };
953}
954
955/***/ }),
956
vendor: 1,913 bytes, lines 957-986
957/***/ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js":
958/*!**************************************************************************!*\
959  !*** ./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js ***!
960  \**************************************************************************/
961/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
962
963"use strict";
964__webpack_require__.r(__webpack_exports__);
965/* harmony export */ __webpack_require__.d(__webpack_exports__, {
966/* harmony export */   "default": () => (/* binding */ getWindowScrollBarX)
967/* harmony export */ });
968/* harmony import */ var _getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getBoundingClientRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js");
969/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js");
970/* harmony import */ var _getWindowScroll_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getWindowScroll.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js");
971
972
973
974function getWindowScrollBarX(element) {
975  // If <html> has a CSS width greater than the viewport, then this will be
976  // incorrect for RTL.
977  // Popper 1 is broken in this case and never had a bug report so let's assume
978  // it's not an issue. I don't think anyone ever specifies width on <html>
979  // anyway.
980  // Browsers where the left scrollbar doesn't cause an issue report `0` for
981  // this (e.g. Edge 2019, IE11, Safari)
982  return (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__["default"])((0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element)).left + (0,_getWindowScroll_js__WEBPACK_IMPORTED_MODULE_2__["default"])(element).scrollLeft;
983}
984
985/***/ }),
986
vendor: 1,585 bytes, lines 987-1026
987/***/ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js":
988/*!*****************************************************************!*\
989  !*** ./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js ***!
990  \*****************************************************************/
991/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
992
993"use strict";
994__webpack_require__.r(__webpack_exports__);
995/* harmony export */ __webpack_require__.d(__webpack_exports__, {
996/* harmony export */   isElement: () => (/* binding */ isElement),
997/* harmony export */   isHTMLElement: () => (/* binding */ isHTMLElement),
998/* harmony export */   isShadowRoot: () => (/* binding */ isShadowRoot)
999/* harmony export */ });
1000/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js");
1001
1002
1003function isElement(node) {
1004  var OwnElement = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(node).Element;
1005  return node instanceof OwnElement || node instanceof Element;
1006}
1007
1008function isHTMLElement(node) {
1009  var OwnElement = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(node).HTMLElement;
1010  return node instanceof OwnElement || node instanceof HTMLElement;
1011}
1012
1013function isShadowRoot(node) {
1014  // IE 11 has no ShadowRoot
1015  if (typeof ShadowRoot === 'undefined') {
1016    return false;
1017  }
1018
1019  var OwnElement = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(node).ShadowRoot;
1020  return node instanceof OwnElement || node instanceof ShadowRoot;
1021}
1022
1023
1024
1025/***/ }),
1026
vendor: 949 bytes, lines 1027-1045
1027/***/ "./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js":
1028/*!***********************************************************************!*\
1029  !*** ./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js ***!
1030  \***********************************************************************/
1031/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1032
1033"use strict";
1034__webpack_require__.r(__webpack_exports__);
1035/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1036/* harmony export */   "default": () => (/* binding */ isLayoutViewport)
1037/* harmony export */ });
1038/* harmony import */ var _utils_userAgent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/userAgent.js */ "./node_modules/@popperjs/core/lib/utils/userAgent.js");
1039
1040function isLayoutViewport() {
1041  return !/^((?!chrome|android).)*safari/i.test((0,_utils_userAgent_js__WEBPACK_IMPORTED_MODULE_0__["default"])());
1042}
1043
1044/***/ }),
1045
vendor: 1,223 bytes, lines 1046-1070
1046/***/ "./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js":
1047/*!*********************************************************************!*\
1048  !*** ./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js ***!
1049  \*********************************************************************/
1050/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1051
1052"use strict";
1053__webpack_require__.r(__webpack_exports__);
1054/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1055/* harmony export */   "default": () => (/* binding */ isScrollParent)
1056/* harmony export */ });
1057/* harmony import */ var _getComputedStyle_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getComputedStyle.js */ "./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js");
1058
1059function isScrollParent(element) {
1060  // Firefox wants us to check `-x` and `-y` variations as well
1061  var _getComputedStyle = (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element),
1062      overflow = _getComputedStyle.overflow,
1063      overflowX = _getComputedStyle.overflowX,
1064      overflowY = _getComputedStyle.overflowY;
1065
1066  return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);
1067}
1068
1069/***/ }),
1070
vendor: 940 bytes, lines 1071-1089
1071/***/ "./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js":
1072/*!*********************************************************************!*\
1073  !*** ./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js ***!
1074  \*********************************************************************/
1075/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1076
1077"use strict";
1078__webpack_require__.r(__webpack_exports__);
1079/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1080/* harmony export */   "default": () => (/* binding */ isTableElement)
1081/* harmony export */ });
1082/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js");
1083
1084function isTableElement(element) {
1085  return ['table', 'td', 'th'].indexOf((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element)) >= 0;
1086}
1087
1088/***/ }),
1089
vendor: 2,529 bytes, lines 1090-1133
1090/***/ "./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js":
1091/*!************************************************************************!*\
1092  !*** ./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js ***!
1093  \************************************************************************/
1094/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1095
1096"use strict";
1097__webpack_require__.r(__webpack_exports__);
1098/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1099/* harmony export */   "default": () => (/* binding */ listScrollParents)
1100/* harmony export */ });
1101/* harmony import */ var _getScrollParent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getScrollParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js");
1102/* harmony import */ var _getParentNode_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getParentNode.js */ "./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js");
1103/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js");
1104/* harmony import */ var _isScrollParent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./isScrollParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js");
1105
1106
1107
1108
1109/*
1110given a DOM element, return the list of all scroll parents, up the list of ancesors
1111until we get to the top window object. This list is what we attach scroll listeners
1112to, because if any of these parent elements scroll, we'll need to re-calculate the
1113reference element's position.
1114*/
1115
1116function listScrollParents(element, list) {
1117  var _element$ownerDocumen;
1118
1119  if (list === void 0) {
1120    list = [];
1121  }
1122
1123  var scrollParent = (0,_getScrollParent_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element);
1124  var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);
1125  var win = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_1__["default"])(scrollParent);
1126  var target = isBody ? [win].concat(win.visualViewport || [], (0,_isScrollParent_js__WEBPACK_IMPORTED_MODULE_2__["default"])(scrollParent) ? scrollParent : []) : scrollParent;
1127  var updatedList = list.concat(target);
1128  return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here
1129  updatedList.concat(listScrollParents((0,_getParentNode_js__WEBPACK_IMPORTED_MODULE_3__["default"])(target)));
1130}
1131
1132/***/ }),
1133
vendor: 3,198 bytes, lines 1134-1201
1134/***/ "./node_modules/@popperjs/core/lib/enums.js":
1135/*!**************************************************!*\
1136  !*** ./node_modules/@popperjs/core/lib/enums.js ***!
1137  \**************************************************/
1138/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1139
1140"use strict";
1141__webpack_require__.r(__webpack_exports__);
1142/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1143/* harmony export */   afterMain: () => (/* binding */ afterMain),
1144/* harmony export */   afterRead: () => (/* binding */ afterRead),
1145/* harmony export */   afterWrite: () => (/* binding */ afterWrite),
1146/* harmony export */   auto: () => (/* binding */ auto),
1147/* harmony export */   basePlacements: () => (/* binding */ basePlacements),
1148/* harmony export */   beforeMain: () => (/* binding */ beforeMain),
1149/* harmony export */   beforeRead: () => (/* binding */ beforeRead),
1150/* harmony export */   beforeWrite: () => (/* binding */ beforeWrite),
1151/* harmony export */   bottom: () => (/* binding */ bottom),
1152/* harmony export */   clippingParents: () => (/* binding */ clippingParents),
1153/* harmony export */   end: () => (/* binding */ end),
1154/* harmony export */   left: () => (/* binding */ left),
1155/* harmony export */   main: () => (/* binding */ main),
1156/* harmony export */   modifierPhases: () => (/* binding */ modifierPhases),
1157/* harmony export */   placements: () => (/* binding */ placements),
1158/* harmony export */   popper: () => (/* binding */ popper),
1159/* harmony export */   read: () => (/* binding */ read),
1160/* harmony export */   reference: () => (/* binding */ reference),
1161/* harmony export */   right: () => (/* binding */ right),
1162/* harmony export */   start: () => (/* binding */ start),
1163/* harmony export */   top: () => (/* binding */ top),
1164/* harmony export */   variationPlacements: () => (/* binding */ variationPlacements),
1165/* harmony export */   viewport: () => (/* binding */ viewport),
1166/* harmony export */   write: () => (/* binding */ write)
1167/* harmony export */ });
1168var top = 'top';
1169var bottom = 'bottom';
1170var right = 'right';
1171var left = 'left';
1172var auto = 'auto';
1173var basePlacements = [top, bottom, right, left];
1174var start = 'start';
1175var end = 'end';
1176var clippingParents = 'clippingParents';
1177var viewport = 'viewport';
1178var popper = 'popper';
1179var reference = 'reference';
1180var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {
1181  return acc.concat([placement + "-" + start, placement + "-" + end]);
1182}, []);
1183var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {
1184  return acc.concat([placement, placement + "-" + start, placement + "-" + end]);
1185}, []); // modifiers that need to read the DOM
1186
1187var beforeRead = 'beforeRead';
1188var read = 'read';
1189var afterRead = 'afterRead'; // pure-logic modifiers
1190
1191var beforeMain = 'beforeMain';
1192var main = 'main';
1193var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)
1194
1195var beforeWrite = 'beforeWrite';
1196var write = 'write';
1197var afterWrite = 'afterWrite';
1198var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];
1199
1200/***/ }),
1201
vendor: 6,022 bytes, lines 1202-1266
1202/***/ "./node_modules/@popperjs/core/lib/index.js":
1203/*!**************************************************!*\
1204  !*** ./node_modules/@popperjs/core/lib/index.js ***!
1205  \**************************************************/
1206/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1207
1208"use strict";
1209__webpack_require__.r(__webpack_exports__);
1210/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1211/* harmony export */   afterMain: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.afterMain),
1212/* harmony export */   afterRead: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.afterRead),
1213/* harmony export */   afterWrite: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.afterWrite),
1214/* harmony export */   applyStyles: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.applyStyles),
1215/* harmony export */   arrow: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.arrow),
1216/* harmony export */   auto: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.auto),
1217/* harmony export */   basePlacements: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.basePlacements),
1218/* harmony export */   beforeMain: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.beforeMain),
1219/* harmony export */   beforeRead: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.beforeRead),
1220/* harmony export */   beforeWrite: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.beforeWrite),
1221/* harmony export */   bottom: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.bottom),
1222/* harmony export */   clippingParents: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.clippingParents),
1223/* harmony export */   computeStyles: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.computeStyles),
1224/* harmony export */   createPopper: () => (/* reexport safe */ _popper_js__WEBPACK_IMPORTED_MODULE_4__.createPopper),
1225/* harmony export */   createPopperBase: () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_2__.createPopper),
1226/* harmony export */   createPopperLite: () => (/* reexport safe */ _popper_lite_js__WEBPACK_IMPORTED_MODULE_5__.createPopper),
1227/* harmony export */   detectOverflow: () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_3__["default"]),
1228/* harmony export */   end: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.end),
1229/* harmony export */   eventListeners: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.eventListeners),
1230/* harmony export */   flip: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.flip),
1231/* harmony export */   hide: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.hide),
1232/* harmony export */   left: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.left),
1233/* harmony export */   main: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.main),
1234/* harmony export */   modifierPhases: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.modifierPhases),
1235/* harmony export */   offset: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.offset),
1236/* harmony export */   placements: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.placements),
1237/* harmony export */   popper: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper),
1238/* harmony export */   popperGenerator: () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_2__.popperGenerator),
1239/* harmony export */   popperOffsets: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.popperOffsets),
1240/* harmony export */   preventOverflow: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.preventOverflow),
1241/* harmony export */   read: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.read),
1242/* harmony export */   reference: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.reference),
1243/* harmony export */   right: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.right),
1244/* harmony export */   start: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.start),
1245/* harmony export */   top: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.top),
1246/* harmony export */   variationPlacements: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.variationPlacements),
1247/* harmony export */   viewport: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.viewport),
1248/* harmony export */   write: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.write)
1249/* harmony export */ });
1250/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enums.js */ "./node_modules/@popperjs/core/lib/enums.js");
1251/* harmony import */ var _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifiers/index.js */ "./node_modules/@popperjs/core/lib/modifiers/index.js");
1252/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./createPopper.js */ "./node_modules/@popperjs/core/lib/createPopper.js");
1253/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./createPopper.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js");
1254/* harmony import */ var _popper_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./popper.js */ "./node_modules/@popperjs/core/lib/popper.js");
1255/* harmony import */ var _popper_lite_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./popper-lite.js */ "./node_modules/@popperjs/core/lib/popper-lite.js");
1256
1257 // eslint-disable-next-line import/no-unused-modules
1258
1259 // eslint-disable-next-line import/no-unused-modules
1260
1261 // eslint-disable-next-line import/no-unused-modules
1262
1263
1264
1265/***/ }),
1266
vendor: 3,689 bytes, lines 1267-1366
1267/***/ "./node_modules/@popperjs/core/lib/modifiers/applyStyles.js":
1268/*!******************************************************************!*\
1269  !*** ./node_modules/@popperjs/core/lib/modifiers/applyStyles.js ***!
1270  \******************************************************************/
1271/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1272
1273"use strict";
1274__webpack_require__.r(__webpack_exports__);
1275/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1276/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1277/* harmony export */ });
1278/* harmony import */ var _dom_utils_getNodeName_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dom-utils/getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js");
1279/* harmony import */ var _dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dom-utils/instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js");
1280
1281 // This modifier takes the styles prepared by the `computeStyles` modifier
1282// and applies them to the HTMLElements such as popper and arrow
1283
1284function applyStyles(_ref) {
1285  var state = _ref.state;
1286  Object.keys(state.elements).forEach(function (name) {
1287    var style = state.styles[name] || {};
1288    var attributes = state.attributes[name] || {};
1289    var element = state.elements[name]; // arrow is optional + virtual elements
1290
1291    if (!(0,_dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(element) || !(0,_dom_utils_getNodeName_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element)) {
1292      return;
1293    } // Flow doesn't support to extend this property, but it's the most
1294    // effective way to apply styles to an HTMLElement
1295    // $FlowFixMe[cannot-write]
1296
1297
1298    Object.assign(element.style, style);
1299    Object.keys(attributes).forEach(function (name) {
1300      var value = attributes[name];
1301
1302      if (value === false) {
1303        element.removeAttribute(name);
1304      } else {
1305        element.setAttribute(name, value === true ? '' : value);
1306      }
1307    });
1308  });
1309}
1310
1311function effect(_ref2) {
1312  var state = _ref2.state;
1313  var initialStyles = {
1314    popper: {
1315      position: state.options.strategy,
1316      left: '0',
1317      top: '0',
1318      margin: '0'
1319    },
1320    arrow: {
1321      position: 'absolute'
1322    },
1323    reference: {}
1324  };
1325  Object.assign(state.elements.popper.style, initialStyles.popper);
1326  state.styles = initialStyles;
1327
1328  if (state.elements.arrow) {
1329    Object.assign(state.elements.arrow.style, initialStyles.arrow);
1330  }
1331
1332  return function () {
1333    Object.keys(state.elements).forEach(function (name) {
1334      var element = state.elements[name];
1335      var attributes = state.attributes[name] || {};
1336      var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them
1337
1338      var style = styleProperties.reduce(function (style, property) {
1339        style[property] = '';
1340        return style;
1341      }, {}); // arrow is optional + virtual elements
1342
1343      if (!(0,_dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(element) || !(0,_dom_utils_getNodeName_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element)) {
1344        return;
1345      }
1346
1347      Object.assign(element.style, style);
1348      Object.keys(attributes).forEach(function (attribute) {
1349        element.removeAttribute(attribute);
1350      });
1351    });
1352  };
1353} // eslint-disable-next-line import/no-unused-modules
1354
1355
1356/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
1357  name: 'applyStyles',
1358  enabled: true,
1359  phase: 'write',
1360  fn: applyStyles,
1361  effect: effect,
1362  requires: ['computeStyles']
1363});
1364
1365/***/ }),
1366
vendor: 5,990 bytes, lines 1367-1479
1367/***/ "./node_modules/@popperjs/core/lib/modifiers/arrow.js":
1368/*!************************************************************!*\
1369  !*** ./node_modules/@popperjs/core/lib/modifiers/arrow.js ***!
1370  \************************************************************/
1371/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1372
1373"use strict";
1374__webpack_require__.r(__webpack_exports__);
1375/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1376/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1377/* harmony export */ });
1378/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js");
1379/* harmony import */ var _dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../dom-utils/getLayoutRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js");
1380/* harmony import */ var _dom_utils_contains_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../dom-utils/contains.js */ "./node_modules/@popperjs/core/lib/dom-utils/contains.js");
1381/* harmony import */ var _dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../dom-utils/getOffsetParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js");
1382/* harmony import */ var _utils_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/getMainAxisFromPlacement.js */ "./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js");
1383/* harmony import */ var _utils_within_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/within.js */ "./node_modules/@popperjs/core/lib/utils/within.js");
1384/* harmony import */ var _utils_mergePaddingObject_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/mergePaddingObject.js */ "./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js");
1385/* harmony import */ var _utils_expandToHashMap_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/expandToHashMap.js */ "./node_modules/@popperjs/core/lib/utils/expandToHashMap.js");
1386/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js");
1387
1388
1389
1390
1391
1392
1393
1394
1395 // eslint-disable-next-line import/no-unused-modules
1396
1397var toPaddingObject = function toPaddingObject(padding, state) {
1398  padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {
1399    placement: state.placement
1400  })) : padding;
1401  return (0,_utils_mergePaddingObject_js__WEBPACK_IMPORTED_MODULE_0__["default"])(typeof padding !== 'number' ? padding : (0,_utils_expandToHashMap_js__WEBPACK_IMPORTED_MODULE_1__["default"])(padding, _enums_js__WEBPACK_IMPORTED_MODULE_2__.basePlacements));
1402};
1403
1404function arrow(_ref) {
1405  var _state$modifiersData$;
1406
1407  var state = _ref.state,
1408      name = _ref.name,
1409      options = _ref.options;
1410  var arrowElement = state.elements.arrow;
1411  var popperOffsets = state.modifiersData.popperOffsets;
1412  var basePlacement = (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_3__["default"])(state.placement);
1413  var axis = (0,_utils_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_4__["default"])(basePlacement);
1414  var isVertical = [_enums_js__WEBPACK_IMPORTED_MODULE_2__.left, _enums_js__WEBPACK_IMPORTED_MODULE_2__.right].indexOf(basePlacement) >= 0;
1415  var len = isVertical ? 'height' : 'width';
1416
1417  if (!arrowElement || !popperOffsets) {
1418    return;
1419  }
1420
1421  var paddingObject = toPaddingObject(options.padding, state);
1422  var arrowRect = (0,_dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_5__["default"])(arrowElement);
1423  var minProp = axis === 'y' ? _enums_js__WEBPACK_IMPORTED_MODULE_2__.top : _enums_js__WEBPACK_IMPORTED_MODULE_2__.left;
1424  var maxProp = axis === 'y' ? _enums_js__WEBPACK_IMPORTED_MODULE_2__.bottom : _enums_js__WEBPACK_IMPORTED_MODULE_2__.right;
1425  var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];
1426  var startDiff = popperOffsets[axis] - state.rects.reference[axis];
1427  var arrowOffsetParent = (0,_dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_6__["default"])(arrowElement);
1428  var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;
1429  var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is
1430  // outside of the popper bounds
1431
1432  var min = paddingObject[minProp];
1433  var max = clientSize - arrowRect[len] - paddingObject[maxProp];
1434  var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;
1435  var offset = (0,_utils_within_js__WEBPACK_IMPORTED_MODULE_7__.within)(min, center, max); // Prevents breaking syntax highlighting...
1436
1437  var axisProp = axis;
1438  state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);
1439}
1440
1441function effect(_ref2) {
1442  var state = _ref2.state,
1443      options = _ref2.options;
1444  var _options$element = options.element,
1445      arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;
1446
1447  if (arrowElement == null) {
1448    return;
1449  } // CSS selector
1450
1451
1452  if (typeof arrowElement === 'string') {
1453    arrowElement = state.elements.popper.querySelector(arrowElement);
1454
1455    if (!arrowElement) {
1456      return;
1457    }
1458  }
1459
1460  if (!(0,_dom_utils_contains_js__WEBPACK_IMPORTED_MODULE_8__["default"])(state.elements.popper, arrowElement)) {
1461    return;
1462  }
1463
1464  state.elements.arrow = arrowElement;
1465} // eslint-disable-next-line import/no-unused-modules
1466
1467
1468/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
1469  name: 'arrow',
1470  enabled: true,
1471  phase: 'main',
1472  fn: arrow,
1473  effect: effect,
1474  requires: ['popperOffsets'],
1475  requiresIfExists: ['preventOverflow']
1476});
1477
1478/***/ }),
1479
vendor: 8,489 bytes, lines 1480-1671
1480/***/ "./node_modules/@popperjs/core/lib/modifiers/computeStyles.js":
1481/*!********************************************************************!*\
1482  !*** ./node_modules/@popperjs/core/lib/modifiers/computeStyles.js ***!
1483  \********************************************************************/
1484/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1485
1486"use strict";
1487__webpack_require__.r(__webpack_exports__);
1488/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1489/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__),
1490/* harmony export */   mapToStyles: () => (/* binding */ mapToStyles)
1491/* harmony export */ });
1492/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js");
1493/* harmony import */ var _dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../dom-utils/getOffsetParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js");
1494/* harmony import */ var _dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../dom-utils/getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js");
1495/* harmony import */ var _dom_utils_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../dom-utils/getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js");
1496/* harmony import */ var _dom_utils_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../dom-utils/getComputedStyle.js */ "./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js");
1497/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js");
1498/* harmony import */ var _utils_getVariation_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/getVariation.js */ "./node_modules/@popperjs/core/lib/utils/getVariation.js");
1499/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/math.js */ "./node_modules/@popperjs/core/lib/utils/math.js");
1500
1501
1502
1503
1504
1505
1506
1507 // eslint-disable-next-line import/no-unused-modules
1508
1509var unsetSides = {
1510  top: 'auto',
1511  right: 'auto',
1512  bottom: 'auto',
1513  left: 'auto'
1514}; // Round the offsets to the nearest suitable subpixel based on the DPR.
1515// Zooming can change the DPR, but it seems to report a value that will
1516// cleanly divide the values into the appropriate subpixels.
1517
1518function roundOffsetsByDPR(_ref, win) {
1519  var x = _ref.x,
1520      y = _ref.y;
1521  var dpr = win.devicePixelRatio || 1;
1522  return {
1523    x: (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_0__.round)(x * dpr) / dpr || 0,
1524    y: (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_0__.round)(y * dpr) / dpr || 0
1525  };
1526}
1527
1528function mapToStyles(_ref2) {
1529  var _Object$assign2;
1530
1531  var popper = _ref2.popper,
1532      popperRect = _ref2.popperRect,
1533      placement = _ref2.placement,
1534      variation = _ref2.variation,
1535      offsets = _ref2.offsets,
1536      position = _ref2.position,
1537      gpuAcceleration = _ref2.gpuAcceleration,
1538      adaptive = _ref2.adaptive,
1539      roundOffsets = _ref2.roundOffsets,
1540      isFixed = _ref2.isFixed;
1541  var _offsets$x = offsets.x,
1542      x = _offsets$x === void 0 ? 0 : _offsets$x,
1543      _offsets$y = offsets.y,
1544      y = _offsets$y === void 0 ? 0 : _offsets$y;
1545
1546  var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({
1547    x: x,
1548    y: y
1549  }) : {
1550    x: x,
1551    y: y
1552  };
1553
1554  x = _ref3.x;
1555  y = _ref3.y;
1556  var hasX = offsets.hasOwnProperty('x');
1557  var hasY = offsets.hasOwnProperty('y');
1558  var sideX = _enums_js__WEBPACK_IMPORTED_MODULE_1__.left;
1559  var sideY = _enums_js__WEBPACK_IMPORTED_MODULE_1__.top;
1560  var win = window;
1561
1562  if (adaptive) {
1563    var offsetParent = (0,_dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_2__["default"])(popper);
1564    var heightProp = 'clientHeight';
1565    var widthProp = 'clientWidth';
1566
1567    if (offsetParent === (0,_dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_3__["default"])(popper)) {
1568      offsetParent = (0,_dom_utils_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_4__["default"])(popper);
1569
1570      if ((0,_dom_utils_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_5__["default"])(offsetParent).position !== 'static' && position === 'absolute') {
1571        heightProp = 'scrollHeight';
1572        widthProp = 'scrollWidth';
1573      }
1574    } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it
1575
1576
1577    offsetParent = offsetParent;
1578
1579    if (placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.top || (placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.left || placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.right) && variation === _enums_js__WEBPACK_IMPORTED_MODULE_1__.end) {
1580      sideY = _enums_js__WEBPACK_IMPORTED_MODULE_1__.bottom;
1581      var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]
1582      offsetParent[heightProp];
1583      y -= offsetY - popperRect.height;
1584      y *= gpuAcceleration ? 1 : -1;
1585    }
1586
1587    if (placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.left || (placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.top || placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.bottom) && variation === _enums_js__WEBPACK_IMPORTED_MODULE_1__.end) {
1588      sideX = _enums_js__WEBPACK_IMPORTED_MODULE_1__.right;
1589      var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]
1590      offsetParent[widthProp];
1591      x -= offsetX - popperRect.width;
1592      x *= gpuAcceleration ? 1 : -1;
1593    }
1594  }
1595
1596  var commonStyles = Object.assign({
1597    position: position
1598  }, adaptive && unsetSides);
1599
1600  var _ref4 = roundOffsets === true ? roundOffsetsByDPR({
1601    x: x,
1602    y: y
1603  }, (0,_dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_3__["default"])(popper)) : {
1604    x: x,
1605    y: y
1606  };
1607
1608  x = _ref4.x;
1609  y = _ref4.y;
1610
1611  if (gpuAcceleration) {
1612    var _Object$assign;
1613
1614    return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign));
1615  }
1616
1617  return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : '', _Object$assign2[sideX] = hasX ? x + "px" : '', _Object$assign2.transform = '', _Object$assign2));
1618}
1619
1620function computeStyles(_ref5) {
1621  var state = _ref5.state,
1622      options = _ref5.options;
1623  var _options$gpuAccelerat = options.gpuAcceleration,
1624      gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,
1625      _options$adaptive = options.adaptive,
1626      adaptive = _options$adaptive === void 0 ? true : _options$adaptive,
1627      _options$roundOffsets = options.roundOffsets,
1628      roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;
1629  var commonStyles = {
1630    placement: (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_6__["default"])(state.placement),
1631    variation: (0,_utils_getVariation_js__WEBPACK_IMPORTED_MODULE_7__["default"])(state.placement),
1632    popper: state.elements.popper,
1633    popperRect: state.rects.popper,
1634    gpuAcceleration: gpuAcceleration,
1635    isFixed: state.options.strategy === 'fixed'
1636  };
1637
1638  if (state.modifiersData.popperOffsets != null) {
1639    state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {
1640      offsets: state.modifiersData.popperOffsets,
1641      position: state.options.strategy,
1642      adaptive: adaptive,
1643      roundOffsets: roundOffsets
1644    })));
1645  }
1646
1647  if (state.modifiersData.arrow != null) {
1648    state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {
1649      offsets: state.modifiersData.arrow,
1650      position: 'absolute',
1651      adaptive: false,
1652      roundOffsets: roundOffsets
1653    })));
1654  }
1655
1656  state.attributes.popper = Object.assign({}, state.attributes.popper, {
1657    'data-popper-placement': state.placement
1658  });
1659} // eslint-disable-next-line import/no-unused-modules
1660
1661
1662/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
1663  name: 'computeStyles',
1664  enabled: true,
1665  phase: 'beforeWrite',
1666  fn: computeStyles,
1667  data: {}
1668});
1669
1670/***/ }),
1671
vendor: 2,190 bytes, lines 1672-1735
1672/***/ "./node_modules/@popperjs/core/lib/modifiers/eventListeners.js":
1673/*!*********************************************************************!*\
1674  !*** ./node_modules/@popperjs/core/lib/modifiers/eventListeners.js ***!
1675  \*********************************************************************/
1676/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1677
1678"use strict";
1679__webpack_require__.r(__webpack_exports__);
1680/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1681/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1682/* harmony export */ });
1683/* harmony import */ var _dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dom-utils/getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js");
1684 // eslint-disable-next-line import/no-unused-modules
1685
1686var passive = {
1687  passive: true
1688};
1689
1690function effect(_ref) {
1691  var state = _ref.state,
1692      instance = _ref.instance,
1693      options = _ref.options;
1694  var _options$scroll = options.scroll,
1695      scroll = _options$scroll === void 0 ? true : _options$scroll,
1696      _options$resize = options.resize,
1697      resize = _options$resize === void 0 ? true : _options$resize;
1698  var window = (0,_dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(state.elements.popper);
1699  var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);
1700
1701  if (scroll) {
1702    scrollParents.forEach(function (scrollParent) {
1703      scrollParent.addEventListener('scroll', instance.update, passive);
1704    });
1705  }
1706
1707  if (resize) {
1708    window.addEventListener('resize', instance.update, passive);
1709  }
1710
1711  return function () {
1712    if (scroll) {
1713      scrollParents.forEach(function (scrollParent) {
1714        scrollParent.removeEventListener('scroll', instance.update, passive);
1715      });
1716    }
1717
1718    if (resize) {
1719      window.removeEventListener('resize', instance.update, passive);
1720    }
1721  };
1722} // eslint-disable-next-line import/no-unused-modules
1723
1724
1725/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
1726  name: 'eventListeners',
1727  enabled: true,
1728  phase: 'write',
1729  fn: function fn() {},
1730  effect: effect,
1731  data: {}
1732});
1733
1734/***/ }),
1735
vendor: 7,538 bytes, lines 1736-1903
1736/***/ "./node_modules/@popperjs/core/lib/modifiers/flip.js":
1737/*!***********************************************************!*\
1738  !*** ./node_modules/@popperjs/core/lib/modifiers/flip.js ***!
1739  \***********************************************************/
1740/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1741
1742"use strict";
1743__webpack_require__.r(__webpack_exports__);
1744/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1745/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1746/* harmony export */ });
1747/* harmony import */ var _utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/getOppositePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js");
1748/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js");
1749/* harmony import */ var _utils_getOppositeVariationPlacement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/getOppositeVariationPlacement.js */ "./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js");
1750/* harmony import */ var _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/detectOverflow.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js");
1751/* harmony import */ var _utils_computeAutoPlacement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/computeAutoPlacement.js */ "./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js");
1752/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js");
1753/* harmony import */ var _utils_getVariation_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/getVariation.js */ "./node_modules/@popperjs/core/lib/utils/getVariation.js");
1754
1755
1756
1757
1758
1759
1760 // eslint-disable-next-line import/no-unused-modules
1761
1762function getExpandedFallbackPlacements(placement) {
1763  if ((0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(placement) === _enums_js__WEBPACK_IMPORTED_MODULE_1__.auto) {
1764    return [];
1765  }
1766
1767  var oppositePlacement = (0,_utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_2__["default"])(placement);
1768  return [(0,_utils_getOppositeVariationPlacement_js__WEBPACK_IMPORTED_MODULE_3__["default"])(placement), oppositePlacement, (0,_utils_getOppositeVariationPlacement_js__WEBPACK_IMPORTED_MODULE_3__["default"])(oppositePlacement)];
1769}
1770
1771function flip(_ref) {
1772  var state = _ref.state,
1773      options = _ref.options,
1774      name = _ref.name;
1775
1776  if (state.modifiersData[name]._skip) {
1777    return;
1778  }
1779
1780  var _options$mainAxis = options.mainAxis,
1781      checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,
1782      _options$altAxis = options.altAxis,
1783      checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,
1784      specifiedFallbackPlacements = options.fallbackPlacements,
1785      padding = options.padding,
1786      boundary = options.boundary,
1787      rootBoundary = options.rootBoundary,
1788      altBoundary = options.altBoundary,
1789      _options$flipVariatio = options.flipVariations,
1790      flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,
1791      allowedAutoPlacements = options.allowedAutoPlacements;
1792  var preferredPlacement = state.options.placement;
1793  var basePlacement = (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(preferredPlacement);
1794  var isBasePlacement = basePlacement === preferredPlacement;
1795  var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [(0,_utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_2__["default"])(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));
1796  var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {
1797    return acc.concat((0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(placement) === _enums_js__WEBPACK_IMPORTED_MODULE_1__.auto ? (0,_utils_computeAutoPlacement_js__WEBPACK_IMPORTED_MODULE_4__["default"])(state, {
1798      placement: placement,
1799      boundary: boundary,
1800      rootBoundary: rootBoundary,
1801      padding: padding,
1802      flipVariations: flipVariations,
1803      allowedAutoPlacements: allowedAutoPlacements
1804    }) : placement);
1805  }, []);
1806  var referenceRect = state.rects.reference;
1807  var popperRect = state.rects.popper;
1808  var checksMap = new Map();
1809  var makeFallbackChecks = true;
1810  var firstFittingPlacement = placements[0];
1811
1812  for (var i = 0; i < placements.length; i++) {
1813    var placement = placements[i];
1814
1815    var _basePlacement = (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(placement);
1816
1817    var isStartVariation = (0,_utils_getVariation_js__WEBPACK_IMPORTED_MODULE_5__["default"])(placement) === _enums_js__WEBPACK_IMPORTED_MODULE_1__.start;
1818    var isVertical = [_enums_js__WEBPACK_IMPORTED_MODULE_1__.top, _enums_js__WEBPACK_IMPORTED_MODULE_1__.bottom].indexOf(_basePlacement) >= 0;
1819    var len = isVertical ? 'width' : 'height';
1820    var overflow = (0,_utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_6__["default"])(state, {
1821      placement: placement,
1822      boundary: boundary,
1823      rootBoundary: rootBoundary,
1824      altBoundary: altBoundary,
1825      padding: padding
1826    });
1827    var mainVariationSide = isVertical ? isStartVariation ? _enums_js__WEBPACK_IMPORTED_MODULE_1__.right : _enums_js__WEBPACK_IMPORTED_MODULE_1__.left : isStartVariation ? _enums_js__WEBPACK_IMPORTED_MODULE_1__.bottom : _enums_js__WEBPACK_IMPORTED_MODULE_1__.top;
1828
1829    if (referenceRect[len] > popperRect[len]) {
1830      mainVariationSide = (0,_utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_2__["default"])(mainVariationSide);
1831    }
1832
1833    var altVariationSide = (0,_utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_2__["default"])(mainVariationSide);
1834    var checks = [];
1835
1836    if (checkMainAxis) {
1837      checks.push(overflow[_basePlacement] <= 0);
1838    }
1839
1840    if (checkAltAxis) {
1841      checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);
1842    }
1843
1844    if (checks.every(function (check) {
1845      return check;
1846    })) {
1847      firstFittingPlacement = placement;
1848      makeFallbackChecks = false;
1849      break;
1850    }
1851
1852    checksMap.set(placement, checks);
1853  }
1854
1855  if (makeFallbackChecks) {
1856    // `2` may be desired in some cases – research later
1857    var numberOfChecks = flipVariations ? 3 : 1;
1858
1859    var _loop = function _loop(_i) {
1860      var fittingPlacement = placements.find(function (placement) {
1861        var checks = checksMap.get(placement);
1862
1863        if (checks) {
1864          return checks.slice(0, _i).every(function (check) {
1865            return check;
1866          });
1867        }
1868      });
1869
1870      if (fittingPlacement) {
1871        firstFittingPlacement = fittingPlacement;
1872        return "break";
1873      }
1874    };
1875
1876    for (var _i = numberOfChecks; _i > 0; _i--) {
1877      var _ret = _loop(_i);
1878
1879      if (_ret === "break") break;
1880    }
1881  }
1882
1883  if (state.placement !== firstFittingPlacement) {
1884    state.modifiersData[name]._skip = true;
1885    state.placement = firstFittingPlacement;
1886    state.reset = true;
1887  }
1888} // eslint-disable-next-line import/no-unused-modules
1889
1890
1891/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
1892  name: 'flip',
1893  enabled: true,
1894  phase: 'main',
1895  fn: flip,
1896  requiresIfExists: ['offset'],
1897  data: {
1898    _skip: false
1899  }
1900});
1901
1902/***/ }),
1903
vendor: 3,074 bytes, lines 1904-1980
1904/***/ "./node_modules/@popperjs/core/lib/modifiers/hide.js":
1905/*!***********************************************************!*\
1906  !*** ./node_modules/@popperjs/core/lib/modifiers/hide.js ***!
1907  \***********************************************************/
1908/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1909
1910"use strict";
1911__webpack_require__.r(__webpack_exports__);
1912/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1913/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1914/* harmony export */ });
1915/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js");
1916/* harmony import */ var _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/detectOverflow.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js");
1917
1918
1919
1920function getSideOffsets(overflow, rect, preventedOffsets) {
1921  if (preventedOffsets === void 0) {
1922    preventedOffsets = {
1923      x: 0,
1924      y: 0
1925    };
1926  }
1927
1928  return {
1929    top: overflow.top - rect.height - preventedOffsets.y,
1930    right: overflow.right - rect.width + preventedOffsets.x,
1931    bottom: overflow.bottom - rect.height + preventedOffsets.y,
1932    left: overflow.left - rect.width - preventedOffsets.x
1933  };
1934}
1935
1936function isAnySideFullyClipped(overflow) {
1937  return [_enums_js__WEBPACK_IMPORTED_MODULE_0__.top, _enums_js__WEBPACK_IMPORTED_MODULE_0__.right, _enums_js__WEBPACK_IMPORTED_MODULE_0__.bottom, _enums_js__WEBPACK_IMPORTED_MODULE_0__.left].some(function (side) {
1938    return overflow[side] >= 0;
1939  });
1940}
1941
1942function hide(_ref) {
1943  var state = _ref.state,
1944      name = _ref.name;
1945  var referenceRect = state.rects.reference;
1946  var popperRect = state.rects.popper;
1947  var preventedOffsets = state.modifiersData.preventOverflow;
1948  var referenceOverflow = (0,_utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_1__["default"])(state, {
1949    elementContext: 'reference'
1950  });
1951  var popperAltOverflow = (0,_utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_1__["default"])(state, {
1952    altBoundary: true
1953  });
1954  var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);
1955  var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);
1956  var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);
1957  var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);
1958  state.modifiersData[name] = {
1959    referenceClippingOffsets: referenceClippingOffsets,
1960    popperEscapeOffsets: popperEscapeOffsets,
1961    isReferenceHidden: isReferenceHidden,
1962    hasPopperEscaped: hasPopperEscaped
1963  };
1964  state.attributes.popper = Object.assign({}, state.attributes.popper, {
1965    'data-popper-reference-hidden': isReferenceHidden,
1966    'data-popper-escaped': hasPopperEscaped
1967  });
1968} // eslint-disable-next-line import/no-unused-modules
1969
1970
1971/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
1972  name: 'hide',
1973  enabled: true,
1974  phase: 'main',
1975  requiresIfExists: ['preventOverflow'],
1976  fn: hide
1977});
1978
1979/***/ }),
1980
vendor: 3,139 bytes, lines 1981-2020
1981/***/ "./node_modules/@popperjs/core/lib/modifiers/index.js":
1982/*!************************************************************!*\
1983  !*** ./node_modules/@popperjs/core/lib/modifiers/index.js ***!
1984  \************************************************************/
1985/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1986
1987"use strict";
1988__webpack_require__.r(__webpack_exports__);
1989/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1990/* harmony export */   applyStyles: () => (/* reexport safe */ _applyStyles_js__WEBPACK_IMPORTED_MODULE_0__["default"]),
1991/* harmony export */   arrow: () => (/* reexport safe */ _arrow_js__WEBPACK_IMPORTED_MODULE_1__["default"]),
1992/* harmony export */   computeStyles: () => (/* reexport safe */ _computeStyles_js__WEBPACK_IMPORTED_MODULE_2__["default"]),
1993/* harmony export */   eventListeners: () => (/* reexport safe */ _eventListeners_js__WEBPACK_IMPORTED_MODULE_3__["default"]),
1994/* harmony export */   flip: () => (/* reexport safe */ _flip_js__WEBPACK_IMPORTED_MODULE_4__["default"]),
1995/* harmony export */   hide: () => (/* reexport safe */ _hide_js__WEBPACK_IMPORTED_MODULE_5__["default"]),
1996/* harmony export */   offset: () => (/* reexport safe */ _offset_js__WEBPACK_IMPORTED_MODULE_6__["default"]),
1997/* harmony export */   popperOffsets: () => (/* reexport safe */ _popperOffsets_js__WEBPACK_IMPORTED_MODULE_7__["default"]),
1998/* harmony export */   preventOverflow: () => (/* reexport safe */ _preventOverflow_js__WEBPACK_IMPORTED_MODULE_8__["default"])
1999/* harmony export */ });
2000/* harmony import */ var _applyStyles_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./applyStyles.js */ "./node_modules/@popperjs/core/lib/modifiers/applyStyles.js");
2001/* harmony import */ var _arrow_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./arrow.js */ "./node_modules/@popperjs/core/lib/modifiers/arrow.js");
2002/* harmony import */ var _computeStyles_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./computeStyles.js */ "./node_modules/@popperjs/core/lib/modifiers/computeStyles.js");
2003/* harmony import */ var _eventListeners_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./eventListeners.js */ "./node_modules/@popperjs/core/lib/modifiers/eventListeners.js");
2004/* harmony import */ var _flip_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./flip.js */ "./node_modules/@popperjs/core/lib/modifiers/flip.js");
2005/* harmony import */ var _hide_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./hide.js */ "./node_modules/@popperjs/core/lib/modifiers/hide.js");
2006/* harmony import */ var _offset_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./offset.js */ "./node_modules/@popperjs/core/lib/modifiers/offset.js");
2007/* harmony import */ var _popperOffsets_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./popperOffsets.js */ "./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js");
2008/* harmony import */ var _preventOverflow_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./preventOverflow.js */ "./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js");
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019/***/ }),
2020
vendor: 2,812 bytes, lines 2021-2091
2021/***/ "./node_modules/@popperjs/core/lib/modifiers/offset.js":
2022/*!*************************************************************!*\
2023  !*** ./node_modules/@popperjs/core/lib/modifiers/offset.js ***!
2024  \*************************************************************/
2025/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2026
2027"use strict";
2028__webpack_require__.r(__webpack_exports__);
2029/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2030/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__),
2031/* harmony export */   distanceAndSkiddingToXY: () => (/* binding */ distanceAndSkiddingToXY)
2032/* harmony export */ });
2033/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js");
2034/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js");
2035
2036 // eslint-disable-next-line import/no-unused-modules
2037
2038function distanceAndSkiddingToXY(placement, rects, offset) {
2039  var basePlacement = (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(placement);
2040  var invertDistance = [_enums_js__WEBPACK_IMPORTED_MODULE_1__.left, _enums_js__WEBPACK_IMPORTED_MODULE_1__.top].indexOf(basePlacement) >= 0 ? -1 : 1;
2041
2042  var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {
2043    placement: placement
2044  })) : offset,
2045      skidding = _ref[0],
2046      distance = _ref[1];
2047
2048  skidding = skidding || 0;
2049  distance = (distance || 0) * invertDistance;
2050  return [_enums_js__WEBPACK_IMPORTED_MODULE_1__.left, _enums_js__WEBPACK_IMPORTED_MODULE_1__.right].indexOf(basePlacement) >= 0 ? {
2051    x: distance,
2052    y: skidding
2053  } : {
2054    x: skidding,
2055    y: distance
2056  };
2057}
2058
2059function offset(_ref2) {
2060  var state = _ref2.state,
2061      options = _ref2.options,
2062      name = _ref2.name;
2063  var _options$offset = options.offset,
2064      offset = _options$offset === void 0 ? [0, 0] : _options$offset;
2065  var data = _enums_js__WEBPACK_IMPORTED_MODULE_1__.placements.reduce(function (acc, placement) {
2066    acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);
2067    return acc;
2068  }, {});
2069  var _data$state$placement = data[state.placement],
2070      x = _data$state$placement.x,
2071      y = _data$state$placement.y;
2072
2073  if (state.modifiersData.popperOffsets != null) {
2074    state.modifiersData.popperOffsets.x += x;
2075    state.modifiersData.popperOffsets.y += y;
2076  }
2077
2078  state.modifiersData[name] = data;
2079} // eslint-disable-next-line import/no-unused-modules
2080
2081
2082/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
2083  name: 'offset',
2084  enabled: true,
2085  phase: 'main',
2086  requires: ['popperOffsets'],
2087  fn: offset
2088});
2089
2090/***/ }),
2091
vendor: 1,555 bytes, lines 2092-2131
2092/***/ "./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js":
2093/*!********************************************************************!*\
2094  !*** ./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js ***!
2095  \********************************************************************/
2096/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2097
2098"use strict";
2099__webpack_require__.r(__webpack_exports__);
2100/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2101/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
2102/* harmony export */ });
2103/* harmony import */ var _utils_computeOffsets_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/computeOffsets.js */ "./node_modules/@popperjs/core/lib/utils/computeOffsets.js");
2104
2105
2106function popperOffsets(_ref) {
2107  var state = _ref.state,
2108      name = _ref.name;
2109  // Offsets are the actual position the popper needs to have to be
2110  // properly positioned near its reference element
2111  // This is the most basic placement, and will be adjusted by
2112  // the modifiers in the next step
2113  state.modifiersData[name] = (0,_utils_computeOffsets_js__WEBPACK_IMPORTED_MODULE_0__["default"])({
2114    reference: state.rects.reference,
2115    element: state.rects.popper,
2116    strategy: 'absolute',
2117    placement: state.placement
2118  });
2119} // eslint-disable-next-line import/no-unused-modules
2120
2121
2122/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
2123  name: 'popperOffsets',
2124  enabled: true,
2125  phase: 'read',
2126  fn: popperOffsets,
2127  data: {}
2128});
2129
2130/***/ }),
2131
vendor: 9,904 bytes, lines 2132-2298
2132/***/ "./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js":
2133/*!**********************************************************************!*\
2134  !*** ./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js ***!
2135  \**********************************************************************/
2136/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2137
2138"use strict";
2139__webpack_require__.r(__webpack_exports__);
2140/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2141/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
2142/* harmony export */ });
2143/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js");
2144/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js");
2145/* harmony import */ var _utils_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/getMainAxisFromPlacement.js */ "./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js");
2146/* harmony import */ var _utils_getAltAxis_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/getAltAxis.js */ "./node_modules/@popperjs/core/lib/utils/getAltAxis.js");
2147/* harmony import */ var _utils_within_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/within.js */ "./node_modules/@popperjs/core/lib/utils/within.js");
2148/* harmony import */ var _dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../dom-utils/getLayoutRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js");
2149/* harmony import */ var _dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../dom-utils/getOffsetParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js");
2150/* harmony import */ var _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/detectOverflow.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js");
2151/* harmony import */ var _utils_getVariation_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/getVariation.js */ "./node_modules/@popperjs/core/lib/utils/getVariation.js");
2152/* harmony import */ var _utils_getFreshSideObject_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/getFreshSideObject.js */ "./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js");
2153/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../utils/math.js */ "./node_modules/@popperjs/core/lib/utils/math.js");
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166function preventOverflow(_ref) {
2167  var state = _ref.state,
2168      options = _ref.options,
2169      name = _ref.name;
2170  var _options$mainAxis = options.mainAxis,
2171      checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,
2172      _options$altAxis = options.altAxis,
2173      checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,
2174      boundary = options.boundary,
2175      rootBoundary = options.rootBoundary,
2176      altBoundary = options.altBoundary,
2177      padding = options.padding,
2178      _options$tether = options.tether,
2179      tether = _options$tether === void 0 ? true : _options$tether,
2180      _options$tetherOffset = options.tetherOffset,
2181      tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;
2182  var overflow = (0,_utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(state, {
2183    boundary: boundary,
2184    rootBoundary: rootBoundary,
2185    padding: padding,
2186    altBoundary: altBoundary
2187  });
2188  var basePlacement = (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_1__["default"])(state.placement);
2189  var variation = (0,_utils_getVariation_js__WEBPACK_IMPORTED_MODULE_2__["default"])(state.placement);
2190  var isBasePlacement = !variation;
2191  var mainAxis = (0,_utils_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_3__["default"])(basePlacement);
2192  var altAxis = (0,_utils_getAltAxis_js__WEBPACK_IMPORTED_MODULE_4__["default"])(mainAxis);
2193  var popperOffsets = state.modifiersData.popperOffsets;
2194  var referenceRect = state.rects.reference;
2195  var popperRect = state.rects.popper;
2196  var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {
2197    placement: state.placement
2198  })) : tetherOffset;
2199  var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {
2200    mainAxis: tetherOffsetValue,
2201    altAxis: tetherOffsetValue
2202  } : Object.assign({
2203    mainAxis: 0,
2204    altAxis: 0
2205  }, tetherOffsetValue);
2206  var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;
2207  var data = {
2208    x: 0,
2209    y: 0
2210  };
2211
2212  if (!popperOffsets) {
2213    return;
2214  }
2215
2216  if (checkMainAxis) {
2217    var _offsetModifierState$;
2218
2219    var mainSide = mainAxis === 'y' ? _enums_js__WEBPACK_IMPORTED_MODULE_5__.top : _enums_js__WEBPACK_IMPORTED_MODULE_5__.left;
2220    var altSide = mainAxis === 'y' ? _enums_js__WEBPACK_IMPORTED_MODULE_5__.bottom : _enums_js__WEBPACK_IMPORTED_MODULE_5__.right;
2221    var len = mainAxis === 'y' ? 'height' : 'width';
2222    var offset = popperOffsets[mainAxis];
2223    var min = offset + overflow[mainSide];
2224    var max = offset - overflow[altSide];
2225    var additive = tether ? -popperRect[len] / 2 : 0;
2226    var minLen = variation === _enums_js__WEBPACK_IMPORTED_MODULE_5__.start ? referenceRect[len] : popperRect[len];
2227    var maxLen = variation === _enums_js__WEBPACK_IMPORTED_MODULE_5__.start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go
2228    // outside the reference bounds
2229
2230    var arrowElement = state.elements.arrow;
2231    var arrowRect = tether && arrowElement ? (0,_dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_6__["default"])(arrowElement) : {
2232      width: 0,
2233      height: 0
2234    };
2235    var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : (0,_utils_getFreshSideObject_js__WEBPACK_IMPORTED_MODULE_7__["default"])();
2236    var arrowPaddingMin = arrowPaddingObject[mainSide];
2237    var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want
2238    // to include its full size in the calculation. If the reference is small
2239    // and near the edge of a boundary, the popper can overflow even if the
2240    // reference is not overflowing as well (e.g. virtual elements with no
2241    // width or height)
2242
2243    var arrowLen = (0,_utils_within_js__WEBPACK_IMPORTED_MODULE_8__.within)(0, referenceRect[len], arrowRect[len]);
2244    var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;
2245    var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;
2246    var arrowOffsetParent = state.elements.arrow && (0,_dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_9__["default"])(state.elements.arrow);
2247    var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;
2248    var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;
2249    var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;
2250    var tetherMax = offset + maxOffset - offsetModifierValue;
2251    var preventedOffset = (0,_utils_within_js__WEBPACK_IMPORTED_MODULE_8__.within)(tether ? (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_10__.min)(min, tetherMin) : min, offset, tether ? (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_10__.max)(max, tetherMax) : max);
2252    popperOffsets[mainAxis] = preventedOffset;
2253    data[mainAxis] = preventedOffset - offset;
2254  }
2255
2256  if (checkAltAxis) {
2257    var _offsetModifierState$2;
2258
2259    var _mainSide = mainAxis === 'x' ? _enums_js__WEBPACK_IMPORTED_MODULE_5__.top : _enums_js__WEBPACK_IMPORTED_MODULE_5__.left;
2260
2261    var _altSide = mainAxis === 'x' ? _enums_js__WEBPACK_IMPORTED_MODULE_5__.bottom : _enums_js__WEBPACK_IMPORTED_MODULE_5__.right;
2262
2263    var _offset = popperOffsets[altAxis];
2264
2265    var _len = altAxis === 'y' ? 'height' : 'width';
2266
2267    var _min = _offset + overflow[_mainSide];
2268
2269    var _max = _offset - overflow[_altSide];
2270
2271    var isOriginSide = [_enums_js__WEBPACK_IMPORTED_MODULE_5__.top, _enums_js__WEBPACK_IMPORTED_MODULE_5__.left].indexOf(basePlacement) !== -1;
2272
2273    var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;
2274
2275    var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;
2276
2277    var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;
2278
2279    var _preventedOffset = tether && isOriginSide ? (0,_utils_within_js__WEBPACK_IMPORTED_MODULE_8__.withinMaxClamp)(_tetherMin, _offset, _tetherMax) : (0,_utils_within_js__WEBPACK_IMPORTED_MODULE_8__.within)(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);
2280
2281    popperOffsets[altAxis] = _preventedOffset;
2282    data[altAxis] = _preventedOffset - _offset;
2283  }
2284
2285  state.modifiersData[name] = data;
2286} // eslint-disable-next-line import/no-unused-modules
2287
2288
2289/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
2290  name: 'preventOverflow',
2291  enabled: true,
2292  phase: 'main',
2293  fn: preventOverflow,
2294  requiresIfExists: ['offset']
2295});
2296
2297/***/ }),
2298
vendor: 2,564 bytes, lines 2299-2332
2299/***/ "./node_modules/@popperjs/core/lib/popper-lite.js":
2300/*!********************************************************!*\
2301  !*** ./node_modules/@popperjs/core/lib/popper-lite.js ***!
2302  \********************************************************/
2303/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2304
2305"use strict";
2306__webpack_require__.r(__webpack_exports__);
2307/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2308/* harmony export */   createPopper: () => (/* binding */ createPopper),
2309/* harmony export */   defaultModifiers: () => (/* binding */ defaultModifiers),
2310/* harmony export */   detectOverflow: () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_5__["default"]),
2311/* harmony export */   popperGenerator: () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_4__.popperGenerator)
2312/* harmony export */ });
2313/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./createPopper.js */ "./node_modules/@popperjs/core/lib/createPopper.js");
2314/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./createPopper.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js");
2315/* harmony import */ var _modifiers_eventListeners_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./modifiers/eventListeners.js */ "./node_modules/@popperjs/core/lib/modifiers/eventListeners.js");
2316/* harmony import */ var _modifiers_popperOffsets_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifiers/popperOffsets.js */ "./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js");
2317/* harmony import */ var _modifiers_computeStyles_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modifiers/computeStyles.js */ "./node_modules/@popperjs/core/lib/modifiers/computeStyles.js");
2318/* harmony import */ var _modifiers_applyStyles_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./modifiers/applyStyles.js */ "./node_modules/@popperjs/core/lib/modifiers/applyStyles.js");
2319
2320
2321
2322
2323
2324var defaultModifiers = [_modifiers_eventListeners_js__WEBPACK_IMPORTED_MODULE_0__["default"], _modifiers_popperOffsets_js__WEBPACK_IMPORTED_MODULE_1__["default"], _modifiers_computeStyles_js__WEBPACK_IMPORTED_MODULE_2__["default"], _modifiers_applyStyles_js__WEBPACK_IMPORTED_MODULE_3__["default"]];
2325var createPopper = /*#__PURE__*/(0,_createPopper_js__WEBPACK_IMPORTED_MODULE_4__.popperGenerator)({
2326  defaultModifiers: defaultModifiers
2327}); // eslint-disable-next-line import/no-unused-modules
2328
2329
2330
2331/***/ }),
2332
vendor: 5,503 bytes, lines 2333-2392
2333/***/ "./node_modules/@popperjs/core/lib/popper.js":
2334/*!***************************************************!*\
2335  !*** ./node_modules/@popperjs/core/lib/popper.js ***!
2336  \***************************************************/
2337/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2338
2339"use strict";
2340__webpack_require__.r(__webpack_exports__);
2341/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2342/* harmony export */   applyStyles: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.applyStyles),
2343/* harmony export */   arrow: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.arrow),
2344/* harmony export */   computeStyles: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.computeStyles),
2345/* harmony export */   createPopper: () => (/* binding */ createPopper),
2346/* harmony export */   createPopperLite: () => (/* reexport safe */ _popper_lite_js__WEBPACK_IMPORTED_MODULE_11__.createPopper),
2347/* harmony export */   defaultModifiers: () => (/* binding */ defaultModifiers),
2348/* harmony export */   detectOverflow: () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_10__["default"]),
2349/* harmony export */   eventListeners: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.eventListeners),
2350/* harmony export */   flip: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.flip),
2351/* harmony export */   hide: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.hide),
2352/* harmony export */   offset: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.offset),
2353/* harmony export */   popperGenerator: () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_9__.popperGenerator),
2354/* harmony export */   popperOffsets: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.popperOffsets),
2355/* harmony export */   preventOverflow: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.preventOverflow)
2356/* harmony export */ });
2357/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./createPopper.js */ "./node_modules/@popperjs/core/lib/createPopper.js");
2358/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./createPopper.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js");
2359/* harmony import */ var _modifiers_eventListeners_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./modifiers/eventListeners.js */ "./node_modules/@popperjs/core/lib/modifiers/eventListeners.js");
2360/* harmony import */ var _modifiers_popperOffsets_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifiers/popperOffsets.js */ "./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js");
2361/* harmony import */ var _modifiers_computeStyles_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modifiers/computeStyles.js */ "./node_modules/@popperjs/core/lib/modifiers/computeStyles.js");
2362/* harmony import */ var _modifiers_applyStyles_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./modifiers/applyStyles.js */ "./node_modules/@popperjs/core/lib/modifiers/applyStyles.js");
2363/* harmony import */ var _modifiers_offset_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./modifiers/offset.js */ "./node_modules/@popperjs/core/lib/modifiers/offset.js");
2364/* harmony import */ var _modifiers_flip_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./modifiers/flip.js */ "./node_modules/@popperjs/core/lib/modifiers/flip.js");
2365/* harmony import */ var _modifiers_preventOverflow_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./modifiers/preventOverflow.js */ "./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js");
2366/* harmony import */ var _modifiers_arrow_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./modifiers/arrow.js */ "./node_modules/@popperjs/core/lib/modifiers/arrow.js");
2367/* harmony import */ var _modifiers_hide_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./modifiers/hide.js */ "./node_modules/@popperjs/core/lib/modifiers/hide.js");
2368/* harmony import */ var _popper_lite_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./popper-lite.js */ "./node_modules/@popperjs/core/lib/popper-lite.js");
2369/* harmony import */ var _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./modifiers/index.js */ "./node_modules/@popperjs/core/lib/modifiers/index.js");
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380var defaultModifiers = [_modifiers_eventListeners_js__WEBPACK_IMPORTED_MODULE_0__["default"], _modifiers_popperOffsets_js__WEBPACK_IMPORTED_MODULE_1__["default"], _modifiers_computeStyles_js__WEBPACK_IMPORTED_MODULE_2__["default"], _modifiers_applyStyles_js__WEBPACK_IMPORTED_MODULE_3__["default"], _modifiers_offset_js__WEBPACK_IMPORTED_MODULE_4__["default"], _modifiers_flip_js__WEBPACK_IMPORTED_MODULE_5__["default"], _modifiers_preventOverflow_js__WEBPACK_IMPORTED_MODULE_6__["default"], _modifiers_arrow_js__WEBPACK_IMPORTED_MODULE_7__["default"], _modifiers_hide_js__WEBPACK_IMPORTED_MODULE_8__["default"]];
2381var createPopper = /*#__PURE__*/(0,_createPopper_js__WEBPACK_IMPORTED_MODULE_9__.popperGenerator)({
2382  defaultModifiers: defaultModifiers
2383}); // eslint-disable-next-line import/no-unused-modules
2384
2385 // eslint-disable-next-line import/no-unused-modules
2386
2387 // eslint-disable-next-line import/no-unused-modules
2388
2389
2390
2391/***/ }),
2392
vendor: 3,096 bytes, lines 2393-2453
2393/***/ "./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js":
2394/*!***********************************************************************!*\
2395  !*** ./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js ***!
2396  \***********************************************************************/
2397/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2398
2399"use strict";
2400__webpack_require__.r(__webpack_exports__);
2401/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2402/* harmony export */   "default": () => (/* binding */ computeAutoPlacement)
2403/* harmony export */ });
2404/* harmony import */ var _getVariation_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getVariation.js */ "./node_modules/@popperjs/core/lib/utils/getVariation.js");
2405/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js");
2406/* harmony import */ var _detectOverflow_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./detectOverflow.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js");
2407/* harmony import */ var _getBasePlacement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js");
2408
2409
2410
2411
2412function computeAutoPlacement(state, options) {
2413  if (options === void 0) {
2414    options = {};
2415  }
2416
2417  var _options = options,
2418      placement = _options.placement,
2419      boundary = _options.boundary,
2420      rootBoundary = _options.rootBoundary,
2421      padding = _options.padding,
2422      flipVariations = _options.flipVariations,
2423      _options$allowedAutoP = _options.allowedAutoPlacements,
2424      allowedAutoPlacements = _options$allowedAutoP === void 0 ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.placements : _options$allowedAutoP;
2425  var variation = (0,_getVariation_js__WEBPACK_IMPORTED_MODULE_1__["default"])(placement);
2426  var placements = variation ? flipVariations ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.variationPlacements : _enums_js__WEBPACK_IMPORTED_MODULE_0__.variationPlacements.filter(function (placement) {
2427    return (0,_getVariation_js__WEBPACK_IMPORTED_MODULE_1__["default"])(placement) === variation;
2428  }) : _enums_js__WEBPACK_IMPORTED_MODULE_0__.basePlacements;
2429  var allowedPlacements = placements.filter(function (placement) {
2430    return allowedAutoPlacements.indexOf(placement) >= 0;
2431  });
2432
2433  if (allowedPlacements.length === 0) {
2434    allowedPlacements = placements;
2435  } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...
2436
2437
2438  var overflows = allowedPlacements.reduce(function (acc, placement) {
2439    acc[placement] = (0,_detectOverflow_js__WEBPACK_IMPORTED_MODULE_2__["default"])(state, {
2440      placement: placement,
2441      boundary: boundary,
2442      rootBoundary: rootBoundary,
2443      padding: padding
2444    })[(0,_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_3__["default"])(placement)];
2445    return acc;
2446  }, {});
2447  return Object.keys(overflows).sort(function (a, b) {
2448    return overflows[a] - overflows[b];
2449  });
2450}
2451
2452/***/ }),
2453
vendor: 3,194 bytes, lines 2454-2541
2454/***/ "./node_modules/@popperjs/core/lib/utils/computeOffsets.js":
2455/*!*****************************************************************!*\
2456  !*** ./node_modules/@popperjs/core/lib/utils/computeOffsets.js ***!
2457  \*****************************************************************/
2458/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2459
2460"use strict";
2461__webpack_require__.r(__webpack_exports__);
2462/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2463/* harmony export */   "default": () => (/* binding */ computeOffsets)
2464/* harmony export */ });
2465/* harmony import */ var _getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js");
2466/* harmony import */ var _getVariation_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getVariation.js */ "./node_modules/@popperjs/core/lib/utils/getVariation.js");
2467/* harmony import */ var _getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getMainAxisFromPlacement.js */ "./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js");
2468/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js");
2469
2470
2471
2472
2473function computeOffsets(_ref) {
2474  var reference = _ref.reference,
2475      element = _ref.element,
2476      placement = _ref.placement;
2477  var basePlacement = placement ? (0,_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(placement) : null;
2478  var variation = placement ? (0,_getVariation_js__WEBPACK_IMPORTED_MODULE_1__["default"])(placement) : null;
2479  var commonX = reference.x + reference.width / 2 - element.width / 2;
2480  var commonY = reference.y + reference.height / 2 - element.height / 2;
2481  var offsets;
2482
2483  switch (basePlacement) {
2484    case _enums_js__WEBPACK_IMPORTED_MODULE_2__.top:
2485      offsets = {
2486        x: commonX,
2487        y: reference.y - element.height
2488      };
2489      break;
2490
2491    case _enums_js__WEBPACK_IMPORTED_MODULE_2__.bottom:
2492      offsets = {
2493        x: commonX,
2494        y: reference.y + reference.height
2495      };
2496      break;
2497
2498    case _enums_js__WEBPACK_IMPORTED_MODULE_2__.right:
2499      offsets = {
2500        x: reference.x + reference.width,
2501        y: commonY
2502      };
2503      break;
2504
2505    case _enums_js__WEBPACK_IMPORTED_MODULE_2__.left:
2506      offsets = {
2507        x: reference.x - element.width,
2508        y: commonY
2509      };
2510      break;
2511
2512    default:
2513      offsets = {
2514        x: reference.x,
2515        y: reference.y
2516      };
2517  }
2518
2519  var mainAxis = basePlacement ? (0,_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_3__["default"])(basePlacement) : null;
2520
2521  if (mainAxis != null) {
2522    var len = mainAxis === 'y' ? 'height' : 'width';
2523
2524    switch (variation) {
2525      case _enums_js__WEBPACK_IMPORTED_MODULE_2__.start:
2526        offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);
2527        break;
2528
2529      case _enums_js__WEBPACK_IMPORTED_MODULE_2__.end:
2530        offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);
2531        break;
2532
2533      default:
2534    }
2535  }
2536
2537  return offsets;
2538}
2539
2540/***/ }),
2541
vendor: 850 bytes, lines 2542-2570
2542/***/ "./node_modules/@popperjs/core/lib/utils/debounce.js":
2543/*!***********************************************************!*\
2544  !*** ./node_modules/@popperjs/core/lib/utils/debounce.js ***!
2545  \***********************************************************/
2546/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2547
2548"use strict";
2549__webpack_require__.r(__webpack_exports__);
2550/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2551/* harmony export */   "default": () => (/* binding */ debounce)
2552/* harmony export */ });
2553function debounce(fn) {
2554  var pending;
2555  return function () {
2556    if (!pending) {
2557      pending = new Promise(function (resolve) {
2558        Promise.resolve().then(function () {
2559          pending = undefined;
2560          resolve(fn());
2561        });
2562      });
2563    }
2564
2565    return pending;
2566  };
2567}
2568
2569/***/ }),
2570
vendor: 6,226 bytes, lines 2571-2658
2571/***/ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js":
2572/*!*****************************************************************!*\
2573  !*** ./node_modules/@popperjs/core/lib/utils/detectOverflow.js ***!
2574  \*****************************************************************/
2575/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2576
2577"use strict";
2578__webpack_require__.r(__webpack_exports__);
2579/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2580/* harmony export */   "default": () => (/* binding */ detectOverflow)
2581/* harmony export */ });
2582/* harmony import */ var _dom_utils_getClippingRect_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../dom-utils/getClippingRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js");
2583/* harmony import */ var _dom_utils_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../dom-utils/getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js");
2584/* harmony import */ var _dom_utils_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../dom-utils/getBoundingClientRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js");
2585/* harmony import */ var _computeOffsets_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./computeOffsets.js */ "./node_modules/@popperjs/core/lib/utils/computeOffsets.js");
2586/* harmony import */ var _rectToClientRect_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./rectToClientRect.js */ "./node_modules/@popperjs/core/lib/utils/rectToClientRect.js");
2587/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js");
2588/* harmony import */ var _dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../dom-utils/instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js");
2589/* harmony import */ var _mergePaddingObject_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mergePaddingObject.js */ "./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js");
2590/* harmony import */ var _expandToHashMap_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./expandToHashMap.js */ "./node_modules/@popperjs/core/lib/utils/expandToHashMap.js");
2591
2592
2593
2594
2595
2596
2597
2598
2599 // eslint-disable-next-line import/no-unused-modules
2600
2601function detectOverflow(state, options) {
2602  if (options === void 0) {
2603    options = {};
2604  }
2605
2606  var _options = options,
2607      _options$placement = _options.placement,
2608      placement = _options$placement === void 0 ? state.placement : _options$placement,
2609      _options$strategy = _options.strategy,
2610      strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,
2611      _options$boundary = _options.boundary,
2612      boundary = _options$boundary === void 0 ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.clippingParents : _options$boundary,
2613      _options$rootBoundary = _options.rootBoundary,
2614      rootBoundary = _options$rootBoundary === void 0 ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.viewport : _options$rootBoundary,
2615      _options$elementConte = _options.elementContext,
2616      elementContext = _options$elementConte === void 0 ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper : _options$elementConte,
2617      _options$altBoundary = _options.altBoundary,
2618      altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,
2619      _options$padding = _options.padding,
2620      padding = _options$padding === void 0 ? 0 : _options$padding;
2621  var paddingObject = (0,_mergePaddingObject_js__WEBPACK_IMPORTED_MODULE_1__["default"])(typeof padding !== 'number' ? padding : (0,_expandToHashMap_js__WEBPACK_IMPORTED_MODULE_2__["default"])(padding, _enums_js__WEBPACK_IMPORTED_MODULE_0__.basePlacements));
2622  var altContext = elementContext === _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.reference : _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper;
2623  var popperRect = state.rects.popper;
2624  var element = state.elements[altBoundary ? altContext : elementContext];
2625  var clippingClientRect = (0,_dom_utils_getClippingRect_js__WEBPACK_IMPORTED_MODULE_3__["default"])((0,_dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__.isElement)(element) ? element : element.contextElement || (0,_dom_utils_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_5__["default"])(state.elements.popper), boundary, rootBoundary, strategy);
2626  var referenceClientRect = (0,_dom_utils_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_6__["default"])(state.elements.reference);
2627  var popperOffsets = (0,_computeOffsets_js__WEBPACK_IMPORTED_MODULE_7__["default"])({
2628    reference: referenceClientRect,
2629    element: popperRect,
2630    strategy: 'absolute',
2631    placement: placement
2632  });
2633  var popperClientRect = (0,_rectToClientRect_js__WEBPACK_IMPORTED_MODULE_8__["default"])(Object.assign({}, popperRect, popperOffsets));
2634  var elementClientRect = elementContext === _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect
2635  // 0 or negative = within the clipping rect
2636
2637  var overflowOffsets = {
2638    top: clippingClientRect.top - elementClientRect.top + paddingObject.top,
2639    bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,
2640    left: clippingClientRect.left - elementClientRect.left + paddingObject.left,
2641    right: elementClientRect.right - clippingClientRect.right + paddingObject.right
2642  };
2643  var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element
2644
2645  if (elementContext === _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper && offsetData) {
2646    var offset = offsetData[placement];
2647    Object.keys(overflowOffsets).forEach(function (key) {
2648      var multiply = [_enums_js__WEBPACK_IMPORTED_MODULE_0__.right, _enums_js__WEBPACK_IMPORTED_MODULE_0__.bottom].indexOf(key) >= 0 ? 1 : -1;
2649      var axis = [_enums_js__WEBPACK_IMPORTED_MODULE_0__.top, _enums_js__WEBPACK_IMPORTED_MODULE_0__.bottom].indexOf(key) >= 0 ? 'y' : 'x';
2650      overflowOffsets[key] += offset[axis] * multiply;
2651    });
2652  }
2653
2654  return overflowOffsets;
2655}
2656
2657/***/ }),
2658
vendor: 742 bytes, lines 2659-2678
2659/***/ "./node_modules/@popperjs/core/lib/utils/expandToHashMap.js":
2660/*!******************************************************************!*\
2661  !*** ./node_modules/@popperjs/core/lib/utils/expandToHashMap.js ***!
2662  \******************************************************************/
2663/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2664
2665"use strict";
2666__webpack_require__.r(__webpack_exports__);
2667/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2668/* harmony export */   "default": () => (/* binding */ expandToHashMap)
2669/* harmony export */ });
2670function expandToHashMap(value, keys) {
2671  return keys.reduce(function (hashMap, key) {
2672    hashMap[key] = value;
2673    return hashMap;
2674  }, {});
2675}
2676
2677/***/ }),
2678
vendor: 637 bytes, lines 2679-2695
2679/***/ "./node_modules/@popperjs/core/lib/utils/getAltAxis.js":
2680/*!*************************************************************!*\
2681  !*** ./node_modules/@popperjs/core/lib/utils/getAltAxis.js ***!
2682  \*************************************************************/
2683/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2684
2685"use strict";
2686__webpack_require__.r(__webpack_exports__);
2687/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2688/* harmony export */   "default": () => (/* binding */ getAltAxis)
2689/* harmony export */ });
2690function getAltAxis(axis) {
2691  return axis === 'x' ? 'y' : 'x';
2692}
2693
2694/***/ }),
2695
vendor: 678 bytes, lines 2696-2713
2696/***/ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js":
2697/*!*******************************************************************!*\
2698  !*** ./node_modules/@popperjs/core/lib/utils/getBasePlacement.js ***!
2699  \*******************************************************************/
2700/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2701
2702"use strict";
2703__webpack_require__.r(__webpack_exports__);
2704/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2705/* harmony export */   "default": () => (/* binding */ getBasePlacement)
2706/* harmony export */ });
2707
2708function getBasePlacement(placement) {
2709  return placement.split('-')[0];
2710}
2711
2712/***/ }),
2713
vendor: 715 bytes, lines 2714-2735
2714/***/ "./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js":
2715/*!*********************************************************************!*\
2716  !*** ./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js ***!
2717  \*********************************************************************/
2718/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2719
2720"use strict";
2721__webpack_require__.r(__webpack_exports__);
2722/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2723/* harmony export */   "default": () => (/* binding */ getFreshSideObject)
2724/* harmony export */ });
2725function getFreshSideObject() {
2726  return {
2727    top: 0,
2728    right: 0,
2729    bottom: 0,
2730    left: 0
2731  };
2732}
2733
2734/***/ }),
2735
vendor: 755 bytes, lines 2736-2752
2736/***/ "./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js":
2737/*!***************************************************************************!*\
2738  !*** ./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js ***!
2739  \***************************************************************************/
2740/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2741
2742"use strict";
2743__webpack_require__.r(__webpack_exports__);
2744/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2745/* harmony export */   "default": () => (/* binding */ getMainAxisFromPlacement)
2746/* harmony export */ });
2747function getMainAxisFromPlacement(placement) {
2748  return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';
2749}
2750
2751/***/ }),
2752
vendor: 856 bytes, lines 2753-2777
2753/***/ "./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js":
2754/*!***********************************************************************!*\
2755  !*** ./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js ***!
2756  \***********************************************************************/
2757/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2758
2759"use strict";
2760__webpack_require__.r(__webpack_exports__);
2761/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2762/* harmony export */   "default": () => (/* binding */ getOppositePlacement)
2763/* harmony export */ });
2764var hash = {
2765  left: 'right',
2766  right: 'left',
2767  bottom: 'top',
2768  top: 'bottom'
2769};
2770function getOppositePlacement(placement) {
2771  return placement.replace(/left|right|bottom|top/g, function (matched) {
2772    return hash[matched];
2773  });
2774}
2775
2776/***/ }),
2777
vendor: 862 bytes, lines 2778-2800
2778/***/ "./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js":
2779/*!********************************************************************************!*\
2780  !*** ./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js ***!
2781  \********************************************************************************/
2782/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2783
2784"use strict";
2785__webpack_require__.r(__webpack_exports__);
2786/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2787/* harmony export */   "default": () => (/* binding */ getOppositeVariationPlacement)
2788/* harmony export */ });
2789var hash = {
2790  start: 'end',
2791  end: 'start'
2792};
2793function getOppositeVariationPlacement(placement) {
2794  return placement.replace(/start|end/g, function (matched) {
2795    return hash[matched];
2796  });
2797}
2798
2799/***/ }),
2800
vendor: 653 bytes, lines 2801-2817
2801/***/ "./node_modules/@popperjs/core/lib/utils/getVariation.js":
2802/*!***************************************************************!*\
2803  !*** ./node_modules/@popperjs/core/lib/utils/getVariation.js ***!
2804  \***************************************************************/
2805/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2806
2807"use strict";
2808__webpack_require__.r(__webpack_exports__);
2809/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2810/* harmony export */   "default": () => (/* binding */ getVariation)
2811/* harmony export */ });
2812function getVariation(placement) {
2813  return placement.split('-')[1];
2814}
2815
2816/***/ }),
2817
vendor: 713 bytes, lines 2818-2836
2818/***/ "./node_modules/@popperjs/core/lib/utils/math.js":
2819/*!*******************************************************!*\
2820  !*** ./node_modules/@popperjs/core/lib/utils/math.js ***!
2821  \*******************************************************/
2822/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2823
2824"use strict";
2825__webpack_require__.r(__webpack_exports__);
2826/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2827/* harmony export */   max: () => (/* binding */ max),
2828/* harmony export */   min: () => (/* binding */ min),
2829/* harmony export */   round: () => (/* binding */ round)
2830/* harmony export */ });
2831var max = Math.max;
2832var min = Math.min;
2833var round = Math.round;
2834
2835/***/ }),
2836
vendor: 1,087 bytes, lines 2837-2864
2837/***/ "./node_modules/@popperjs/core/lib/utils/mergeByName.js":
2838/*!**************************************************************!*\
2839  !*** ./node_modules/@popperjs/core/lib/utils/mergeByName.js ***!
2840  \**************************************************************/
2841/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2842
2843"use strict";
2844__webpack_require__.r(__webpack_exports__);
2845/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2846/* harmony export */   "default": () => (/* binding */ mergeByName)
2847/* harmony export */ });
2848function mergeByName(modifiers) {
2849  var merged = modifiers.reduce(function (merged, current) {
2850    var existing = merged[current.name];
2851    merged[current.name] = existing ? Object.assign({}, existing, current, {
2852      options: Object.assign({}, existing.options, current.options),
2853      data: Object.assign({}, existing.data, current.data)
2854    }) : current;
2855    return merged;
2856  }, {}); // IE11 does not support Object.values
2857
2858  return Object.keys(merged).map(function (key) {
2859    return merged[key];
2860  });
2861}
2862
2863/***/ }),
2864
vendor: 969 bytes, lines 2865-2883
2865/***/ "./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js":
2866/*!*********************************************************************!*\
2867  !*** ./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js ***!
2868  \*********************************************************************/
2869/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2870
2871"use strict";
2872__webpack_require__.r(__webpack_exports__);
2873/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2874/* harmony export */   "default": () => (/* binding */ mergePaddingObject)
2875/* harmony export */ });
2876/* harmony import */ var _getFreshSideObject_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getFreshSideObject.js */ "./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js");
2877
2878function mergePaddingObject(paddingObject) {
2879  return Object.assign({}, (0,_getFreshSideObject_js__WEBPACK_IMPORTED_MODULE_0__["default"])(), paddingObject);
2880}
2881
2882/***/ }),
2883
vendor: 1,964 bytes, lines 2884-2942
2884/***/ "./node_modules/@popperjs/core/lib/utils/orderModifiers.js":
2885/*!*****************************************************************!*\
2886  !*** ./node_modules/@popperjs/core/lib/utils/orderModifiers.js ***!
2887  \*****************************************************************/
2888/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2889
2890"use strict";
2891__webpack_require__.r(__webpack_exports__);
2892/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2893/* harmony export */   "default": () => (/* binding */ orderModifiers)
2894/* harmony export */ });
2895/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js");
2896 // source: https://stackoverflow.com/questions/49875255
2897
2898function order(modifiers) {
2899  var map = new Map();
2900  var visited = new Set();
2901  var result = [];
2902  modifiers.forEach(function (modifier) {
2903    map.set(modifier.name, modifier);
2904  }); // On visiting object, check for its dependencies and visit them recursively
2905
2906  function sort(modifier) {
2907    visited.add(modifier.name);
2908    var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);
2909    requires.forEach(function (dep) {
2910      if (!visited.has(dep)) {
2911        var depModifier = map.get(dep);
2912
2913        if (depModifier) {
2914          sort(depModifier);
2915        }
2916      }
2917    });
2918    result.push(modifier);
2919  }
2920
2921  modifiers.forEach(function (modifier) {
2922    if (!visited.has(modifier.name)) {
2923      // check for visited object
2924      sort(modifier);
2925    }
2926  });
2927  return result;
2928}
2929
2930function orderModifiers(modifiers) {
2931  // order based on dependencies
2932  var orderedModifiers = order(modifiers); // order based on phase
2933
2934  return _enums_js__WEBPACK_IMPORTED_MODULE_0__.modifierPhases.reduce(function (acc, phase) {
2935    return acc.concat(orderedModifiers.filter(function (modifier) {
2936      return modifier.phase === phase;
2937    }));
2938  }, []);
2939}
2940
2941/***/ }),
2942
vendor: 779 bytes, lines 2943-2964
2943/***/ "./node_modules/@popperjs/core/lib/utils/rectToClientRect.js":
2944/*!*******************************************************************!*\
2945  !*** ./node_modules/@popperjs/core/lib/utils/rectToClientRect.js ***!
2946  \*******************************************************************/
2947/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2948
2949"use strict";
2950__webpack_require__.r(__webpack_exports__);
2951/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2952/* harmony export */   "default": () => (/* binding */ rectToClientRect)
2953/* harmony export */ });
2954function rectToClientRect(rect) {
2955  return Object.assign({}, rect, {
2956    left: rect.x,
2957    top: rect.y,
2958    right: rect.x + rect.width,
2959    bottom: rect.y + rect.height
2960  });
2961}
2962
2963/***/ }),
2964
vendor: 856 bytes, lines 2965-2989
2965/***/ "./node_modules/@popperjs/core/lib/utils/userAgent.js":
2966/*!************************************************************!*\
2967  !*** ./node_modules/@popperjs/core/lib/utils/userAgent.js ***!
2968  \************************************************************/
2969/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2970
2971"use strict";
2972__webpack_require__.r(__webpack_exports__);
2973/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2974/* harmony export */   "default": () => (/* binding */ getUAString)
2975/* harmony export */ });
2976function getUAString() {
2977  var uaData = navigator.userAgentData;
2978
2979  if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {
2980    return uaData.brands.map(function (item) {
2981      return item.brand + "/" + item.version;
2982    }).join(' ');
2983  }
2984
2985  return navigator.userAgent;
2986}
2987
2988/***/ }),
2989
vendor: 1,046 bytes, lines 2990-3013
2990/***/ "./node_modules/@popperjs/core/lib/utils/within.js":
2991/*!*********************************************************!*\
2992  !*** ./node_modules/@popperjs/core/lib/utils/within.js ***!
2993  \*********************************************************/
2994/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2995
2996"use strict";
2997__webpack_require__.r(__webpack_exports__);
2998/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2999/* harmony export */   within: () => (/* binding */ within),
3000/* harmony export */   withinMaxClamp: () => (/* binding */ withinMaxClamp)
3001/* harmony export */ });
3002/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./math.js */ "./node_modules/@popperjs/core/lib/utils/math.js");
3003
3004function within(min, value, max) {
3005  return (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.max)(min, (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.min)(value, max));
3006}
3007function withinMaxClamp(min, value, max) {
3008  var v = within(min, value, max);
3009  return v > max ? max : v;
3010}
3011
3012/***/ }),
3013
vendor: 342 bytes, lines 3014-3023
3014/***/ "./node_modules/axios/index.js":
3015/*!*************************************!*\
3016  !*** ./node_modules/axios/index.js ***!
3017  \*************************************/
3018/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
3019
3020module.exports = __webpack_require__(/*! ./lib/axios */ "./node_modules/axios/lib/axios.js");
3021
3022/***/ }),
3023
vendor: 6,957 bytes, lines 3024-3223
3024/***/ "./node_modules/axios/lib/adapters/xhr.js":
3025/*!************************************************!*\
3026  !*** ./node_modules/axios/lib/adapters/xhr.js ***!
3027  \************************************************/
3028/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
3029
3030"use strict";
3031
3032
3033var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js");
3034var settle = __webpack_require__(/*! ./../core/settle */ "./node_modules/axios/lib/core/settle.js");
3035var cookies = __webpack_require__(/*! ./../helpers/cookies */ "./node_modules/axios/lib/helpers/cookies.js");
3036var buildURL = __webpack_require__(/*! ./../helpers/buildURL */ "./node_modules/axios/lib/helpers/buildURL.js");
3037var buildFullPath = __webpack_require__(/*! ../core/buildFullPath */ "./node_modules/axios/lib/core/buildFullPath.js");
3038var parseHeaders = __webpack_require__(/*! ./../helpers/parseHeaders */ "./node_modules/axios/lib/helpers/parseHeaders.js");
3039var isURLSameOrigin = __webpack_require__(/*! ./../helpers/isURLSameOrigin */ "./node_modules/axios/lib/helpers/isURLSameOrigin.js");
3040var createError = __webpack_require__(/*! ../core/createError */ "./node_modules/axios/lib/core/createError.js");
3041
3042module.exports = function xhrAdapter(config) {
3043  return new Promise(function dispatchXhrRequest(resolve, reject) {
3044    var requestData = config.data;
3045    var requestHeaders = config.headers;
3046    var responseType = config.responseType;
3047
3048    if (utils.isFormData(requestData)) {
3049      delete requestHeaders['Content-Type']; // Let the browser set it
3050    }
3051
3052    var request = new XMLHttpRequest();
3053
3054    // HTTP basic authentication
3055    if (config.auth) {
3056      var username = config.auth.username || '';
3057      var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';
3058      requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);
3059    }
3060
3061    var fullPath = buildFullPath(config.baseURL, config.url);
3062    request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);
3063
3064    // Set the request timeout in MS
3065    request.timeout = config.timeout;
3066
3067    function onloadend() {
3068      if (!request) {
3069        return;
3070      }
3071      // Prepare the response
3072      var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;
3073      var responseData = !responseType || responseType === 'text' ||  responseType === 'json' ?
3074        request.responseText : request.response;
3075      var response = {
3076        data: responseData,
3077        status: request.status,
3078        statusText: request.statusText,
3079        headers: responseHeaders,
3080        config: config,
3081        request: request
3082      };
3083
3084      settle(resolve, reject, response);
3085
3086      // Clean up request
3087      request = null;
3088    }
3089
3090    if ('onloadend' in request) {
3091      // Use onloadend if available
3092      request.onloadend = onloadend;
3093    } else {
3094      // Listen for ready state to emulate onloadend
3095      request.onreadystatechange = function handleLoad() {
3096        if (!request || request.readyState !== 4) {
3097          return;
3098        }
3099
3100        // The request errored out and we didn't get a response, this will be
3101        // handled by onerror instead
3102        // With one exception: request that using file: protocol, most browsers
3103        // will return status as 0 even though it's a successful request
3104        if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {
3105          return;
3106        }
3107        // readystate handler is calling before onerror or ontimeout handlers,
3108        // so we should call onloadend on the next 'tick'
3109        setTimeout(onloadend);
3110      };
3111    }
3112
3113    // Handle browser request cancellation (as opposed to a manual cancellation)
3114    request.onabort = function handleAbort() {
3115      if (!request) {
3116        return;
3117      }
3118
3119      reject(createError('Request aborted', config, 'ECONNABORTED', request));
3120
3121      // Clean up request
3122      request = null;
3123    };
3124
3125    // Handle low level network errors
3126    request.onerror = function handleError() {
3127      // Real errors are hidden from us by the browser
3128      // onerror should only fire if it's a network error
3129      reject(createError('Network Error', config, null, request));
3130
3131      // Clean up request
3132      request = null;
3133    };
3134
3135    // Handle timeout
3136    request.ontimeout = function handleTimeout() {
3137      var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';
3138      if (config.timeoutErrorMessage) {
3139        timeoutErrorMessage = config.timeoutErrorMessage;
3140      }
3141      reject(createError(
3142        timeoutErrorMessage,
3143        config,
3144        config.transitional && config.transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',
3145        request));
3146
3147      // Clean up request
3148      request = null;
3149    };
3150
3151    // Add xsrf header
3152    // This is only done if running in a standard browser environment.
3153    // Specifically not if we're in a web worker, or react-native.
3154    if (utils.isStandardBrowserEnv()) {
3155      // Add xsrf header
3156      var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?
3157        cookies.read(config.xsrfCookieName) :
3158        undefined;
3159
3160      if (xsrfValue) {
3161        requestHeaders[config.xsrfHeaderName] = xsrfValue;
3162      }
3163    }
3164
3165    // Add headers to the request
3166    if ('setRequestHeader' in request) {
3167      utils.forEach(requestHeaders, function setRequestHeader(val, key) {
3168        if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {
3169          // Remove Content-Type if data is undefined
3170          delete requestHeaders[key];
3171        } else {
3172          // Otherwise add header to the request
3173          request.setRequestHeader(key, val);
3174        }
3175      });
3176    }
3177
3178    // Add withCredentials to request if needed
3179    if (!utils.isUndefined(config.withCredentials)) {
3180      request.withCredentials = !!config.withCredentials;
3181    }
3182
3183    // Add responseType to request if needed
3184    if (responseType && responseType !== 'json') {
3185      request.responseType = config.responseType;
3186    }
3187
3188    // Handle progress if needed
3189    if (typeof config.onDownloadProgress === 'function') {
3190      request.addEventListener('progress', config.onDownloadProgress);
3191    }
3192
3193    // Not all browsers support upload events
3194    if (typeof config.onUploadProgress === 'function' && request.upload) {
3195      request.upload.addEventListener('progress', config.onUploadProgress);
3196    }
3197
3198    if (config.cancelToken) {
3199      // Handle cancellation
3200      config.cancelToken.promise.then(function onCanceled(cancel) {
3201        if (!request) {
3202          return;
3203        }
3204
3205        request.abort();
3206        reject(cancel);
3207        // Clean up request
3208        request = null;
3209      });
3210    }
3211
3212    if (!requestData) {
3213      requestData = null;
3214    }
3215
3216    // Send the request
3217    request.send(requestData);
3218  });
3219};
3220
3221
3222/***/ }),
3223
vendor: 2,383 bytes, lines 3224-3290
3224/***/ "./node_modules/axios/lib/axios.js":
3225/*!*****************************************!*\
3226  !*** ./node_modules/axios/lib/axios.js ***!
3227  \*****************************************/
3228/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
3229
3230"use strict";
3231
3232
3233var utils = __webpack_require__(/*! ./utils */ "./node_modules/axios/lib/utils.js");
3234var bind = __webpack_require__(/*! ./helpers/bind */ "./node_modules/axios/lib/helpers/bind.js");
3235var Axios = __webpack_require__(/*! ./core/Axios */ "./node_modules/axios/lib/core/Axios.js");
3236var mergeConfig = __webpack_require__(/*! ./core/mergeConfig */ "./node_modules/axios/lib/core/mergeConfig.js");
3237var defaults = __webpack_require__(/*! ./defaults */ "./node_modules/axios/lib/defaults.js");
3238
3239/**
3240 * Create an instance of Axios
3241 *
3242 * @param {Object} defaultConfig The default config for the instance
3243 * @return {Axios} A new instance of Axios
3244 */
3245function createInstance(defaultConfig) {
3246  var context = new Axios(defaultConfig);
3247  var instance = bind(Axios.prototype.request, context);
3248
3249  // Copy axios.prototype to instance
3250  utils.extend(instance, Axios.prototype, context);
3251
3252  // Copy context to instance
3253  utils.extend(instance, context);
3254
3255  return instance;
3256}
3257
3258// Create the default instance to be exported
3259var axios = createInstance(defaults);
3260
3261// Expose Axios class to allow class inheritance
3262axios.Axios = Axios;
3263
3264// Factory for creating new instances
3265axios.create = function create(instanceConfig) {
3266  return createInstance(mergeConfig(axios.defaults, instanceConfig));
3267};
3268
3269// Expose Cancel & CancelToken
3270axios.Cancel = __webpack_require__(/*! ./cancel/Cancel */ "./node_modules/axios/lib/cancel/Cancel.js");
3271axios.CancelToken = __webpack_require__(/*! ./cancel/CancelToken */ "./node_modules/axios/lib/cancel/CancelToken.js");
3272axios.isCancel = __webpack_require__(/*! ./cancel/isCancel */ "./node_modules/axios/lib/cancel/isCancel.js");
3273
3274// Expose all/spread
3275axios.all = function all(promises) {
3276  return Promise.all(promises);
3277};
3278axios.spread = __webpack_require__(/*! ./helpers/spread */ "./node_modules/axios/lib/helpers/spread.js");
3279
3280// Expose isAxiosError
3281axios.isAxiosError = __webpack_require__(/*! ./helpers/isAxiosError */ "./node_modules/axios/lib/helpers/isAxiosError.js");
3282
3283module.exports = axios;
3284
3285// Allow use of default import syntax in TypeScript
3286module.exports["default"] = axios;
3287
3288
3289/***/ }),
3290
vendor: 636 bytes, lines 3291-3320
3291/***/ "./node_modules/axios/lib/cancel/Cancel.js":
3292/*!*************************************************!*\
3293  !*** ./node_modules/axios/lib/cancel/Cancel.js ***!
3294  \*************************************************/
3295/***/ ((module) => {
3296
3297"use strict";
3298
3299
3300/**
3301 * A `Cancel` is an object that is thrown when an operation is canceled.
3302 *
3303 * @class
3304 * @param {string=} message The message.
3305 */
3306function Cancel(message) {
3307  this.message = message;
3308}
3309
3310Cancel.prototype.toString = function toString() {
3311  return 'Cancel' + (this.message ? ': ' + this.message : '');
3312};
3313
3314Cancel.prototype.__CANCEL__ = true;
3315
3316module.exports = Cancel;
3317
3318
3319/***/ }),
3320
vendor: 1,619 bytes, lines 3321-3388
3321/***/ "./node_modules/axios/lib/cancel/CancelToken.js":
3322/*!******************************************************!*\
3323  !*** ./node_modules/axios/lib/cancel/CancelToken.js ***!
3324  \******************************************************/
3325/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
3326
3327"use strict";
3328
3329
3330var Cancel = __webpack_require__(/*! ./Cancel */ "./node_modules/axios/lib/cancel/Cancel.js");
3331
3332/**
3333 * A `CancelToken` is an object that can be used to request cancellation of an operation.
3334 *
3335 * @class
3336 * @param {Function} executor The executor function.
3337 */
3338function CancelToken(executor) {
3339  if (typeof executor !== 'function') {
3340    throw new TypeError('executor must be a function.');
3341  }
3342
3343  var resolvePromise;
3344  this.promise = new Promise(function promiseExecutor(resolve) {
3345    resolvePromise = resolve;
3346  });
3347
3348  var token = this;
3349  executor(function cancel(message) {
3350    if (token.reason) {
3351      // Cancellation has already been requested
3352      return;
3353    }
3354
3355    token.reason = new Cancel(message);
3356    resolvePromise(token.reason);
3357  });
3358}
3359
3360/**
3361 * Throws a `Cancel` if cancellation has been requested.
3362 */
3363CancelToken.prototype.throwIfRequested = function throwIfRequested() {
3364  if (this.reason) {
3365    throw this.reason;
3366  }
3367};
3368
3369/**
3370 * Returns an object that contains a new `CancelToken` and a function that, when called,
3371 * cancels the `CancelToken`.
3372 */
3373CancelToken.source = function source() {
3374  var cancel;
3375  var token = new CancelToken(function executor(c) {
3376    cancel = c;
3377  });
3378  return {
3379    token: token,
3380    cancel: cancel
3381  };
3382};
3383
3384module.exports = CancelToken;
3385
3386
3387/***/ }),
3388
vendor: 361 bytes, lines 3389-3404
3389/***/ "./node_modules/axios/lib/cancel/isCancel.js":
3390/*!***************************************************!*\
3391  !*** ./node_modules/axios/lib/cancel/isCancel.js ***!
3392  \***************************************************/
3393/***/ ((module) => {
3394
3395"use strict";
3396
3397
3398module.exports = function isCancel(value) {
3399  return !!(value && value.__CANCEL__);
3400};
3401
3402
3403/***/ }),
3404
vendor: 4,919 bytes, lines 3405-3563
3405/***/ "./node_modules/axios/lib/core/Axios.js":
3406/*!**********************************************!*\
3407  !*** ./node_modules/axios/lib/core/Axios.js ***!
3408  \**********************************************/
3409/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
3410
3411"use strict";
3412
3413
3414var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js");
3415var buildURL = __webpack_require__(/*! ../helpers/buildURL */ "./node_modules/axios/lib/helpers/buildURL.js");
3416var InterceptorManager = __webpack_require__(/*! ./InterceptorManager */ "./node_modules/axios/lib/core/InterceptorManager.js");
3417var dispatchRequest = __webpack_require__(/*! ./dispatchRequest */ "./node_modules/axios/lib/core/dispatchRequest.js");
3418var mergeConfig = __webpack_require__(/*! ./mergeConfig */ "./node_modules/axios/lib/core/mergeConfig.js");
3419var validator = __webpack_require__(/*! ../helpers/validator */ "./node_modules/axios/lib/helpers/validator.js");
3420
3421var validators = validator.validators;
3422/**
3423 * Create a new instance of Axios
3424 *
3425 * @param {Object} instanceConfig The default config for the instance
3426 */
3427function Axios(instanceConfig) {
3428  this.defaults = instanceConfig;
3429  this.interceptors = {
3430    request: new InterceptorManager(),
3431    response: new InterceptorManager()
3432  };
3433}
3434
3435/**
3436 * Dispatch a request
3437 *
3438 * @param {Object} config The config specific for this request (merged with this.defaults)
3439 */
3440Axios.prototype.request = function request(config) {
3441  /*eslint no-param-reassign:0*/
3442  // Allow for axios('example/url'[, config]) a la fetch API
3443  if (typeof config === 'string') {
3444    config = arguments[1] || {};
3445    config.url = arguments[0];
3446  } else {
3447    config = config || {};
3448  }
3449
3450  config = mergeConfig(this.defaults, config);
3451
3452  // Set config.method
3453  if (config.method) {
3454    config.method = config.method.toLowerCase();
3455  } else if (this.defaults.method) {
3456    config.method = this.defaults.method.toLowerCase();
3457  } else {
3458    config.method = 'get';
3459  }
3460
3461  var transitional = config.transitional;
3462
3463  if (transitional !== undefined) {
3464    validator.assertOptions(transitional, {
3465      silentJSONParsing: validators.transitional(validators.boolean, '1.0.0'),
3466      forcedJSONParsing: validators.transitional(validators.boolean, '1.0.0'),
3467      clarifyTimeoutError: validators.transitional(validators.boolean, '1.0.0')
3468    }, false);
3469  }
3470
3471  // filter out skipped interceptors
3472  var requestInterceptorChain = [];
3473  var synchronousRequestInterceptors = true;
3474  this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {
3475    if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {
3476      return;
3477    }
3478
3479    synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;
3480
3481    requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);
3482  });
3483
3484  var responseInterceptorChain = [];
3485  this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {
3486    responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);
3487  });
3488
3489  var promise;
3490
3491  if (!synchronousRequestInterceptors) {
3492    var chain = [dispatchRequest, undefined];
3493
3494    Array.prototype.unshift.apply(chain, requestInterceptorChain);
3495    chain = chain.concat(responseInterceptorChain);
3496
3497    promise = Promise.resolve(config);
3498    while (chain.length) {
3499      promise = promise.then(chain.shift(), chain.shift());
3500    }
3501
3502    return promise;
3503  }
3504
3505
3506  var newConfig = config;
3507  while (requestInterceptorChain.length) {
3508    var onFulfilled = requestInterceptorChain.shift();
3509    var onRejected = requestInterceptorChain.shift();
3510    try {
3511      newConfig = onFulfilled(newConfig);
3512    } catch (error) {
3513      onRejected(error);
3514      break;
3515    }
3516  }
3517
3518  try {
3519    promise = dispatchRequest(newConfig);
3520  } catch (error) {
3521    return Promise.reject(error);
3522  }
3523
3524  while (responseInterceptorChain.length) {
3525    promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());
3526  }
3527
3528  return promise;
3529};
3530
3531Axios.prototype.getUri = function getUri(config) {
3532  config = mergeConfig(this.defaults, config);
3533  return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\?/, '');
3534};
3535
3536// Provide aliases for supported request methods
3537utils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {
3538  /*eslint func-names:0*/
3539  Axios.prototype[method] = function(url, config) {
3540    return this.request(mergeConfig(config || {}, {
3541      method: method,
3542      url: url,
3543      data: (config || {}).data
3544    }));
3545  };
3546});
3547
3548utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {
3549  /*eslint func-names:0*/
3550  Axios.prototype[method] = function(url, data, config) {
3551    return this.request(mergeConfig(config || {}, {
3552      method: method,
3553      url: url,
3554      data: data
3555    }));
3556  };
3557});
3558
3559module.exports = Axios;
3560
3561
3562/***/ }),
3563
vendor: 1,754 bytes, lines 3564-3628
3564/***/ "./node_modules/axios/lib/core/InterceptorManager.js":
3565/*!***********************************************************!*\
3566  !*** ./node_modules/axios/lib/core/InterceptorManager.js ***!
3567  \***********************************************************/
3568/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
3569
3570"use strict";
3571
3572
3573var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js");
3574
3575function InterceptorManager() {
3576  this.handlers = [];
3577}
3578
3579/**
3580 * Add a new interceptor to the stack
3581 *
3582 * @param {Function} fulfilled The function to handle `then` for a `Promise`
3583 * @param {Function} rejected The function to handle `reject` for a `Promise`
3584 *
3585 * @return {Number} An ID used to remove interceptor later
3586 */
3587InterceptorManager.prototype.use = function use(fulfilled, rejected, options) {
3588  this.handlers.push({
3589    fulfilled: fulfilled,
3590    rejected: rejected,
3591    synchronous: options ? options.synchronous : false,
3592    runWhen: options ? options.runWhen : null
3593  });
3594  return this.handlers.length - 1;
3595};
3596
3597/**
3598 * Remove an interceptor from the stack
3599 *
3600 * @param {Number} id The ID that was returned by `use`
3601 */
3602InterceptorManager.prototype.eject = function eject(id) {
3603  if (this.handlers[id]) {
3604    this.handlers[id] = null;
3605  }
3606};
3607
3608/**
3609 * Iterate over all the registered interceptors
3610 *
3611 * This method is particularly useful for skipping over any
3612 * interceptors that may have become `null` calling `eject`.
3613 *
3614 * @param {Function} fn The function to call for each interceptor
3615 */
3616InterceptorManager.prototype.forEach = function forEach(fn) {
3617  utils.forEach(this.handlers, function forEachHandler(h) {
3618    if (h !== null) {
3619      fn(h);
3620    }
3621  });
3622};
3623
3624module.exports = InterceptorManager;
3625
3626
3627/***/ }),
3628
vendor: 1,149 bytes, lines 3629-3659
3629/***/ "./node_modules/axios/lib/core/buildFullPath.js":
3630/*!******************************************************!*\
3631  !*** ./node_modules/axios/lib/core/buildFullPath.js ***!
3632  \******************************************************/
3633/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
3634
3635"use strict";
3636
3637
3638var isAbsoluteURL = __webpack_require__(/*! ../helpers/isAbsoluteURL */ "./node_modules/axios/lib/helpers/isAbsoluteURL.js");
3639var combineURLs = __webpack_require__(/*! ../helpers/combineURLs */ "./node_modules/axios/lib/helpers/combineURLs.js");
3640
3641/**
3642 * Creates a new URL by combining the baseURL with the requestedURL,
3643 * only when the requestedURL is not already an absolute URL.
3644 * If the requestURL is absolute, this function returns the requestedURL untouched.
3645 *
3646 * @param {string} baseURL The base URL
3647 * @param {string} requestedURL Absolute or relative URL to combine
3648 * @returns {string} The combined full path
3649 */
3650module.exports = function buildFullPath(baseURL, requestedURL) {
3651  if (baseURL && !isAbsoluteURL(requestedURL)) {
3652    return combineURLs(baseURL, requestedURL);
3653  }
3654  return requestedURL;
3655};
3656
3657
3658/***/ }),
3659
vendor: 1,000 bytes, lines 3660-3688
3660/***/ "./node_modules/axios/lib/core/createError.js":
3661/*!****************************************************!*\
3662  !*** ./node_modules/axios/lib/core/createError.js ***!
3663  \****************************************************/
3664/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
3665
3666"use strict";
3667
3668
3669var enhanceError = __webpack_require__(/*! ./enhanceError */ "./node_modules/axios/lib/core/enhanceError.js");
3670
3671/**
3672 * Create an Error with the specified message, config, error code, request and response.
3673 *
3674 * @param {string} message The error message.
3675 * @param {Object} config The config.
3676 * @param {string} [code] The error code (for example, 'ECONNABORTED').
3677 * @param {Object} [request] The request.
3678 * @param {Object} [response] The response.
3679 * @returns {Error} The created error.
3680 */
3681module.exports = function createError(message, config, code, request, response) {
3682  var error = new Error(message);
3683  return enhanceError(error, config, code, request, response);
3684};
3685
3686
3687/***/ }),
3688
vendor: 2,557 bytes, lines 3689-3781
3689/***/ "./node_modules/axios/lib/core/dispatchRequest.js":
3690/*!********************************************************!*\
3691  !*** ./node_modules/axios/lib/core/dispatchRequest.js ***!
3692  \********************************************************/
3693/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
3694
3695"use strict";
3696
3697
3698var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js");
3699var transformData = __webpack_require__(/*! ./transformData */ "./node_modules/axios/lib/core/transformData.js");
3700var isCancel = __webpack_require__(/*! ../cancel/isCancel */ "./node_modules/axios/lib/cancel/isCancel.js");
3701var defaults = __webpack_require__(/*! ../defaults */ "./node_modules/axios/lib/defaults.js");
3702
3703/**
3704 * Throws a `Cancel` if cancellation has been requested.
3705 */
3706function throwIfCancellationRequested(config) {
3707  if (config.cancelToken) {
3708    config.cancelToken.throwIfRequested();
3709  }
3710}
3711
3712/**
3713 * Dispatch a request to the server using the configured adapter.
3714 *
3715 * @param {object} config The config that is to be used for the request
3716 * @returns {Promise} The Promise to be fulfilled
3717 */
3718module.exports = function dispatchRequest(config) {
3719  throwIfCancellationRequested(config);
3720
3721  // Ensure headers exist
3722  config.headers = config.headers || {};
3723
3724  // Transform request data
3725  config.data = transformData.call(
3726    config,
3727    config.data,
3728    config.headers,
3729    config.transformRequest
3730  );
3731
3732  // Flatten headers
3733  config.headers = utils.merge(
3734    config.headers.common || {},
3735    config.headers[config.method] || {},
3736    config.headers
3737  );
3738
3739  utils.forEach(
3740    ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],
3741    function cleanHeaderConfig(method) {
3742      delete config.headers[method];
3743    }
3744  );
3745
3746  var adapter = config.adapter || defaults.adapter;
3747
3748  return adapter(config).then(function onAdapterResolution(response) {
3749    throwIfCancellationRequested(config);
3750
3751    // Transform response data
3752    response.data = transformData.call(
3753      config,
3754      response.data,
3755      response.headers,
3756      config.transformResponse
3757    );
3758
3759    return response;
3760  }, function onAdapterRejection(reason) {
3761    if (!isCancel(reason)) {
3762      throwIfCancellationRequested(config);
3763
3764      // Transform response data
3765      if (reason && reason.response) {
3766        reason.response.data = transformData.call(
3767          config,
3768          reason.response.data,
3769          reason.response.headers,
3770          config.transformResponse
3771        );
3772      }
3773    }
3774
3775    return Promise.reject(reason);
3776  });
3777};
3778
3779
3780/***/ }),
3781
vendor: 1,316 bytes, lines 3782-3834
3782/***/ "./node_modules/axios/lib/core/enhanceError.js":
3783/*!*****************************************************!*\
3784  !*** ./node_modules/axios/lib/core/enhanceError.js ***!
3785  \*****************************************************/
3786/***/ ((module) => {
3787
3788"use strict";
3789
3790
3791/**
3792 * Update an Error with the specified config, error code, and response.
3793 *
3794 * @param {Error} error The error to update.
3795 * @param {Object} config The config.
3796 * @param {string} [code] The error code (for example, 'ECONNABORTED').
3797 * @param {Object} [request] The request.
3798 * @param {Object} [response] The response.
3799 * @returns {Error} The error.
3800 */
3801module.exports = function enhanceError(error, config, code, request, response) {
3802  error.config = config;
3803  if (code) {
3804    error.code = code;
3805  }
3806
3807  error.request = request;
3808  error.response = response;
3809  error.isAxiosError = true;
3810
3811  error.toJSON = function toJSON() {
3812    return {
3813      // Standard
3814      message: this.message,
3815      name: this.name,
3816      // Microsoft
3817      description: this.description,
3818      number: this.number,
3819      // Mozilla
3820      fileName: this.fileName,
3821      lineNumber: this.lineNumber,
3822      columnNumber: this.columnNumber,
3823      stack: this.stack,
3824      // Axios
3825      config: this.config,
3826      code: this.code
3827    };
3828  };
3829  return error;
3830};
3831
3832
3833/***/ }),
3834
vendor: 3,258 bytes, lines 3835-3932
3835/***/ "./node_modules/axios/lib/core/mergeConfig.js":
3836/*!****************************************************!*\
3837  !*** ./node_modules/axios/lib/core/mergeConfig.js ***!
3838  \****************************************************/
3839/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
3840
3841"use strict";
3842
3843
3844var utils = __webpack_require__(/*! ../utils */ "./node_modules/axios/lib/utils.js");
3845
3846/**
3847 * Config-specific merge-function which creates a new config-object
3848 * by merging two configuration objects together.
3849 *
3850 * @param {Object} config1
3851 * @param {Object} config2
3852 * @returns {Object} New object resulting from merging config2 to config1
3853 */
3854module.exports = function mergeConfig(config1, config2) {
3855  // eslint-disable-next-line no-param-reassign
3856  config2 = config2 || {};
3857  var config = {};
3858
3859  var valueFromConfig2Keys = ['url', 'method', 'data'];
3860  var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];
3861  var defaultToConfig2Keys = [
3862    'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',
3863    'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',
3864    'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',
3865    'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',
3866    'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'
3867  ];
3868  var directMergeKeys = ['validateStatus'];
3869
3870  function getMergedValue(target, source) {
3871    if (utils.isPlainObject(target) && utils.isPlainObject(source)) {
3872      return utils.merge(target, source);
3873    } else if (utils.isPlainObject(source)) {
3874      return utils.merge({}, source);
3875    } else if (utils.isArray(source)) {
3876      return source.slice();
3877    }
3878    return source;
3879  }
3880
3881  function mergeDeepProperties(prop) {
3882    if (!utils.isUndefined(config2[prop])) {
3883      config[prop] = getMergedValue(config1[prop], config2[prop]);
3884    } else if (!utils.isUndefined(config1[prop])) {
3885      config[prop] = getMergedValue(undefined, config1[prop]);
3886    }
3887  }
3888
3889  utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {
3890    if (!utils.isUndefined(config2[prop])) {
3891      config[prop] = getMergedValue(undefined, config2[prop]);
3892    }
3893  });
3894
3895  utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);
3896
3897  utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {
3898    if (!utils.isUndefined(config2[prop])) {
3899      config[prop] = getMergedValue(undefined, config2[prop]);
3900    } else if (!utils.isUndefined(config1[prop])) {
3901      config[prop] = getMergedValue(undefined, config1[prop]);
3902    }
3903  });
3904
3905  utils.forEach(directMergeKeys, function merge(prop) {
3906    if (prop in config2) {
3907      config[prop] = getMergedValue(config1[prop], config2[prop]);
3908    } else if (prop in config1) {
3909      config[prop] = getMergedValue(undefined, config1[prop]);
3910    }
3911  });
3912
3913  var axiosKeys = valueFromConfig2Keys
3914    .concat(mergeDeepPropertiesKeys)
3915    .concat(defaultToConfig2Keys)
3916    .concat(directMergeKeys);
3917
3918  var otherKeys = Object
3919    .keys(config1)
3920    .concat(Object.keys(config2))
3921    .filter(function filterAxiosKeys(key) {
3922      return axiosKeys.indexOf(key) === -1;
3923    });
3924
3925  utils.forEach(otherKeys, mergeDeepProperties);
3926
3927  return config;
3928};
3929
3930
3931/***/ }),
3932
vendor: 1,060 bytes, lines 3933-3968
3933/***/ "./node_modules/axios/lib/core/settle.js":
3934/*!***********************************************!*\
3935  !*** ./node_modules/axios/lib/core/settle.js ***!
3936  \***********************************************/
3937/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
3938
3939"use strict";
3940
3941
3942var createError = __webpack_require__(/*! ./createError */ "./node_modules/axios/lib/core/createError.js");
3943
3944/**
3945 * Resolve or reject a Promise based on response status.
3946 *
3947 * @param {Function} resolve A function that resolves the promise.
3948 * @param {Function} reject A function that rejects the promise.
3949 * @param {object} response The response.
3950 */
3951module.exports = function settle(resolve, reject, response) {
3952  var validateStatus = response.config.validateStatus;
3953  if (!response.status || !validateStatus || validateStatus(response.status)) {
3954    resolve(response);
3955  } else {
3956    reject(createError(
3957      'Request failed with status code ' + response.status,
3958      response.config,
3959      null,
3960      response.request,
3961      response
3962    ));
3963  }
3964};
3965
3966
3967/***/ }),
3968
vendor: 1,066 bytes, lines 3969-4001
3969/***/ "./node_modules/axios/lib/core/transformData.js":
3970/*!******************************************************!*\
3971  !*** ./node_modules/axios/lib/core/transformData.js ***!
3972  \******************************************************/
3973/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
3974
3975"use strict";
3976
3977
3978var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js");
3979var defaults = __webpack_require__(/*! ./../defaults */ "./node_modules/axios/lib/defaults.js");
3980
3981/**
3982 * Transform the data for a request or a response
3983 *
3984 * @param {Object|String} data The data to be transformed
3985 * @param {Array} headers The headers for the request or response
3986 * @param {Array|Function} fns A single function or Array of functions
3987 * @returns {*} The resulting transformed data
3988 */
3989module.exports = function transformData(data, headers, fns) {
3990  var context = this || defaults;
3991  /*eslint no-param-reassign:0*/
3992  utils.forEach(fns, function transform(fn) {
3993    data = fn.call(context, data, headers);
3994  });
3995
3996  return data;
3997};
3998
3999
4000/***/ }),
4001
vendor: 4,272 bytes, lines 4002-4147
4002/***/ "./node_modules/axios/lib/defaults.js":
4003/*!********************************************!*\
4004  !*** ./node_modules/axios/lib/defaults.js ***!
4005  \********************************************/
4006/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
4007
4008"use strict";
4009/* provided dependency */ var process = __webpack_require__(/*! process/browser.js */ "./node_modules/process/browser.js");
4010
4011
4012var utils = __webpack_require__(/*! ./utils */ "./node_modules/axios/lib/utils.js");
4013var normalizeHeaderName = __webpack_require__(/*! ./helpers/normalizeHeaderName */ "./node_modules/axios/lib/helpers/normalizeHeaderName.js");
4014var enhanceError = __webpack_require__(/*! ./core/enhanceError */ "./node_modules/axios/lib/core/enhanceError.js");
4015
4016var DEFAULT_CONTENT_TYPE = {
4017  'Content-Type': 'application/x-www-form-urlencoded'
4018};
4019
4020function setContentTypeIfUnset(headers, value) {
4021  if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {
4022    headers['Content-Type'] = value;
4023  }
4024}
4025
4026function getDefaultAdapter() {
4027  var adapter;
4028  if (typeof XMLHttpRequest !== 'undefined') {
4029    // For browsers use XHR adapter
4030    adapter = __webpack_require__(/*! ./adapters/xhr */ "./node_modules/axios/lib/adapters/xhr.js");
4031  } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {
4032    // For node use HTTP adapter
4033    adapter = __webpack_require__(/*! ./adapters/http */ "./node_modules/axios/lib/adapters/xhr.js");
4034  }
4035  return adapter;
4036}
4037
4038function stringifySafely(rawValue, parser, encoder) {
4039  if (utils.isString(rawValue)) {
4040    try {
4041      (parser || JSON.parse)(rawValue);
4042      return utils.trim(rawValue);
4043    } catch (e) {
4044      if (e.name !== 'SyntaxError') {
4045        throw e;
4046      }
4047    }
4048  }
4049
4050  return (encoder || JSON.stringify)(rawValue);
4051}
4052
4053var defaults = {
4054
4055  transitional: {
4056    silentJSONParsing: true,
4057    forcedJSONParsing: true,
4058    clarifyTimeoutError: false
4059  },
4060
4061  adapter: getDefaultAdapter(),
4062
4063  transformRequest: [function transformRequest(data, headers) {
4064    normalizeHeaderName(headers, 'Accept');
4065    normalizeHeaderName(headers, 'Content-Type');
4066
4067    if (utils.isFormData(data) ||
4068      utils.isArrayBuffer(data) ||
4069      utils.isBuffer(data) ||
4070      utils.isStream(data) ||
4071      utils.isFile(data) ||
4072      utils.isBlob(data)
4073    ) {
4074      return data;
4075    }
4076    if (utils.isArrayBufferView(data)) {
4077      return data.buffer;
4078    }
4079    if (utils.isURLSearchParams(data)) {
4080      setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');
4081      return data.toString();
4082    }
4083    if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {
4084      setContentTypeIfUnset(headers, 'application/json');
4085      return stringifySafely(data);
4086    }
4087    return data;
4088  }],
4089
4090  transformResponse: [function transformResponse(data) {
4091    var transitional = this.transitional;
4092    var silentJSONParsing = transitional && transitional.silentJSONParsing;
4093    var forcedJSONParsing = transitional && transitional.forcedJSONParsing;
4094    var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';
4095
4096    if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {
4097      try {
4098        return JSON.parse(data);
4099      } catch (e) {
4100        if (strictJSONParsing) {
4101          if (e.name === 'SyntaxError') {
4102            throw enhanceError(e, this, 'E_JSON_PARSE');
4103          }
4104          throw e;
4105        }
4106      }
4107    }
4108
4109    return data;
4110  }],
4111
4112  /**
4113   * A timeout in milliseconds to abort a request. If set to 0 (default) a
4114   * timeout is not created.
4115   */
4116  timeout: 0,
4117
4118  xsrfCookieName: 'XSRF-TOKEN',
4119  xsrfHeaderName: 'X-XSRF-TOKEN',
4120
4121  maxContentLength: -1,
4122  maxBodyLength: -1,
4123
4124  validateStatus: function validateStatus(status) {
4125    return status >= 200 && status < 300;
4126  }
4127};
4128
4129defaults.headers = {
4130  common: {
4131    'Accept': 'application/json, text/plain, */*'
4132  }
4133};
4134
4135utils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {
4136  defaults.headers[method] = {};
4137});
4138
4139utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {
4140  defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);
4141});
4142
4143module.exports = defaults;
4144
4145
4146/***/ }),
4147
vendor: 503 bytes, lines 4148-4169
4148/***/ "./node_modules/axios/lib/helpers/bind.js":
4149/*!************************************************!*\
4150  !*** ./node_modules/axios/lib/helpers/bind.js ***!
4151  \************************************************/
4152/***/ ((module) => {
4153
4154"use strict";
4155
4156
4157module.exports = function bind(fn, thisArg) {
4158  return function wrap() {
4159    var args = new Array(arguments.length);
4160    for (var i = 0; i < args.length; i++) {
4161      args[i] = arguments[i];
4162    }
4163    return fn.apply(thisArg, args);
4164  };
4165};
4166
4167
4168/***/ }),
4169
vendor: 2,007 bytes, lines 4170-4250
4170/***/ "./node_modules/axios/lib/helpers/buildURL.js":
4171/*!****************************************************!*\
4172  !*** ./node_modules/axios/lib/helpers/buildURL.js ***!
4173  \****************************************************/
4174/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
4175
4176"use strict";
4177
4178
4179var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js");
4180
4181function encode(val) {
4182  return encodeURIComponent(val).
4183    replace(/%3A/gi, ':').
4184    replace(/%24/g, '$').
4185    replace(/%2C/gi, ',').
4186    replace(/%20/g, '+').
4187    replace(/%5B/gi, '[').
4188    replace(/%5D/gi, ']');
4189}
4190
4191/**
4192 * Build a URL by appending params to the end
4193 *
4194 * @param {string} url The base of the url (e.g., http://www.google.com)
4195 * @param {object} [params] The params to be appended
4196 * @returns {string} The formatted url
4197 */
4198module.exports = function buildURL(url, params, paramsSerializer) {
4199  /*eslint no-param-reassign:0*/
4200  if (!params) {
4201    return url;
4202  }
4203
4204  var serializedParams;
4205  if (paramsSerializer) {
4206    serializedParams = paramsSerializer(params);
4207  } else if (utils.isURLSearchParams(params)) {
4208    serializedParams = params.toString();
4209  } else {
4210    var parts = [];
4211
4212    utils.forEach(params, function serialize(val, key) {
4213      if (val === null || typeof val === 'undefined') {
4214        return;
4215      }
4216
4217      if (utils.isArray(val)) {
4218        key = key + '[]';
4219      } else {
4220        val = [val];
4221      }
4222
4223      utils.forEach(val, function parseValue(v) {
4224        if (utils.isDate(v)) {
4225          v = v.toISOString();
4226        } else if (utils.isObject(v)) {
4227          v = JSON.stringify(v);
4228        }
4229        parts.push(encode(key) + '=' + encode(v));
4230      });
4231    });
4232
4233    serializedParams = parts.join('&');
4234  }
4235
4236  if (serializedParams) {
4237    var hashmarkIndex = url.indexOf('#');
4238    if (hashmarkIndex !== -1) {
4239      url = url.slice(0, hashmarkIndex);
4240    }
4241
4242    url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;
4243  }
4244
4245  return url;
4246};
4247
4248
4249/***/ }),
4250
vendor: 655 bytes, lines 4251-4275
4251/***/ "./node_modules/axios/lib/helpers/combineURLs.js":
4252/*!*******************************************************!*\
4253  !*** ./node_modules/axios/lib/helpers/combineURLs.js ***!
4254  \*******************************************************/
4255/***/ ((module) => {
4256
4257"use strict";
4258
4259
4260/**
4261 * Creates a new URL by combining the specified URLs
4262 *
4263 * @param {string} baseURL The base URL
4264 * @param {string} relativeURL The relative URL
4265 * @returns {string} The combined URL
4266 */
4267module.exports = function combineURLs(baseURL, relativeURL) {
4268  return relativeURL
4269    ? baseURL.replace(/\/+$/, '') + '/' + relativeURL.replace(/^\/+/, '')
4270    : baseURL;
4271};
4272
4273
4274/***/ }),
4275
vendor: 1,794 bytes, lines 4276-4339
4276/***/ "./node_modules/axios/lib/helpers/cookies.js":
4277/*!***************************************************!*\
4278  !*** ./node_modules/axios/lib/helpers/cookies.js ***!
4279  \***************************************************/
4280/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
4281
4282"use strict";
4283
4284
4285var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js");
4286
4287module.exports = (
4288  utils.isStandardBrowserEnv() ?
4289
4290  // Standard browser envs support document.cookie
4291    (function standardBrowserEnv() {
4292      return {
4293        write: function write(name, value, expires, path, domain, secure) {
4294          var cookie = [];
4295          cookie.push(name + '=' + encodeURIComponent(value));
4296
4297          if (utils.isNumber(expires)) {
4298            cookie.push('expires=' + new Date(expires).toGMTString());
4299          }
4300
4301          if (utils.isString(path)) {
4302            cookie.push('path=' + path);
4303          }
4304
4305          if (utils.isString(domain)) {
4306            cookie.push('domain=' + domain);
4307          }
4308
4309          if (secure === true) {
4310            cookie.push('secure');
4311          }
4312
4313          document.cookie = cookie.join('; ');
4314        },
4315
4316        read: function read(name) {
4317          var match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)'));
4318          return (match ? decodeURIComponent(match[3]) : null);
4319        },
4320
4321        remove: function remove(name) {
4322          this.write(name, '', Date.now() - 86400000);
4323        }
4324      };
4325    })() :
4326
4327  // Non standard browser env (web workers, react-native) lack needed support.
4328    (function nonStandardBrowserEnv() {
4329      return {
4330        write: function write() {},
4331        read: function read() { return null; },
4332        remove: function remove() {}
4333      };
4334    })()
4335);
4336
4337
4338/***/ }),
4339
vendor: 846 bytes, lines 4340-4364
4340/***/ "./node_modules/axios/lib/helpers/isAbsoluteURL.js":
4341/*!*********************************************************!*\
4342  !*** ./node_modules/axios/lib/helpers/isAbsoluteURL.js ***!
4343  \*********************************************************/
4344/***/ ((module) => {
4345
4346"use strict";
4347
4348
4349/**
4350 * Determines whether the specified URL is absolute
4351 *
4352 * @param {string} url The URL to test
4353 * @returns {boolean} True if the specified URL is absolute, otherwise false
4354 */
4355module.exports = function isAbsoluteURL(url) {
4356  // A URL is considered absolute if it begins with "<scheme>://" or "//" (protocol-relative URL).
4357  // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed
4358  // by any combination of letters, digits, plus, period, or hyphen.
4359  return /^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(url);
4360};
4361
4362
4363/***/ }),
4364
vendor: 622 bytes, lines 4365-4386
4365/***/ "./node_modules/axios/lib/helpers/isAxiosError.js":
4366/*!********************************************************!*\
4367  !*** ./node_modules/axios/lib/helpers/isAxiosError.js ***!
4368  \********************************************************/
4369/***/ ((module) => {
4370
4371"use strict";
4372
4373
4374/**
4375 * Determines whether the payload is an error thrown by Axios
4376 *
4377 * @param {*} payload The value to test
4378 * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false
4379 */
4380module.exports = function isAxiosError(payload) {
4381  return (typeof payload === 'object') && (payload.isAxiosError === true);
4382};
4383
4384
4385/***/ }),
4386
vendor: 2,696 bytes, lines 4387-4465
4387/***/ "./node_modules/axios/lib/helpers/isURLSameOrigin.js":
4388/*!***********************************************************!*\
4389  !*** ./node_modules/axios/lib/helpers/isURLSameOrigin.js ***!
4390  \***********************************************************/
4391/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
4392
4393"use strict";
4394
4395
4396var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js");
4397
4398module.exports = (
4399  utils.isStandardBrowserEnv() ?
4400
4401  // Standard browser envs have full support of the APIs needed to test
4402  // whether the request URL is of the same origin as current location.
4403    (function standardBrowserEnv() {
4404      var msie = /(msie|trident)/i.test(navigator.userAgent);
4405      var urlParsingNode = document.createElement('a');
4406      var originURL;
4407
4408      /**
4409    * Parse a URL to discover it's components
4410    *
4411    * @param {String} url The URL to be parsed
4412    * @returns {Object}
4413    */
4414      function resolveURL(url) {
4415        var href = url;
4416
4417        if (msie) {
4418        // IE needs attribute set twice to normalize properties
4419          urlParsingNode.setAttribute('href', href);
4420          href = urlParsingNode.href;
4421        }
4422
4423        urlParsingNode.setAttribute('href', href);
4424
4425        // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils
4426        return {
4427          href: urlParsingNode.href,
4428          protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',
4429          host: urlParsingNode.host,
4430          search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '',
4431          hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',
4432          hostname: urlParsingNode.hostname,
4433          port: urlParsingNode.port,
4434          pathname: (urlParsingNode.pathname.charAt(0) === '/') ?
4435            urlParsingNode.pathname :
4436            '/' + urlParsingNode.pathname
4437        };
4438      }
4439
4440      originURL = resolveURL(window.location.href);
4441
4442      /**
4443    * Determine if a URL shares the same origin as the current location
4444    *
4445    * @param {String} requestURL The URL to test
4446    * @returns {boolean} True if URL shares the same origin, otherwise false
4447    */
4448      return function isURLSameOrigin(requestURL) {
4449        var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;
4450        return (parsed.protocol === originURL.protocol &&
4451            parsed.host === originURL.host);
4452      };
4453    })() :
4454
4455  // Non standard browser envs (web workers, react-native) lack needed support.
4456    (function nonStandardBrowserEnv() {
4457      return function isURLSameOrigin() {
4458        return true;
4459      };
4460    })()
4461);
4462
4463
4464/***/ }),
4465
vendor: 764 bytes, lines 4466-4488
4466/***/ "./node_modules/axios/lib/helpers/normalizeHeaderName.js":
4467/*!***************************************************************!*\
4468  !*** ./node_modules/axios/lib/helpers/normalizeHeaderName.js ***!
4469  \***************************************************************/
4470/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
4471
4472"use strict";
4473
4474
4475var utils = __webpack_require__(/*! ../utils */ "./node_modules/axios/lib/utils.js");
4476
4477module.exports = function normalizeHeaderName(headers, normalizedName) {
4478  utils.forEach(headers, function processHeader(value, name) {
4479    if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {
4480      headers[normalizedName] = value;
4481      delete headers[name];
4482    }
4483  });
4484};
4485
4486
4487/***/ }),
4488
vendor: 1,772 bytes, lines 4489-4552
4489/***/ "./node_modules/axios/lib/helpers/parseHeaders.js":
4490/*!********************************************************!*\
4491  !*** ./node_modules/axios/lib/helpers/parseHeaders.js ***!
4492  \********************************************************/
4493/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
4494
4495"use strict";
4496
4497
4498var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js");
4499
4500// Headers whose duplicates are ignored by node
4501// c.f. https://nodejs.org/api/http.html#http_message_headers
4502var ignoreDuplicateOf = [
4503  'age', 'authorization', 'content-length', 'content-type', 'etag',
4504  'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',
4505  'last-modified', 'location', 'max-forwards', 'proxy-authorization',
4506  'referer', 'retry-after', 'user-agent'
4507];
4508
4509/**
4510 * Parse headers into an object
4511 *
4512 * ```
4513 * Date: Wed, 27 Aug 2014 08:58:49 GMT
4514 * Content-Type: application/json
4515 * Connection: keep-alive
4516 * Transfer-Encoding: chunked
4517 * ```
4518 *
4519 * @param {String} headers Headers needing to be parsed
4520 * @returns {Object} Headers parsed into an object
4521 */
4522module.exports = function parseHeaders(headers) {
4523  var parsed = {};
4524  var key;
4525  var val;
4526  var i;
4527
4528  if (!headers) { return parsed; }
4529
4530  utils.forEach(headers.split('\n'), function parser(line) {
4531    i = line.indexOf(':');
4532    key = utils.trim(line.substr(0, i)).toLowerCase();
4533    val = utils.trim(line.substr(i + 1));
4534
4535    if (key) {
4536      if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {
4537        return;
4538      }
4539      if (key === 'set-cookie') {
4540        parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);
4541      } else {
4542        parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;
4543      }
4544    }
4545  });
4546
4547  return parsed;
4548};
4549
4550
4551/***/ }),
4552
vendor: 819 bytes, lines 4553-4590
4553/***/ "./node_modules/axios/lib/helpers/spread.js":
4554/*!**************************************************!*\
4555  !*** ./node_modules/axios/lib/helpers/spread.js ***!
4556  \**************************************************/
4557/***/ ((module) => {
4558
4559"use strict";
4560
4561
4562/**
4563 * Syntactic sugar for invoking a function and expanding an array for arguments.
4564 *
4565 * Common use case would be to use `Function.prototype.apply`.
4566 *
4567 *  ```js
4568 *  function f(x, y, z) {}
4569 *  var args = [1, 2, 3];
4570 *  f.apply(null, args);
4571 *  ```
4572 *
4573 * With `spread` this example can be re-written.
4574 *
4575 *  ```js
4576 *  spread(function(x, y, z) {})([1, 2, 3]);
4577 *  ```
4578 *
4579 * @param {Function} callback
4580 * @returns {Function}
4581 */
4582module.exports = function spread(callback) {
4583  return function wrap(arr) {
4584    return callback.apply(null, arr);
4585  };
4586};
4587
4588
4589/***/ }),
4590
vendor: 3,159 bytes, lines 4591-4706
4591/***/ "./node_modules/axios/lib/helpers/validator.js":
4592/*!*****************************************************!*\
4593  !*** ./node_modules/axios/lib/helpers/validator.js ***!
4594  \*****************************************************/
4595/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
4596
4597"use strict";
4598
4599
4600var pkg = __webpack_require__(/*! ./../../package.json */ "./node_modules/axios/package.json");
4601
4602var validators = {};
4603
4604// eslint-disable-next-line func-names
4605['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {
4606  validators[type] = function validator(thing) {
4607    return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;
4608  };
4609});
4610
4611var deprecatedWarnings = {};
4612var currentVerArr = pkg.version.split('.');
4613
4614/**
4615 * Compare package versions
4616 * @param {string} version
4617 * @param {string?} thanVersion
4618 * @returns {boolean}
4619 */
4620function isOlderVersion(version, thanVersion) {
4621  var pkgVersionArr = thanVersion ? thanVersion.split('.') : currentVerArr;
4622  var destVer = version.split('.');
4623  for (var i = 0; i < 3; i++) {
4624    if (pkgVersionArr[i] > destVer[i]) {
4625      return true;
4626    } else if (pkgVersionArr[i] < destVer[i]) {
4627      return false;
4628    }
4629  }
4630  return false;
4631}
4632
4633/**
4634 * Transitional option validator
4635 * @param {function|boolean?} validator
4636 * @param {string?} version
4637 * @param {string} message
4638 * @returns {function}
4639 */
4640validators.transitional = function transitional(validator, version, message) {
4641  var isDeprecated = version && isOlderVersion(version);
4642
4643  function formatMessage(opt, desc) {
4644    return '[Axios v' + pkg.version + '] Transitional option \'' + opt + '\'' + desc + (message ? '. ' + message : '');
4645  }
4646
4647  // eslint-disable-next-line func-names
4648  return function(value, opt, opts) {
4649    if (validator === false) {
4650      throw new Error(formatMessage(opt, ' has been removed in ' + version));
4651    }
4652
4653    if (isDeprecated && !deprecatedWarnings[opt]) {
4654      deprecatedWarnings[opt] = true;
4655      // eslint-disable-next-line no-console
4656      console.warn(
4657        formatMessage(
4658          opt,
4659          ' has been deprecated since v' + version + ' and will be removed in the near future'
4660        )
4661      );
4662    }
4663
4664    return validator ? validator(value, opt, opts) : true;
4665  };
4666};
4667
4668/**
4669 * Assert object's properties type
4670 * @param {object} options
4671 * @param {object} schema
4672 * @param {boolean?} allowUnknown
4673 */
4674
4675function assertOptions(options, schema, allowUnknown) {
4676  if (typeof options !== 'object') {
4677    throw new TypeError('options must be an object');
4678  }
4679  var keys = Object.keys(options);
4680  var i = keys.length;
4681  while (i-- > 0) {
4682    var opt = keys[i];
4683    var validator = schema[opt];
4684    if (validator) {
4685      var value = options[opt];
4686      var result = value === undefined || validator(value, opt, options);
4687      if (result !== true) {
4688        throw new TypeError('option ' + opt + ' must be ' + result);
4689      }
4690      continue;
4691    }
4692    if (allowUnknown !== true) {
4693      throw Error('Unknown option ' + opt);
4694    }
4695  }
4696}
4697
4698module.exports = {
4699  isOlderVersion: isOlderVersion,
4700  assertOptions: assertOptions,
4701  validators: validators
4702};
4703
4704
4705/***/ }),
4706
vendor: 556,467 bytes, lines 4707-17307
4707/***/ "./node_modules/axios/lib/utils.js":
4708/*!*****************************************!*\
4709  !*** ./node_modules/axios/lib/utils.js ***!
4710  \*****************************************/
4711/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
4712
4713"use strict";
4714
4715
4716var bind = __webpack_require__(/*! ./helpers/bind */ "./node_modules/axios/lib/helpers/bind.js");
4717
4718// utils is a library of generic helper functions non-specific to axios
4719
4720var toString = Object.prototype.toString;
4721
4722/**
4723 * Determine if a value is an Array
4724 *
4725 * @param {Object} val The value to test
4726 * @returns {boolean} True if value is an Array, otherwise false
4727 */
4728function isArray(val) {
4729  return toString.call(val) === '[object Array]';
4730}
4731
4732/**
4733 * Determine if a value is undefined
4734 *
4735 * @param {Object} val The value to test
4736 * @returns {boolean} True if the value is undefined, otherwise false
4737 */
4738function isUndefined(val) {
4739  return typeof val === 'undefined';
4740}
4741
4742/**
4743 * Determine if a value is a Buffer
4744 *
4745 * @param {Object} val The value to test
4746 * @returns {boolean} True if value is a Buffer, otherwise false
4747 */
4748function isBuffer(val) {
4749  return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)
4750    && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);
4751}
4752
4753/**
4754 * Determine if a value is an ArrayBuffer
4755 *
4756 * @param {Object} val The value to test
4757 * @returns {boolean} True if value is an ArrayBuffer, otherwise false
4758 */
4759function isArrayBuffer(val) {
4760  return toString.call(val) === '[object ArrayBuffer]';
4761}
4762
4763/**
4764 * Determine if a value is a FormData
4765 *
4766 * @param {Object} val The value to test
4767 * @returns {boolean} True if value is an FormData, otherwise false
4768 */
4769function isFormData(val) {
4770  return (typeof FormData !== 'undefined') && (val instanceof FormData);
4771}
4772
4773/**
4774 * Determine if a value is a view on an ArrayBuffer
4775 *
4776 * @param {Object} val The value to test
4777 * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false
4778 */
4779function isArrayBufferView(val) {
4780  var result;
4781  if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {
4782    result = ArrayBuffer.isView(val);
4783  } else {
4784    result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);
4785  }
4786  return result;
4787}
4788
4789/**
4790 * Determine if a value is a String
4791 *
4792 * @param {Object} val The value to test
4793 * @returns {boolean} True if value is a String, otherwise false
4794 */
4795function isString(val) {
4796  return typeof val === 'string';
4797}
4798
4799/**
4800 * Determine if a value is a Number
4801 *
4802 * @param {Object} val The value to test
4803 * @returns {boolean} True if value is a Number, otherwise false
4804 */
4805function isNumber(val) {
4806  return typeof val === 'number';
4807}
4808
4809/**
4810 * Determine if a value is an Object
4811 *
4812 * @param {Object} val The value to test
4813 * @returns {boolean} True if value is an Object, otherwise false
4814 */
4815function isObject(val) {
4816  return val !== null && typeof val === 'object';
4817}
4818
4819/**
4820 * Determine if a value is a plain Object
4821 *
4822 * @param {Object} val The value to test
4823 * @return {boolean} True if value is a plain Object, otherwise false
4824 */
4825function isPlainObject(val) {
4826  if (toString.call(val) !== '[object Object]') {
4827    return false;
4828  }
4829
4830  var prototype = Object.getPrototypeOf(val);
4831  return prototype === null || prototype === Object.prototype;
4832}
4833
4834/**
4835 * Determine if a value is a Date
4836 *
4837 * @param {Object} val The value to test
4838 * @returns {boolean} True if value is a Date, otherwise false
4839 */
4840function isDate(val) {
4841  return toString.call(val) === '[object Date]';
4842}
4843
4844/**
4845 * Determine if a value is a File
4846 *
4847 * @param {Object} val The value to test
4848 * @returns {boolean} True if value is a File, otherwise false
4849 */
4850function isFile(val) {
4851  return toString.call(val) === '[object File]';
4852}
4853
4854/**
4855 * Determine if a value is a Blob
4856 *
4857 * @param {Object} val The value to test
4858 * @returns {boolean} True if value is a Blob, otherwise false
4859 */
4860function isBlob(val) {
4861  return toString.call(val) === '[object Blob]';
4862}
4863
4864/**
4865 * Determine if a value is a Function
4866 *
4867 * @param {Object} val The value to test
4868 * @returns {boolean} True if value is a Function, otherwise false
4869 */
4870function isFunction(val) {
4871  return toString.call(val) === '[object Function]';
4872}
4873
4874/**
4875 * Determine if a value is a Stream
4876 *
4877 * @param {Object} val The value to test
4878 * @returns {boolean} True if value is a Stream, otherwise false
4879 */
4880function isStream(val) {
4881  return isObject(val) && isFunction(val.pipe);
4882}
4883
4884/**
4885 * Determine if a value is a URLSearchParams object
4886 *
4887 * @param {Object} val The value to test
4888 * @returns {boolean} True if value is a URLSearchParams object, otherwise false
4889 */
4890function isURLSearchParams(val) {
4891  return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;
4892}
4893
4894/**
4895 * Trim excess whitespace off the beginning and end of a string
4896 *
4897 * @param {String} str The String to trim
4898 * @returns {String} The String freed of excess whitespace
4899 */
4900function trim(str) {
4901  return str.trim ? str.trim() : str.replace(/^\s+|\s+$/g, '');
4902}
4903
4904/**
4905 * Determine if we're running in a standard browser environment
4906 *
4907 * This allows axios to run in a web worker, and react-native.
4908 * Both environments support XMLHttpRequest, but not fully standard globals.
4909 *
4910 * web workers:
4911 *  typeof window -> undefined
4912 *  typeof document -> undefined
4913 *
4914 * react-native:
4915 *  navigator.product -> 'ReactNative'
4916 * nativescript
4917 *  navigator.product -> 'NativeScript' or 'NS'
4918 */
4919function isStandardBrowserEnv() {
4920  if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||
4921                                           navigator.product === 'NativeScript' ||
4922                                           navigator.product === 'NS')) {
4923    return false;
4924  }
4925  return (
4926    typeof window !== 'undefined' &&
4927    typeof document !== 'undefined'
4928  );
4929}
4930
4931/**
4932 * Iterate over an Array or an Object invoking a function for each item.
4933 *
4934 * If `obj` is an Array callback will be called passing
4935 * the value, index, and complete array for each item.
4936 *
4937 * If 'obj' is an Object callback will be called passing
4938 * the value, key, and complete object for each property.
4939 *
4940 * @param {Object|Array} obj The object to iterate
4941 * @param {Function} fn The callback to invoke for each item
4942 */
4943function forEach(obj, fn) {
4944  // Don't bother if no value provided
4945  if (obj === null || typeof obj === 'undefined') {
4946    return;
4947  }
4948
4949  // Force an array if not already something iterable
4950  if (typeof obj !== 'object') {
4951    /*eslint no-param-reassign:0*/
4952    obj = [obj];
4953  }
4954
4955  if (isArray(obj)) {
4956    // Iterate over array values
4957    for (var i = 0, l = obj.length; i < l; i++) {
4958      fn.call(null, obj[i], i, obj);
4959    }
4960  } else {
4961    // Iterate over object keys
4962    for (var key in obj) {
4963      if (Object.prototype.hasOwnProperty.call(obj, key)) {
4964        fn.call(null, obj[key], key, obj);
4965      }
4966    }
4967  }
4968}
4969
4970/**
4971 * Accepts varargs expecting each argument to be an object, then
4972 * immutably merges the properties of each object and returns result.
4973 *
4974 * When multiple objects contain the same key the later object in
4975 * the arguments list will take precedence.
4976 *
4977 * Example:
4978 *
4979 * ```js
4980 * var result = merge({foo: 123}, {foo: 456});
4981 * console.log(result.foo); // outputs 456
4982 * ```
4983 *
4984 * @param {Object} obj1 Object to merge
4985 * @returns {Object} Result of all merge properties
4986 */
4987function merge(/* obj1, obj2, obj3, ... */) {
4988  var result = {};
4989  function assignValue(val, key) {
4990    if (isPlainObject(result[key]) && isPlainObject(val)) {
4991      result[key] = merge(result[key], val);
4992    } else if (isPlainObject(val)) {
4993      result[key] = merge({}, val);
4994    } else if (isArray(val)) {
4995      result[key] = val.slice();
4996    } else {
4997      result[key] = val;
4998    }
4999  }
5000
5001  for (var i = 0, l = arguments.length; i < l; i++) {
5002    forEach(arguments[i], assignValue);
5003  }
5004  return result;
5005}
5006
5007/**
5008 * Extends object a by mutably adding to it the properties of object b.
5009 *
5010 * @param {Object} a The object to be extended
5011 * @param {Object} b The object to copy properties from
5012 * @param {Object} thisArg The object to bind function to
5013 * @return {Object} The resulting value of object a
5014 */
5015function extend(a, b, thisArg) {
5016  forEach(b, function assignValue(val, key) {
5017    if (thisArg && typeof val === 'function') {
5018      a[key] = bind(val, thisArg);
5019    } else {
5020      a[key] = val;
5021    }
5022  });
5023  return a;
5024}
5025
5026/**
5027 * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)
5028 *
5029 * @param {string} content with BOM
5030 * @return {string} content value without BOM
5031 */
5032function stripBOM(content) {
5033  if (content.charCodeAt(0) === 0xFEFF) {
5034    content = content.slice(1);
5035  }
5036  return content;
5037}
5038
5039module.exports = {
5040  isArray: isArray,
5041  isArrayBuffer: isArrayBuffer,
5042  isBuffer: isBuffer,
5043  isFormData: isFormData,
5044  isArrayBufferView: isArrayBufferView,
5045  isString: isString,
5046  isNumber: isNumber,
5047  isObject: isObject,
5048  isPlainObject: isPlainObject,
5049  isUndefined: isUndefined,
5050  isDate: isDate,
5051  isFile: isFile,
5052  isBlob: isBlob,
5053  isFunction: isFunction,
5054  isStream: isStream,
5055  isURLSearchParams: isURLSearchParams,
5056  isStandardBrowserEnv: isStandardBrowserEnv,
5057  forEach: forEach,
5058  merge: merge,
5059  extend: extend,
5060  trim: trim,
5061  stripBOM: stripBOM
5062};
5063
5064
5065/***/ }),
5066
5067/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ChatMessage.vue?vue&type=script&lang=js":
5068/*!*****************************************************************************************************************************************************************************************************!*\
5069  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ChatMessage.vue?vue&type=script&lang=js ***!
5070  \*****************************************************************************************************************************************************************************************************/
5071/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
5072
5073"use strict";
5074__webpack_require__.r(__webpack_exports__);
5075/* harmony export */ __webpack_require__.d(__webpack_exports__, {
5076/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
5077/* harmony export */ });
5078/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
5079  name: "ChatMessage",
5080  props: ["message"],
5081  data: function data() {
5082    return {
5083      chatMessage: this.message
5084    };
5085  },
5086  computed: {
5087    canShare: function canShare() {
5088      return this.chatMessage.type != 1 || this.chatMessage.link;
5089    }
5090  },
5091  mounted: function mounted() {
5092    var _this = this;
5093    this.$nextTick(function () {
5094      if (_this.$refs.image) {
5095        _this.$refs.image.addEventListener("load", function () {
5096          _this.$emit("loaded");
5097        });
5098      }
5099      if (_this.$refs.cover) {
5100        _this.$refs.cover.addEventListener("load", function () {
5101          _this.$emit("loaded");
5102        });
5103      }
5104    });
5105  },
5106  methods: {
5107    zoomIn: function zoomIn(chatMessage) {
5108      this.$emit("zoomIn", chatMessage);
5109    },
5110    render: function render() {
5111      this.chatMessage = JSON.parse(JSON.stringify(this.chatMessage));
5112    },
5113    scrollIntoView: function scrollIntoView() {
5114      this.$refs.dom.scrollIntoView();
5115    },
5116    openWindow: function openWindow(url) {
5117      window.open(url);
5118    },
5119    share: function share(chatMessage) {
5120      this.$emit("share", chatMessage);
5121    },
5122    getTimeFormat: function getTimeFormat(datetime) {
5123      var date = datetime.split(" ")[0].split("-");
5124      var time = datetime.split(" ")[1].split(":");
5125      var dateObj = new Date(date[0], date[1] - 1, date[2], time[0], time[1], time[2]);
5126      return dateObj.getFullYear() + "年" + (dateObj.getMonth() + 1) + "月" + dateObj.getDate() + "日 " + dateObj.getHours() + ":" + dateObj.getMinutes();
5127    }
5128  }
5129});
5130
5131/***/ }),
5132
5133/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ChatRoom.vue?vue&type=script&lang=js":
5134/*!**************************************************************************************************************************************************************************************************!*\
5135  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ChatRoom.vue?vue&type=script&lang=js ***!
5136  \**************************************************************************************************************************************************************************************************/
5137/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
5138
5139"use strict";
5140__webpack_require__.r(__webpack_exports__);
5141/* harmony export */ __webpack_require__.d(__webpack_exports__, {
5142/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
5143/* harmony export */ });
5144function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
5145function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
5146function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
5147function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
5148function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
5149function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
5150function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
5151function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
5152function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
5153function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
5154/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
5155  name: "ChatRoom",
5156  props: ["chatRoom"],
5157  data: function data() {
5158    return {
5159      messages: this.chatRoom.messages,
5160      content: "",
5161      page: 1,
5162      pageSize: 20,
5163      next: this.chatRoom.messages.length >= 20,
5164      isLoading: false,
5165      currentChatMessage: null
5166    };
5167  },
5168  mounted: function mounted() {
5169    var _this = this;
5170    window.Echo["private"]("room." + this.chatRoom.id).listen("ChatMessageEvent", function (data) {
5171      if (data.chatMessage.user_id != _this.chatRoom.self_id) {
5172        data.chatMessage.user.is_self = false;
5173        _this.messages.push(data.chatMessage);
5174        _this.$nextTick(function () {
5175          _this.$refs.bottom.scrollIntoView({
5176            behavior: "smooth"
5177          });
5178        });
5179      }
5180    });
5181    this.observer = new IntersectionObserver(function (entries, observer) {
5182      entries.forEach(function (entry) {
5183        if (!entry.isIntersecting || _this.isLoading) return;
5184        _this.loadMessages();
5185      });
5186    }, {
5187      rootMargin: "0px 0px 200px 0px"
5188    });
5189    if (this.next) {
5190      this.observer.observe(this.$refs.top);
5191    }
5192    this.$refs.bottom.scrollIntoView();
5193  },
5194  methods: {
5195    loadMessages: function loadMessages() {
5196      var _this2 = this;
5197      this.isLoading = true;
5198      axios.post("/api/chatMessages/" + this.chatRoom.id, {
5199        offset: this.page * this.pageSize,
5200        limit: this.pageSize
5201      }).then(function (response) {
5202        if (response.data.chatMessages.length > 0) {
5203          var _this2$messages;
5204          (_this2$messages = _this2.messages).unshift.apply(_this2$messages, _toConsumableArray(response.data.chatMessages));
5205          _this2.$nextTick(function () {
5206            _this2.$refs.chatMessages[(_this2.page - 2) * _this2.pageSize].scrollIntoView();
5207          });
5208        }
5209        if (!response.data.next) {
5210          _this2.observer.unobserve(_this2.$refs.top);
5211        }
5212        _this2.page++;
5213        _this2.isLoading = false;
5214      });
5215    },
5216    pickFile: function pickFile(media) {
5217      var _this3 = this;
5218      return _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
5219        return _regeneratorRuntime().wrap(function _callee$(_context) {
5220          while (1) switch (_context.prev = _context.next) {
5221            case 0:
5222              _this3.$root.$refs.socialUploadingModal.show();
5223              axios.post("/chat", {
5224                room_id: _this3.chatRoom.id,
5225                file: media
5226              }).then(function (response) {
5227                if (response.data.result) {
5228                  var _this3$messages;
5229                  (_this3$messages = _this3.messages).push.apply(_this3$messages, _toConsumableArray(response.data.chatMessages));
5230                }
5231              })["finally"](function () {
5232                _this3.$root.$refs.socialUploadingModal.hide();
5233              });
5234            case 2:
5235            case "end":
5236              return _context.stop();
5237          }
5238        }, _callee);
5239      }))();
5240    },
5241    selectFile: function selectFile() {
5242      this.$parent.$refs.socialUpload.show();
5243    },
5244    fileLoaded: function fileLoaded() {
5245      this.$refs.bottom.scrollIntoView();
5246    },
5247    zoomIn: function zoomIn(chatMessage) {
5248      this.$parent.$refs.chatZoominModal.show(chatMessage);
5249    },
5250    startShare: function startShare(chatMessage) {
5251      this.currentChatMessage = chatMessage;
5252      this.$parent.$refs.shareModal.show();
5253    },
5254    share: function share(userIds, content) {
5255      var _this4 = this;
5256      var params = {
5257        user_ids: userIds,
5258        content: content,
5259        share_type: this.currentChatMessage.type
5260      };
5261      if (this.currentChatMessage.type == 1) {
5262        params.share_object_id = this.currentChatMessage.link.id;
5263      } else if (this.currentChatMessage.type == 2 || this.currentChatMessage.type == 3) {
5264        params.share_object_id = this.currentChatMessage.file.id;
5265      } else if (this.currentChatMessage.type == 4) {
5266        params.share_object_id = this.currentChatMessage.social_post.id;
5267      } else if (this.currentChatMessage.type == 5) {
5268        params.share_object_id = this.currentChatMessage.personal.id;
5269      }
5270      axios.post("/chat", params).then(function (response) {
5271        if (response.data.result) {
5272          var object = "";
5273          if (_this4.currentChatMessage.type == 1) {
5274            object = "連結";
5275          } else if (_this4.currentChatMessage.type == 2) {
5276            object = "圖片";
5277          } else if (_this4.currentChatMessage.type == 3) {
5278            object = "影片";
5279          } else if (_this4.currentChatMessage.type == 4) {
5280            object = "貼文";
5281          } else if (_this4.currentChatMessage.type == 5) {
5282            object = "個人檔案";
5283          }
5284          _this4.$root.$refs.socialCompleteModal.success(object + "已分享");
5285        } else {
5286          _this4.$root.$refs.socialCompleteModal.fail("分享失敗");
5287        }
5288      });
5289    },
5290    unlock: function unlock() {
5291      axios.post("/user/unlock", {
5292        user_id: this.chatRoom.chat_with.id
5293      });
5294      this.chatRoom.chat_with.is_lock = false;
5295    },
5296    send: function send() {
5297      var _this5 = this;
5298      axios.post("/chat", {
5299        room_id: this.chatRoom.id,
5300        content: this.content
5301      }).then(function (response) {
5302        if (response.data.result) {
5303          var _this5$messages;
5304          (_this5$messages = _this5.messages).push.apply(_this5$messages, _toConsumableArray(response.data.chatMessages));
5305          _this5.$nextTick(function () {
5306            _this5.$refs.bottom.scrollIntoView({
5307              behavior: "smooth"
5308            });
5309          });
5310        }
5311      });
5312      this.content = "";
5313    },
5314    destroy: function destroy() {
5315      this.$parent.$refs.destroyConfirmModal.show();
5316    }
5317  }
5318});
5319
5320/***/ }),
5321
5322/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ChatRoomList.vue?vue&type=script&lang=js":
5323/*!******************************************************************************************************************************************************************************************************!*\
5324  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ChatRoomList.vue?vue&type=script&lang=js ***!
5325  \******************************************************************************************************************************************************************************************************/
5326/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
5327
5328"use strict";
5329__webpack_require__.r(__webpack_exports__);
5330/* harmony export */ __webpack_require__.d(__webpack_exports__, {
5331/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
5332/* harmony export */ });
5333/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
5334  name: "ChatRoomList",
5335  data: function data() {
5336    return {
5337      userId: null,
5338      chatRooms: [],
5339      keyword: "",
5340      currentChatRoom: null
5341    };
5342  },
5343  computed: {
5344    showChatRooms: function showChatRooms() {
5345      var _this = this;
5346      return this.chatRooms.filter(function (chatRoom) {
5347        return _this.keyword == "" || chatRoom.chat_with.name.toLowerCase().includes(_this.keyword.toLowerCase());
5348      }).sort(function (a, b) {
5349        if (a.updated_at < b.updated_at) {
5350          return 1;
5351        }
5352        if (a.updated_at > b.updated_at) {
5353          return -1;
5354        }
5355        return 0;
5356      });
5357    }
5358  },
5359  mounted: function mounted() {
5360    var _this2 = this;
5361    axios.get("/chat/rooms").then(function (response) {
5362      if (response.data.result) {
5363        _this2.userId = response.data.userId;
5364        _this2.chatRooms = response.data.chatRooms;
5365        window.Echo["private"]("user." + response.data.userId).listen("ChatRoomEvent", function (data) {
5366          _this2.updateChatRoom(data.chatWith, data.chatMessage);
5367        });
5368      }
5369    });
5370  },
5371  methods: {
5372    selectChatRoom: function selectChatRoom(chatRoom) {
5373      console.log(chatRoom);
5374      if (this.chatRooms.every(function (room) {
5375        return room.id != chatRoom.id;
5376      })) {
5377        this.chatRooms.unshift(chatRoom);
5378      }
5379      this.currentChatRoom = chatRoom;
5380      this.$emit("select", chatRoom);
5381    },
5382    leaveChatRoom: function leaveChatRoom() {
5383      this.currentChatRoom = null;
5384    },
5385    destroyChatRoom: function destroyChatRoom() {
5386      var _this3 = this;
5387      this.chatRooms = this.chatRooms.filter(function (room) {
5388        return room.id != _this3.currentChatRoom.id;
5389      });
5390      this.currentChatRoom = null;
5391    },
5392    setChatRoom: function setChatRoom(chatRoom) {
5393      this.currentChatRoom = chatRoom;
5394      this.$emit("set", chatRoom);
5395    },
5396    updateChatRoom: function updateChatRoom(chatWith, chatMessage) {
5397      var index = this.chatRooms.findIndex(function (chatRooom) {
5398        return chatRooom.id == chatMessage.chat_room_id;
5399      });
5400      if (index == -1) {
5401        this.chatRooms.push({
5402          id: chatMessage.chat_room_id,
5403          chat_with: chatWith,
5404          last_message: chatMessage,
5405          updated_at: chatMessage.updated_at
5406        });
5407      } else {
5408        this.chatRooms[index].last_message = chatMessage;
5409        this.chatRooms[index].updated_at = chatMessage.updated_at;
5410        this.chatRooms = JSON.parse(JSON.stringify(this.chatRooms));
5411      }
5412    }
5413  }
5414});
5415
5416/***/ }),
5417
5418/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ChatRoomSetting.vue?vue&type=script&lang=js":
5419/*!*********************************************************************************************************************************************************************************************************!*\
5420  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ChatRoomSetting.vue?vue&type=script&lang=js ***!
5421  \*********************************************************************************************************************************************************************************************************/
5422/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
5423
5424"use strict";
5425__webpack_require__.r(__webpack_exports__);
5426/* harmony export */ __webpack_require__.d(__webpack_exports__, {
5427/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
5428/* harmony export */ });
5429/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
5430  name: "ChatRoomSetting",
5431  props: ["chatRoom"],
5432  methods: {
5433    lock: function lock() {
5434      axios.post("/user/lock", {
5435        user_id: this.chatRoom.chat_with.id
5436      });
5437      this.chatRoom.chat_with.is_lock = true;
5438    },
5439    unlock: function unlock() {
5440      axios.post("/user/unlock", {
5441        user_id: this.chatRoom.chat_with.id
5442      });
5443      this.chatRoom.chat_with.is_lock = false;
5444    },
5445    report: function report() {
5446      this.$parent.$refs.reportModal.show(this.chatRoom.chat_with.id);
5447    },
5448    destroy: function destroy() {
5449      this.$parent.$refs.destroyConfirmModal.show();
5450    }
5451  }
5452});
5453
5454/***/ }),
5455
5456/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ChatSelectUserModal.vue?vue&type=script&lang=js":
5457/*!*************************************************************************************************************************************************************************************************************!*\
5458  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ChatSelectUserModal.vue?vue&type=script&lang=js ***!
5459  \*************************************************************************************************************************************************************************************************************/
5460/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
5461
5462"use strict";
5463__webpack_require__.r(__webpack_exports__);
5464/* harmony export */ __webpack_require__.d(__webpack_exports__, {
5465/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
5466/* harmony export */ });
5467/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
5468  name: "ChatSelectUserModal",
5469  props: ["title", "textRequired"],
5470  data: function data() {
5471    return {
5472      users: [],
5473      keyword: "",
5474      content: ""
5475    };
5476  },
5477  computed: {
5478    showUsers: function showUsers() {
5479      var _this = this;
5480      return this.users.filter(function (user) {
5481        return _this.keyword == "" || user.name.toLowerCase().includes(_this.keyword.toLowerCase());
5482      });
5483    },
5484    selectedUsers: function selectedUsers() {
5485      return this.users.filter(function (user) {
5486        return user.isChecked;
5487      });
5488    },
5489    canSubmit: function canSubmit() {
5490      if (this.textRequired && this.content == "") {
5491        return false;
5492      }
5493      return this.selectedUsers.length > 0;
5494    }
5495  },
5496  mounted: function mounted() {
5497    var _this2 = this;
5498    axios.post("/chat/users").then(function (response) {
5499      if (response.data.result) {
5500        _this2.users = response.data.users;
5501      }
5502    });
5503    $(this.$refs.modal).on("hidden.bs.modal", function () {
5504      _this2.users.forEach(function (user) {
5505        return user.isChecked = false;
5506      });
5507      _this2.keyword = "";
5508      _this2.content = "";
5509    });
5510  },
5511  methods: {
5512    show: function show() {
5513      $(this.$refs.modal).modal("show");
5514    },
5515    hide: function hide() {
5516      $(this.$refs.modal).modal("hide");
5517    },
5518    selectUser: function selectUser(user) {
5519      if (!user.isChecked) {
5520        user.isChecked = true;
5521      } else {
5522        user.isChecked = false;
5523      }
5524      this.users = JSON.parse(JSON.stringify(this.users));
5525    },
5526    removeUser: function removeUser(user) {
5527      user.isChecked = false;
5528      this.users = JSON.parse(JSON.stringify(this.users));
5529    },
5530    submit: function submit() {
5531      this.$emit("submit", this.selectedUsers.map(function (user) {
5532        return user.id;
5533      }), this.content);
5534      this.hide();
5535    }
5536  }
5537});
5538
5539/***/ }),
5540
5541/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ChatZoominModal.vue?vue&type=script&lang=js":
5542/*!*********************************************************************************************************************************************************************************************************!*\
5543  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ChatZoominModal.vue?vue&type=script&lang=js ***!
5544  \*********************************************************************************************************************************************************************************************************/
5545/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
5546
5547"use strict";
5548__webpack_require__.r(__webpack_exports__);
5549/* harmony export */ __webpack_require__.d(__webpack_exports__, {
5550/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
5551/* harmony export */ });
5552/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
5553  name: "ChatZoominModal",
5554  data: function data() {
5555    return {
5556      message: null
5557    };
5558  },
5559  methods: {
5560    show: function show(message) {
5561      this.message = message;
5562      $(this.$refs.modal).modal("show");
5563    },
5564    hide: function hide() {
5565      $(this.$refs.modal).modal("hide");
5566    }
5567  }
5568});
5569
5570/***/ }),
5571
5572/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/CollectList.vue?vue&type=script&lang=js":
5573/*!*****************************************************************************************************************************************************************************************************!*\
5574  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/CollectList.vue?vue&type=script&lang=js ***!
5575  \*****************************************************************************************************************************************************************************************************/
5576/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
5577
5578"use strict";
5579__webpack_require__.r(__webpack_exports__);
5580/* harmony export */ __webpack_require__.d(__webpack_exports__, {
5581/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
5582/* harmony export */ });
5583/* harmony import */ var _Post__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Post */ "./resources/js/components/Post.vue");
5584function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
5585function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
5586function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
5587function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
5588function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
5589function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
5590
5591/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
5592  name: "CollectList",
5593  props: ["posts", "next", "advertisement2"],
5594  components: {
5595    Post: _Post__WEBPACK_IMPORTED_MODULE_0__["default"]
5596  },
5597  data: function data() {
5598    return {
5599      showPosts: this.posts,
5600      sorts: [{
5601        name: "收藏日期從近到遠",
5602        order: "user_collect_posts.created_at",
5603        direction: "desc"
5604      }, {
5605        name: "收藏日期從遠到近",
5606        order: "user_collect_posts.created_at",
5607        direction: "asc"
5608      }, {
5609        name: "文章日期從近到遠",
5610        order: "posts.published_at",
5611        direction: "desc"
5612      }, {
5613        name: "文章日期從遠到近",
5614        order: "posts.published_at",
5615        direction: "asc"
5616      }],
5617      currentSort: null,
5618      direction: "desc",
5619      keyword: "",
5620      selectedCategories: [],
5621      maxPage: 1,
5622      pageSize: 18,
5623      hasNext: this.next,
5624      isLoading: false,
5625      showCanvas: false
5626    };
5627  },
5628  computed: {
5629    categories: function categories() {
5630      return _toConsumableArray(new Set(this.showPosts.map(function (post) {
5631        return post.category_name;
5632      })));
5633    },
5634    filterPosts: function filterPosts() {
5635      var _this = this;
5636      return this.showPosts.filter(function (post) {
5637        return (!_this.keyword || post.title.includes(_this.keyword)) && (_this.selectedCategories.length == 0 || _this.selectedCategories.includes(post.category_name));
5638      });
5639    }
5640  },
5641  created: function created() {
5642    this.currentSort = this.sorts[0];
5643  },
5644  mounted: function mounted() {
5645    if (this.hasNext) {
5646      window.addEventListener("scroll", this.scroll);
5647    }
5648  },
5649  destroyed: function destroyed() {
5650    window.removeEventListener("scroll", this.scroll);
5651  },
5652  methods: {
5653    scroll: function scroll() {
5654      if (!this.isLoading && $(window).scrollTop() > $(document).height() * 0.3) {
5655        this.load();
5656      }
5657    },
5658    load: function load() {
5659      var _this2 = this;
5660      this.isLoading = true;
5661      axios.post("/api/post/collect", {
5662        offset: this.maxPage * this.pageSize,
5663        limit: this.pageSize,
5664        order: this.currentSort.order,
5665        direction: this.currentSort.direction
5666      }).then(function (response) {
5667        if (response.data.posts.length > 0) {
5668          var _this2$showPosts;
5669          (_this2$showPosts = _this2.showPosts).push.apply(_this2$showPosts, _toConsumableArray(response.data.posts));
5670          _this2.maxPage++;
5671        }
5672        if (!response.data.next) {
5673          window.removeEventListener("scroll", _this2.scroll);
5674        }
5675        _this2.isLoading = false;
5676      });
5677    },
5678    removeCategory: function removeCategory(index) {
5679      this.selectedCategories.splice(index, 1);
5680    },
5681    clearConditions: function clearConditions() {
5682      this.keyword = "";
5683      this.selectedCategories = [];
5684    },
5685    changeSort: function changeSort(sort) {
5686      this.currentSort = sort;
5687      this.maxPage = 0;
5688      this.showPosts = [];
5689      this.load();
5690    }
5691  }
5692});
5693
5694/***/ }),
5695
5696/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/CompleteModal.vue?vue&type=script&lang=js":
5697/*!*******************************************************************************************************************************************************************************************************!*\
5698  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/CompleteModal.vue?vue&type=script&lang=js ***!
5699  \*******************************************************************************************************************************************************************************************************/
5700/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
5701
5702"use strict";
5703__webpack_require__.r(__webpack_exports__);
5704/* harmony export */ __webpack_require__.d(__webpack_exports__, {
5705/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
5706/* harmony export */ });
5707/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
5708  name: "CompleteModal",
5709  data: function data() {
5710    return {
5711      message: "",
5712      isSuccess: true
5713    };
5714  },
5715  methods: {
5716    success: function success(message) {
5717      this.isSuccess = true;
5718      this.show(message);
5719    },
5720    fail: function fail(message) {
5721      this.isSuccess = false;
5722      this.show(message);
5723    },
5724    show: function show(message) {
5725      var _this = this;
5726      this.message = message;
5727      this.$nextTick(function () {
5728        $(_this.$refs.modal).modal("show");
5729        setTimeout(_this.hide, 1000);
5730      });
5731    },
5732    hide: function hide() {
5733      $(this.$refs.modal).modal("hide");
5734      this.message = "";
5735    }
5736  }
5737});
5738
5739/***/ }),
5740
5741/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/CopyUrlButton.vue?vue&type=script&lang=js":
5742/*!*******************************************************************************************************************************************************************************************************!*\
5743  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/CopyUrlButton.vue?vue&type=script&lang=js ***!
5744  \*******************************************************************************************************************************************************************************************************/
5745/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
5746
5747"use strict";
5748__webpack_require__.r(__webpack_exports__);
5749/* harmony export */ __webpack_require__.d(__webpack_exports__, {
5750/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
5751/* harmony export */ });
5752/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
5753  name: "CopyUrlButton",
5754  props: ["url"],
5755  data: function data() {
5756    return {
5757      message: null
5758    };
5759  },
5760  methods: {
5761    copy: function copy() {
5762      navigator.clipboard.writeText(this.url);
5763      this.$root.$refs.completeModal.success("連結已複製");
5764    }
5765  }
5766});
5767
5768/***/ }),
5769
5770/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/Coupon.vue?vue&type=script&lang=js":
5771/*!************************************************************************************************************************************************************************************************!*\
5772  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/Coupon.vue?vue&type=script&lang=js ***!
5773  \************************************************************************************************************************************************************************************************/
5774/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
5775
5776"use strict";
5777__webpack_require__.r(__webpack_exports__);
5778/* harmony export */ __webpack_require__.d(__webpack_exports__, {
5779/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
5780/* harmony export */ });
5781/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
5782  name: "Coupon",
5783  props: {
5784    coupon: {
5785      "default": null
5786    },
5787    lazy: {
5788      type: Boolean,
5789      "default": false
5790    }
5791  },
5792  computed: {
5793    submitUrl: function submitUrl() {
5794      return this.coupon.use_url ? this.coupon.use_url : this.coupon.url;
5795    },
5796    submitText: function submitText() {
5797      return this.coupon.use_url ? "立即使用" : "立即兌換";
5798    },
5799    canOnlyRedeemWithCode: function canOnlyRedeemWithCode() {
5800      return this.coupon.rules && this.coupon.rules.redeemable_with.code ? true : false;
5801    },
5802    canMarkAsDeleted: function canMarkAsDeleted() {
5803      return this.coupon.user_coupon_id && (this.coupon.is_used && (!this.coupon.user_coupon_delivery_status || this.coupon.user_coupon_delivery_status == 'delivering') || this.coupon.is_expired) ? true : false;
5804    }
5805  },
5806  methods: {
5807    markAsDeleted: function markAsDeleted() {
5808      var path = '/user/coupon/' + this.coupon.user_coupon_id + '/info';
5809      var info = {
5810        'deleted': true
5811      };
5812      axios.put(path, info).then(function (response) {
5813        // alert(JSON.stringify(response.data, null, 4));
5814        location.reload();
5815      });
5816    }
5817  }
5818});
5819
5820/***/ }),
5821
5822/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/CouponList.vue?vue&type=script&lang=js":
5823/*!****************************************************************************************************************************************************************************************************!*\
5824  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/CouponList.vue?vue&type=script&lang=js ***!
5825  \****************************************************************************************************************************************************************************************************/
5826/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
5827
5828"use strict";
5829__webpack_require__.r(__webpack_exports__);
5830/* harmony export */ __webpack_require__.d(__webpack_exports__, {
5831/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
5832/* harmony export */ });
5833function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
5834function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
5835function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
5836function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
5837function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
5838function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
5839/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
5840  name: "CollectList",
5841  props: ["userPoints", "coupons", "next", "title", "englishTitle", "sorts", "apiUrl", "advertisement2"],
5842  data: function data() {
5843    return {
5844      showCoupons: this.coupons,
5845      currentSort: null,
5846      direction: "desc",
5847      keyword: "",
5848      prices: [{
5849        min: 0,
5850        max: 500
5851      }, {
5852        min: 500,
5853        max: 1000
5854      }, {
5855        min: 1000,
5856        max: 1500
5857      }, {
5858        min: 1500,
5859        max: 2000
5860      }, {
5861        min: 2000
5862      }],
5863      selectedPrice: null,
5864      selectedAreas: [],
5865      selectedTypes: [],
5866      maxPage: 1,
5867      pageSize: 18,
5868      hasNext: this.next,
5869      isLoading: false,
5870      showCanvas: false,
5871      exchangeCode: "",
5872      exchangeResult: false,
5873      showExchangeMessage: false
5874    };
5875  },
5876  computed: {
5877    areas: function areas() {
5878      return _toConsumableArray(new Set(this.showCoupons.map(function (coupon) {
5879        return coupon.area_name;
5880      })));
5881    },
5882    types: function types() {
5883      return _toConsumableArray(new Set(this.showCoupons.map(function (coupon) {
5884        return coupon.type_name;
5885      })));
5886    },
5887    pageCount: function pageCount() {
5888      var pageCount = Math.ceil(this.filterCoupons.length / this.pageSize);
5889      if (pageCount === 0) {
5890        pageCount = 1;
5891      }
5892      return pageCount;
5893    },
5894    filterCoupons: function filterCoupons() {
5895      var _this = this;
5896      console.log(this.showCoupons);
5897      return this.showCoupons.filter(function (coupon) {
5898        return (!_this.keyword || coupon.name.includes(_this.keyword)) && (!_this.selectedPrice || _this.selectedPrice.min <= coupon.point && coupon.point < _this.selectedPrice.max) && (_this.selectedAreas.length === 0 || _this.selectedAreas.includes(coupon.area_name)) && (_this.selectedTypes.length === 0 || _this.selectedTypes.includes(coupon.type_name));
5899      });
5900    }
5901  },
5902  created: function created() {
5903    this.currentSort = this.sorts[0];
5904  },
5905  mounted: function mounted() {
5906    if (this.hasNext) {
5907      window.addEventListener("scroll", this.scroll);
5908    }
5909  },
5910  destroyed: function destroyed() {
5911    window.removeEventListener("scroll", this.scroll);
5912  },
5913  methods: {
5914    scroll: function scroll() {
5915      if (!this.isLoading && $(window).scrollTop() > $(document).height() * 0.3) {
5916        this.load();
5917      }
5918    },
5919    load: function load() {
5920      var _this2 = this;
5921      this.isLoading = true;
5922      axios.post(this.apiUrl, {
5923        offset: this.maxPage * this.pageSize,
5924        limit: this.pageSize,
5925        order: this.currentSort.order,
5926        direction: this.currentSort.direction
5927      }).then(function (response) {
5928        if (response.data.coupons.length > 0) {
5929          var _this2$showCoupons;
5930          (_this2$showCoupons = _this2.showCoupons).push.apply(_this2$showCoupons, _toConsumableArray(response.data.coupons));
5931          _this2.maxPage++;
5932        }
5933        if (!response.data.next) {
5934          window.removeEventListener("scroll", _this2.scroll);
5935        }
5936        _this2.isLoading = false;
5937      });
5938    },
5939    exchange: function exchange() {
5940      var _this3 = this;
5941      axios.post("/coupon/code", {
5942        code: this.exchangeCode
5943      }).then(function (response) {
5944        _this3.exchangeResult = response.data.result;
5945        _this3.showExchangeMessage = true;
5946        _this3.timeout = setTimeout(function () {
5947          clearTimeout(_this3.timeout);
5948          _this3.showExchangeMessage = false;
5949        }, 3000);
5950      });
5951    },
5952    getPriceLabel: function getPriceLabel(price) {
5953      return price.min + (price.max ? " - " + price.max : "以上");
5954    },
5955    removePrice: function removePrice() {
5956      this.selectedPrice = null;
5957    },
5958    removeAreas: function removeAreas(index) {
5959      this.selectedAreas.splice(index, 1);
5960    },
5961    removeTypes: function removeTypes(index) {
5962      this.selectedTypes.splice(index, 1);
5963    },
5964    clearConditions: function clearConditions() {
5965      this.keyword = "";
5966      this.selectedPrice = null;
5967      this.selectedAreas = [];
5968      this.selectedTypes = [];
5969    },
5970    changeSort: function changeSort(sort) {
5971      this.currentSort = sort;
5972      this.maxPage = 0;
5973      this.showCoupons = [];
5974      this.load();
5975    }
5976  }
5977});
5978
5979/***/ }),
5980
5981/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/NewUser.vue?vue&type=script&lang=js":
5982/*!*************************************************************************************************************************************************************************************************!*\
5983  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/NewUser.vue?vue&type=script&lang=js ***!
5984  \*************************************************************************************************************************************************************************************************/
5985/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
5986
5987"use strict";
5988__webpack_require__.r(__webpack_exports__);
5989/* harmony export */ __webpack_require__.d(__webpack_exports__, {
5990/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
5991/* harmony export */ });
5992/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
5993  name: "NewUser",
5994  props: ["socialPost", "index"]
5995});
5996
5997/***/ }),
5998
5999/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/Post.vue?vue&type=script&lang=js":
6000/*!**********************************************************************************************************************************************************************************************!*\
6001  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/Post.vue?vue&type=script&lang=js ***!
6002  \**********************************************************************************************************************************************************************************************/
6003/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6004
6005"use strict";
6006__webpack_require__.r(__webpack_exports__);
6007/* harmony export */ __webpack_require__.d(__webpack_exports__, {
6008/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
6009/* harmony export */ });
6010/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
6011  name: "Post",
6012  props: {
6013    post: {
6014      "default": null
6015    },
6016    imageClass: {
6017      "default": ""
6018    },
6019    lazy: {
6020      type: Boolean,
6021      "default": false
6022    }
6023  },
6024  data: function data() {
6025    return {
6026      isCollect: this.post.is_login && this.post.is_collect
6027    };
6028  },
6029  methods: {
6030    collect: function collect() {
6031      if (!this.post.is_login) {
6032        $("#notLoginModal").modal("show");
6033        return;
6034      }
6035      this.isCollect = true;
6036      axios.post("/post/collect", {
6037        post_id: this.post.id
6038      });
6039    },
6040    uncollect: function uncollect() {
6041      if (!this.post.is_login) {
6042        $("#notLoginModal").modal("show");
6043        return;
6044      }
6045      this.isCollect = false;
6046      axios.post("/post/uncollect", {
6047        post_id: this.post.id
6048      });
6049    },
6050    redirect: function redirect() {
6051      window.location.href = this.post.url;
6052    }
6053  }
6054});
6055
6056/***/ }),
6057
6058/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/PostComment.vue?vue&type=script&lang=js":
6059/*!*****************************************************************************************************************************************************************************************************!*\
6060  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/PostComment.vue?vue&type=script&lang=js ***!
6061  \*****************************************************************************************************************************************************************************************************/
6062/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6063
6064"use strict";
6065__webpack_require__.r(__webpack_exports__);
6066/* harmony export */ __webpack_require__.d(__webpack_exports__, {
6067/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
6068/* harmony export */ });
6069/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
6070  name: "PostComment",
6071  props: ["comment"],
6072  data: function data() {
6073    return {
6074      showControls: false,
6075      showEdit: false,
6076      content: ""
6077    };
6078  },
6079  methods: {
6080    nl2br: function nl2br(str, replaceMode, isXhtml) {
6081      var breakTag = isXhtml ? "<br />" : "<br>";
6082      var replaceStr = replaceMode ? "$1" + breakTag : "$1" + breakTag + "$2";
6083      return (str + "").replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, replaceStr);
6084    },
6085    edit: function edit() {
6086      this.content = this.comment.content;
6087      this.showEdit = true;
6088    },
6089    save: function save() {
6090      axios.put(this.comment.update_url, {
6091        content: this.content
6092      });
6093      this.comment.content = this.content;
6094      this.showEdit = false;
6095      this.content = "";
6096    },
6097    destroy: function destroy() {
6098      axios["delete"](this.comment.delete_url);
6099      this.$destroy();
6100      this.$el.parentNode.removeChild(this.$el);
6101    }
6102  }
6103});
6104
6105/***/ }),
6106
6107/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/PostCommentList.vue?vue&type=script&lang=js":
6108/*!*********************************************************************************************************************************************************************************************************!*\
6109  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/PostCommentList.vue?vue&type=script&lang=js ***!
6110  \*********************************************************************************************************************************************************************************************************/
6111/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6112
6113"use strict";
6114__webpack_require__.r(__webpack_exports__);
6115/* harmony export */ __webpack_require__.d(__webpack_exports__, {
6116/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
6117/* harmony export */ });
6118/* harmony import */ var _PostComment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./PostComment */ "./resources/js/components/PostComment.vue");
6119/* harmony import */ var _PostReplyList__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./PostReplyList */ "./resources/js/components/PostReplyList.vue");
6120function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
6121function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
6122function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
6123function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
6124function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
6125function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
6126
6127
6128/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
6129  name: "PostCommentList",
6130  props: ["user", "postId", "initialComments", "commentCount", "isAdmin"],
6131  components: {
6132    PostComment: _PostComment__WEBPACK_IMPORTED_MODULE_0__["default"],
6133    PostReplyList: _PostReplyList__WEBPACK_IMPORTED_MODULE_1__["default"]
6134  },
6135  data: function data() {
6136    return {
6137      newComments: [],
6138      showComments: this.initialComments,
6139      totalCount: this.commentCount,
6140      maxPage: 1,
6141      pageSize: 3,
6142      isLoading: false,
6143      content: ""
6144    };
6145  },
6146  computed: {
6147    comments: function comments() {
6148      return this.showComments.concat(this.newComments);
6149    }
6150  },
6151  methods: {
6152    load: function load() {
6153      var _this = this;
6154      this.maxPage++;
6155      this.isLoading = true;
6156      axios.get("/post/comment", {
6157        params: {
6158          post_id: this.postId,
6159          offset: (this.maxPage - 1) * this.pageSize,
6160          limit: this.pageSize
6161        }
6162      }).then(function (response) {
6163        var _this$showComments;
6164        (_this$showComments = _this.showComments).push.apply(_this$showComments, _toConsumableArray(response.data.comments));
6165        _this.totalCount = response.data.totalCount;
6166        _this.isLoading = false;
6167      });
6168    },
6169    create: function create() {
6170      var _this2 = this;
6171      /* if (!this.user) {
6172        $("#notLoginModal").modal("show");
6173        return;
6174      } */
6175
6176      axios.post("/post/comment", {
6177        post_id: this.postId,
6178        content: this.content
6179      }).then(function (response) {
6180        if (response.data.result) {
6181          _this2.newComments.push(response.data.comment);
6182        }
6183      });
6184      this.content = "";
6185    },
6186    deleteComment: function deleteComment(commentId) {
6187      var _this3 = this;
6188      axios["delete"]("/post/comment/".concat(commentId)).then(function (response) {
6189        if (response.data.result) {
6190          _this3.showComments = _this3.showComments.filter(function (comment) {
6191            return comment.id !== commentId;
6192          });
6193          _this3.newComments = _this3.newComments.filter(function (comment) {
6194            return comment.id !== commentId;
6195          });
6196        }
6197      });
6198    }
6199  }
6200});
6201
6202/***/ }),
6203
6204/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/PostList.vue?vue&type=script&lang=js":
6205/*!**************************************************************************************************************************************************************************************************!*\
6206  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/PostList.vue?vue&type=script&lang=js ***!
6207  \**************************************************************************************************************************************************************************************************/
6208/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6209
6210"use strict";
6211__webpack_require__.r(__webpack_exports__);
6212/* harmony export */ __webpack_require__.d(__webpack_exports__, {
6213/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
6214/* harmony export */ });
6215/* harmony import */ var _Post__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Post */ "./resources/js/components/Post.vue");
6216function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
6217function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
6218function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
6219function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
6220function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
6221function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
6222
6223/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
6224  name: "PostList",
6225  props: ["posts", "allFirst", "isShort", "next", "advertisement2", "advertisement4", "apiUrl"],
6226  components: {
6227    Post: _Post__WEBPACK_IMPORTED_MODULE_0__["default"]
6228  },
6229  data: function data() {
6230    return {
6231      showPosts: this.posts,
6232      maxPage: Math.ceil(this.posts.length / 8),
6233      pageSize: 8,
6234      isLoading: false
6235    };
6236  },
6237  computed: {
6238    postClass: function postClass() {
6239      return this.isShort ? "postCardh3" : "postCardh4";
6240    },
6241    postImageClass: function postImageClass() {
6242      return this.isShort ? "postImage200" : "";
6243    }
6244  },
6245  mounted: function mounted() {
6246    if (this.next) {
6247      window.addEventListener("scroll", this.scroll);
6248    }
6249  },
6250  destroyed: function destroyed() {
6251    window.removeEventListener("scroll", this.scroll);
6252  },
6253  methods: {
6254    clickAds: function clickAds(id) {
6255      axios.post("/advertisement/" + id + "/click");
6256    },
6257    scroll: function scroll() {
6258      if (!this.isLoading && $(window).scrollTop() > $(document).height() * 0.3) {
6259        this.load();
6260      }
6261    },
6262    load: function load() {
6263      var _this = this;
6264      this.isLoading = true;
6265      axios.post(this.apiUrl, {
6266        offset: this.maxPage * this.pageSize,
6267        limit: this.pageSize
6268      }).then(function (response) {
6269        if (response.data.posts.length > 0) {
6270          var _this$showPosts;
6271          (_this$showPosts = _this.showPosts).push.apply(_this$showPosts, _toConsumableArray(response.data.posts));
6272        }
6273        if (!response.data.next) {
6274          window.removeEventListener("scroll", _this.scroll);
6275        }
6276        _this.maxPage++;
6277        _this.isLoading = false;
6278      });
6279    }
6280  }
6281});
6282
6283/***/ }),
6284
6285/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/PostReplyList.vue?vue&type=script&lang=js":
6286/*!*******************************************************************************************************************************************************************************************************!*\
6287  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/PostReplyList.vue?vue&type=script&lang=js ***!
6288  \*******************************************************************************************************************************************************************************************************/
6289/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6290
6291"use strict";
6292__webpack_require__.r(__webpack_exports__);
6293/* harmony export */ __webpack_require__.d(__webpack_exports__, {
6294/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
6295/* harmony export */ });
6296/* harmony import */ var _PostComment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./PostComment */ "./resources/js/components/PostComment.vue");
6297function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
6298function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
6299function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
6300function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
6301function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
6302function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
6303
6304/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
6305  name: "PostReplyList",
6306  props: ["user", "comment"],
6307  components: {
6308    PostComment: _PostComment__WEBPACK_IMPORTED_MODULE_0__["default"]
6309  },
6310  data: function data() {
6311    return {
6312      newReplies: [],
6313      showReplies: this.comment.replies,
6314      totalCount: this.comment.totalCount,
6315      maxPage: 1,
6316      pageSize: 2,
6317      isLoading: false,
6318      showReply: false,
6319      content: ""
6320    };
6321  },
6322  computed: {
6323    replies: function replies() {
6324      return this.showReplies.concat(this.newReplies);
6325    }
6326  },
6327  methods: {
6328    load: function load() {
6329      var _this = this;
6330      this.maxPage++;
6331      this.isLoading = true;
6332      axios.get("/post/comment", {
6333        params: {
6334          post_comment_id: this.comment.id,
6335          offset: (this.maxPage - 1) * this.pageSize,
6336          limit: this.pageSize
6337        }
6338      }).then(function (response) {
6339        var _this$showReplies;
6340        (_this$showReplies = _this.showReplies).push.apply(_this$showReplies, _toConsumableArray(response.data.comments));
6341        _this.totalCount = response.data.totalCount;
6342        _this.isLoading = false;
6343      });
6344    },
6345    toggleReply: function toggleReply() {
6346      var _this2 = this;
6347      this.showReply = !this.showReply;
6348      if (this.showReply) {
6349        this.$nextTick(function () {
6350          window.scrollTo(0, _this2.$refs.replyContent.offsetTop);
6351          _this2.$refs.replyContent.focus();
6352        });
6353      }
6354    },
6355    create: function create() {
6356      var _this3 = this;
6357      // if (!this.user) {
6358      //     $("#notLoginModal").modal("show");
6359      //     return;
6360      // }
6361
6362      axios.post("/post/comment", {
6363        post_id: this.comment.post_id,
6364        post_comment_id: this.comment.id,
6365        content: this.content
6366      }).then(function (response) {
6367        if (response.data.result) {
6368          _this3.newReplies.push(response.data.comment);
6369          _this3.showReply = false;
6370          _this3.content = "";
6371        }
6372      });
6373    }
6374  }
6375});
6376
6377/***/ }),
6378
6379/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ProfileEditModal.vue?vue&type=script&lang=js":
6380/*!**********************************************************************************************************************************************************************************************************!*\
6381  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ProfileEditModal.vue?vue&type=script&lang=js ***!
6382  \**********************************************************************************************************************************************************************************************************/
6383/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6384
6385"use strict";
6386__webpack_require__.r(__webpack_exports__);
6387/* harmony export */ __webpack_require__.d(__webpack_exports__, {
6388/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
6389/* harmony export */ });
6390function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
6391function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
6392function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
6393function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
6394/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
6395  name: "ProfileEditModal",
6396  props: {
6397    couponId: {
6398      type: Number,
6399      "default": null
6400    }
6401  },
6402  data: function data() {
6403    return {
6404      formData: {
6405        phone: "",
6406        city_of_residence: "",
6407        address: ""
6408      },
6409      cityData: {
6410        台北市: "台北市",
6411        新北市: "新北市",
6412        桃園市: "桃園市",
6413        台中市: "台中市",
6414        台南市: "台南市",
6415        高雄市: "高雄市",
6416        基隆市: "基隆市",
6417        新竹市: "新竹市",
6418        嘉義市: "嘉義市",
6419        新竹縣: "新竹縣",
6420        苗栗縣: "苗栗縣",
6421        彰化縣: "彰化縣",
6422        南投縣: "南投縣",
6423        雲林縣: "雲林縣",
6424        嘉義縣: "嘉義縣",
6425        屏東縣: "屏東縣",
6426        宜蘭縣: "宜蘭縣",
6427        花蓮縣: "花蓮縣",
6428        台東縣: "台東縣",
6429        澎湖縣: "澎湖縣",
6430        金門縣: "金門縣",
6431        連江縣: "連江縣"
6432      },
6433      errors: {},
6434      isSubmitting: false,
6435      isLoadingUserData: false
6436    };
6437  },
6438  methods: {
6439    show: function show() {
6440      var _arguments = arguments,
6441        _this = this;
6442      return _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
6443        var userData, response, apiData;
6444        return _regeneratorRuntime().wrap(function _callee$(_context) {
6445          while (1) switch (_context.prev = _context.next) {
6446            case 0:
6447              userData = _arguments.length > 0 && _arguments[0] !== undefined ? _arguments[0] : {};
6448              // 清除錯誤訊息
6449              _this.errors = {};
6450
6451              // 如果有 couponId,先從 API 獲取使用者資料
6452              if (!_this.couponId) {
6453                _context.next = 22;
6454                break;
6455              }
6456              _this.isLoadingUserData = true;
6457              _context.prev = 4;
6458              _context.next = 7;
6459              return axios.post("/coupon/".concat(_this.couponId, "/check-send-data"));
6460            case 7:
6461              response = _context.sent;
6462              if (response.data.success && response.data.content) {
6463                // 使用 API 返回的資料預填表單
6464                apiData = response.data.content;
6465                _this.formData.phone = apiData.phone || userData.phone || "";
6466                _this.formData.city_of_residence = apiData.city_of_residence || userData.city_of_residence || "";
6467                _this.formData.address = apiData.address || userData.address || "";
6468              } else {
6469                // API 失敗時使用傳入的 userData
6470                _this.formData.phone = userData.phone || "";
6471                _this.formData.city_of_residence = userData.city_of_residence || "";
6472                _this.formData.address = userData.address || "";
6473              }
6474              _context.next = 17;
6475              break;
6476            case 11:
6477              _context.prev = 11;
6478              _context.t0 = _context["catch"](4);
6479              console.error("獲取使用者資料失敗:", _context.t0);
6480              // API 錯誤時使用傳入的 userData
6481              _this.formData.phone = userData.phone || "";
6482              _this.formData.city_of_residence = userData.city_of_residence || "";
6483              _this.formData.address = userData.address || "";
6484            case 17:
6485              _context.prev = 17;
6486              _this.isLoadingUserData = false;
6487              return _context.finish(17);
6488            case 20:
6489              _context.next = 25;
6490              break;
6491            case 22:
6492              // 沒有 couponId 時使用傳入的 userData
6493              _this.formData.phone = userData.phone || "";
6494              _this.formData.city_of_residence = userData.city_of_residence || "";
6495              _this.formData.address = userData.address || "";
6496            case 25:
6497              // 顯示modal (使用 Bootstrap 4 語法)
6498              $("#profileEditModal").modal("show");
6499            case 26:
6500            case "end":
6501              return _context.stop();
6502          }
6503        }, _callee, null, [[4, 11, 17, 20]]);
6504      }))();
6505    },
6506    hide: function hide() {
6507      // 隱藏modal (使用 Bootstrap 4 語法)
6508      $("#profileEditModal").modal("hide");
6509    },
6510    validateForm: function validateForm() {
6511      this.errors = {};
6512      if (!this.formData.phone) {
6513        this.errors.phone = "請輸入聯絡電話";
6514      }
6515      if (!this.formData.city_of_residence) {
6516        this.errors.city_of_residence = "請選擇居住地區";
6517      }
6518      if (!this.formData.address) {
6519        this.errors.address = "請輸入地址";
6520      } else if (this.formData.address.length <= 6) {
6521        this.errors.address = "地址長度必須大於6個字元";
6522      }
6523      return Object.keys(this.errors).length === 0;
6524    },
6525    submitForm: function submitForm() {
6526      var _this2 = this;
6527      return _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
6528        var response;
6529        return _regeneratorRuntime().wrap(function _callee2$(_context2) {
6530          while (1) switch (_context2.prev = _context2.next) {
6531            case 0:
6532              if (_this2.validateForm()) {
6533                _context2.next = 2;
6534                break;
6535              }
6536              return _context2.abrupt("return");
6537            case 2:
6538              _this2.isSubmitting = true;
6539              _context2.prev = 3;
6540              _context2.next = 6;
6541              return axios.post("/profile/update-contact", {
6542                phone: _this2.formData.phone,
6543                city_of_residence: _this2.formData.city_of_residence,
6544                address: _this2.formData.address
6545              });
6546            case 6:
6547              response = _context2.sent;
6548              if (response.data.success) {
6549                // 隱藏modal (使用 Bootstrap 4 語法)
6550                $("#profileEditModal").modal("hide");
6551                setTimeout(function () {
6552                  $("#exchangeCouponModal").modal("show");
6553                }, 500);
6554              } else {
6555                if (response.data.errors) {
6556                  _this2.errors = response.data.errors;
6557                } else {
6558                  alert("更新失敗,請稍後再試");
6559                }
6560              }
6561              _context2.next = 14;
6562              break;
6563            case 10:
6564              _context2.prev = 10;
6565              _context2.t0 = _context2["catch"](3);
6566              console.error("Profile update error:", _context2.t0);
6567              alert("更新失敗,請稍後再試");
6568            case 14:
6569              _context2.prev = 14;
6570              _this2.isSubmitting = false;
6571              return _context2.finish(14);
6572            case 17:
6573            case "end":
6574              return _context2.stop();
6575          }
6576        }, _callee2, null, [[3, 10, 14, 17]]);
6577      }))();
6578    }
6579  }
6580});
6581
6582/***/ }),
6583
6584/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ReportDetailModal.vue?vue&type=script&lang=js":
6585/*!***********************************************************************************************************************************************************************************************************!*\
6586  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ReportDetailModal.vue?vue&type=script&lang=js ***!
6587  \***********************************************************************************************************************************************************************************************************/
6588/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6589
6590"use strict";
6591__webpack_require__.r(__webpack_exports__);
6592/* harmony export */ __webpack_require__.d(__webpack_exports__, {
6593/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
6594/* harmony export */ });
6595/* harmony import */ var vue_awesome_swiper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue-awesome-swiper */ "./node_modules/vue-awesome-swiper/dist/vue-awesome-swiper.js");
6596/* harmony import */ var vue_awesome_swiper__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue_awesome_swiper__WEBPACK_IMPORTED_MODULE_0__);
6597
6598/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
6599  name: "ReportDetailModal",
6600  props: ["initialReport"],
6601  components: {
6602    swiper: vue_awesome_swiper__WEBPACK_IMPORTED_MODULE_0__.swiper,
6603    swiperSlide: vue_awesome_swiper__WEBPACK_IMPORTED_MODULE_0__.swiperSlide
6604  },
6605  data: function data() {
6606    return {
6607      report: null,
6608      ratio: 0,
6609      swiperOption: {
6610        spaceBetween: 10,
6611        pagination: {
6612          el: ".social-notify-report-article-swiper-pagination",
6613          dynamicBullets: true
6614        }
6615      }
6616    };
6617  },
6618  mounted: function mounted() {
6619    if (this.initialReport) {
6620      this.show(this.initialReport);
6621    }
6622  },
6623  methods: {
6624    show: function show(report) {
6625      var _this = this;
6626      this.report = report;
6627      if (report.type == 1) {
6628        if (report.object.medias[0].type == "image") {
6629          var image = new Image();
6630          image.src = report.object.medias[0].url;
6631          if (image.complete) {
6632            this.ratio = image.width / image.height;
6633          } else {
6634            image.onload = function () {
6635              _this.ratio = image.width / image.height;
6636            };
6637          }
6638        } else {
6639          this.$nextTick(function () {
6640            _this.$refs.video.load();
6641            _this.$refs.video.onloadeddata = function () {
6642              _this.$refs.video.play();
6643            };
6644          });
6645        }
6646      } else if (report.type == 3) {
6647        $(this.$refs.modal).on("shown.bs.modal", function () {
6648          _this.msnry = new Masonry(".social-report-index-grid", {
6649            itemSelector: ".social-post-report-grid-item"
6650          });
6651        });
6652      }
6653      $(this.$refs.modal).modal("show");
6654    },
6655    hide: function hide() {
6656      $(this.$refs.modal).modal("hide");
6657    },
6658    nl2br: function nl2br(str, replaceMode, isXhtml) {
6659      var breakTag = isXhtml ? "<br />" : "<br>";
6660      var replaceStr = replaceMode ? "$1" + breakTag : "$1" + breakTag + "$2";
6661      return (str + "").replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, replaceStr);
6662    }
6663  }
6664});
6665
6666/***/ }),
6667
6668/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ReportModal.vue?vue&type=script&lang=js":
6669/*!*****************************************************************************************************************************************************************************************************!*\
6670  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ReportModal.vue?vue&type=script&lang=js ***!
6671  \*****************************************************************************************************************************************************************************************************/
6672/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6673
6674"use strict";
6675__webpack_require__.r(__webpack_exports__);
6676/* harmony export */ __webpack_require__.d(__webpack_exports__, {
6677/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
6678/* harmony export */ });
6679/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
6680  name: "ReportModal",
6681  props: ["title", "type"],
6682  data: function data() {
6683    return {
6684      modalTitle: "檢舉",
6685      objectId: null,
6686      firstStep: this.type == 3 ? 0 : 1,
6687      step: this.type == 3 ? 0 : 1,
6688      reason: "",
6689      notes: "",
6690      options: ["裸露/性行為", "霸凌/騷擾", "誤導/詐騙", "違法內容", "其他"],
6691      isReported: false,
6692      fakeTypes: ["我", "我認識的人", "名人或公眾人物", "商家或組織"],
6693      selectedFakeType: "",
6694      reportUsers: [],
6695      keyword: "",
6696      selectedReportUser: null
6697    };
6698  },
6699  computed: {
6700    showReportUsers: function showReportUsers() {
6701      var _this = this;
6702      return this.reportUsers.filter(function (reportUser) {
6703        return _this.keyword == "" || reportUser.name.toLowerCase().includes(_this.keyword.toLowerCase());
6704      });
6705    }
6706  },
6707  mounted: function mounted() {
6708    var _this2 = this;
6709    $(this.$refs.modal).modal({
6710      backdrop: false
6711    });
6712    $(this.$refs.modal).on("hidden.bs.modal", function () {
6713      _this2.initial();
6714    });
6715  },
6716  methods: {
6717    initial: function initial() {
6718      this.objectId = null;
6719      this.step = this.firstStep;
6720      this.reason = "";
6721      this.notes = "";
6722      this.isReported = false;
6723      this.selectedFakeType = "";
6724      this.selectedReportUser = null;
6725      this.keyword = "";
6726    },
6727    show: function show(objectId) {
6728      this.objectId = objectId;
6729      $(this.$refs.modal).modal("show");
6730    },
6731    hide: function hide() {
6732      $(this.$refs.modal).modal("hide");
6733    },
6734    back: function back() {
6735      if (this.step == this.firstStep || this.isReported) {
6736        this.hide();
6737      } else if (this.step == 3) {
6738        this.step = this.firstStep;
6739      } else {
6740        this.step--;
6741      }
6742    },
6743    selectOption: function selectOption(option) {
6744      this.reason = option;
6745      this.step++;
6746    },
6747    selectFakeType: function selectFakeType(fakeType) {
6748      var _this3 = this;
6749      this.selectedFakeType = fakeType;
6750      this.reason = "假冒他人 - " + fakeType;
6751      axios.post("/api/user/report").then(function (response) {
6752        _this3.reportUsers = response.data.users;
6753      });
6754      this.step++;
6755    },
6756    report: function report() {
6757      var _this4 = this;
6758      var params = {
6759        type: this.type,
6760        objectId: this.objectId,
6761        reason: this.reason,
6762        notes: this.notes
6763      };
6764      if (this.selectedReportUser) {
6765        params.fakeId = this.selectedReportUser.id;
6766      }
6767      axios.post("/report", params).then(function (response) {
6768        if (response.data.result) {
6769          _this4.modalTitle = "已提交";
6770          _this4.isReported = true;
6771        }
6772      })["finally"](function () {
6773        setTimeout(_this4.hide, 2000);
6774      });
6775    }
6776  }
6777});
6778
6779/***/ }),
6780
6781/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialCompleteModal.vue?vue&type=script&lang=js":
6782/*!*************************************************************************************************************************************************************************************************************!*\
6783  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialCompleteModal.vue?vue&type=script&lang=js ***!
6784  \*************************************************************************************************************************************************************************************************************/
6785/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6786
6787"use strict";
6788__webpack_require__.r(__webpack_exports__);
6789/* harmony export */ __webpack_require__.d(__webpack_exports__, {
6790/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
6791/* harmony export */ });
6792/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
6793  name: "SocialCompleteModal",
6794  data: function data() {
6795    return {
6796      message: "",
6797      isSuccess: true
6798    };
6799  },
6800  methods: {
6801    success: function success(message) {
6802      this.isSuccess = true;
6803      this.show(message);
6804    },
6805    fail: function fail(message) {
6806      this.isSuccess = false;
6807      this.show(message);
6808    },
6809    show: function show(message) {
6810      var _this = this;
6811      this.message = message;
6812      this.$nextTick(function () {
6813        $(_this.$refs.modal).modal("show");
6814        setTimeout(_this.hide, 2000);
6815      });
6816    },
6817    hide: function hide() {
6818      $(this.$refs.modal).modal("hide");
6819      this.message = "";
6820    }
6821  }
6822});
6823
6824/***/ }),
6825
6826/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialConfirmModal.vue?vue&type=script&lang=js":
6827/*!************************************************************************************************************************************************************************************************************!*\
6828  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialConfirmModal.vue?vue&type=script&lang=js ***!
6829  \************************************************************************************************************************************************************************************************************/
6830/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6831
6832"use strict";
6833__webpack_require__.r(__webpack_exports__);
6834/* harmony export */ __webpack_require__.d(__webpack_exports__, {
6835/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
6836/* harmony export */ });
6837/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
6838  name: "SocialConfirmModal",
6839  props: ["title", "description", "actionText"],
6840  mounted: function mounted() {
6841    $(this.$refs.modal).modal({
6842      backdrop: false
6843    });
6844  },
6845  methods: {
6846    show: function show() {
6847      $(this.$refs.modal).modal("show");
6848    },
6849    hide: function hide() {
6850      $(this.$refs.modal).modal("hide");
6851    },
6852    doAction: function doAction() {
6853      this.hide();
6854      this.$emit("action");
6855    }
6856  }
6857});
6858
6859/***/ }),
6860
6861/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialContent.vue?vue&type=script&lang=js":
6862/*!*******************************************************************************************************************************************************************************************************!*\
6863  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialContent.vue?vue&type=script&lang=js ***!
6864  \*******************************************************************************************************************************************************************************************************/
6865/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6866
6867"use strict";
6868__webpack_require__.r(__webpack_exports__);
6869/* harmony export */ __webpack_require__.d(__webpack_exports__, {
6870/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
6871/* harmony export */ });
6872/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
6873  name: "SocialContent",
6874  props: ["content"],
6875  computed: {
6876    transformed: function transformed() {
6877      var template = this.getTemplate(this.content);
6878      return {
6879        template: template,
6880        props: this.$options.props
6881      };
6882    }
6883  },
6884  methods: {
6885    getTemplate: function getTemplate(str) {
6886      return "<div>" + str.replace(/#([\w\u4e00-\u9fa5]+)/g, '<router-link class="tag-yellow d-inline-block" to="/social/tag/$1">#$1</router-link>').replace(/@([\w.]+)/g, '<router-link class="tag-yellow d-inline-block" to="/social/user/$1">@$1</router-link>').replace(/((http|https|ftp):\/\/[\w?=&.\/-;#~%-]+(?![\w\s?&.\/;#~%"=-]*>))/g, '<a class="tag-yellow d-inline-block" href="$1" target="_blank">$1</a>').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, "$1<br />") + "</div>";
6887    }
6888  }
6889});
6890
6891/***/ }),
6892
6893/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialContentInput.vue?vue&type=script&lang=js":
6894/*!************************************************************************************************************************************************************************************************************!*\
6895  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialContentInput.vue?vue&type=script&lang=js ***!
6896  \************************************************************************************************************************************************************************************************************/
6897/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6898
6899"use strict";
6900__webpack_require__.r(__webpack_exports__);
6901/* harmony export */ __webpack_require__.d(__webpack_exports__, {
6902/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
6903/* harmony export */ });
6904/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
6905  name: "SocialContentInput",
6906  props: ["multiple"],
6907  data: function data() {
6908    return {
6909      content: "",
6910      tagIndex: -1,
6911      tagType: "",
6912      timeout: null
6913    };
6914  },
6915  watch: {
6916    content: function content(newValue, oldValue) {
6917      var _this = this;
6918      this.$emit("change", newValue, oldValue);
6919      if (this.tagIndex == -1 && (newValue.charAt(newValue.length - 1) == "#" || newValue.charAt(newValue.length - 1) == "@")) {
6920        this.tagIndex = newValue.length;
6921        this.tagType = newValue.charAt(newValue.length - 1);
6922      } else if (this.tagIndex >= 0) {
6923        if (newValue.charAt(newValue.length - 1) == " " || newValue.length < this.tagIndex) {
6924          this.tagIndex = -1;
6925          this.tagType = "";
6926        } else if (newValue.length == this.tagIndex) {
6927          if (this.tagType == "#") {
6928            this.$emit("showTags", []);
6929          } else {
6930            this.$emit("showUsers", []);
6931          }
6932        }
6933      }
6934      if (this.timeout) {
6935        clearTimeout(this.timeout);
6936      }
6937      if (this.tagIndex > 0 && newValue.length > this.tagIndex) {
6938        this.timeout = setTimeout(function () {
6939          axios.post(_this.tagType == "#" ? "/api/social/tags" : "/api/social/users", {
6940            keyword: newValue.substring(_this.tagIndex, newValue.length)
6941          }).then(function (response) {
6942            if (_this.tagType == "#") {
6943              _this.$emit("showTags", response.data.socialTags);
6944            } else {
6945              _this.$emit("showUsers", response.data.users);
6946            }
6947          });
6948        }, 500);
6949      }
6950    }
6951  },
6952  methods: {
6953    addTag: function addTag(tag) {
6954      this.content = this.content.substring(0, this.tagIndex) + tag.name + " ";
6955      this.$refs.content.focus();
6956    },
6957    addUser: function addUser(user) {
6958      this.content = this.content.substring(0, this.tagIndex) + user.alias_name + " ";
6959      this.$refs.content.focus();
6960    },
6961    focus: function focus() {
6962      this.$refs.content.focus();
6963    },
6964    scrollTo: function scrollTo() {
6965      window.scrollTo({
6966        top: this.$refs.content.getBoundingClientRect().top,
6967        behavior: "smooth"
6968      });
6969    }
6970  }
6971});
6972
6973/***/ }),
6974
6975/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialControlModal.vue?vue&type=script&lang=js":
6976/*!************************************************************************************************************************************************************************************************************!*\
6977  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialControlModal.vue?vue&type=script&lang=js ***!
6978  \************************************************************************************************************************************************************************************************************/
6979/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6980
6981"use strict";
6982__webpack_require__.r(__webpack_exports__);
6983/* harmony export */ __webpack_require__.d(__webpack_exports__, {
6984/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
6985/* harmony export */ });
6986/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
6987  name: "SocialControlModal",
6988  data: function data() {
6989    return {
6990      title: null,
6991      description: null,
6992      controls: []
6993    };
6994  },
6995  mounted: function mounted() {
6996    var _this = this;
6997    $(this.$refs.modal).on("hidden.bs.modal", function (e) {
6998      _this.title = null;
6999      _this.description = null;
7000      _this.controls = [];
7001    });
7002  },
7003  methods: {
7004    show: function show(controls) {
7005      var title = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
7006      var description = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
7007      this.controls = controls;
7008      this.title = title;
7009      this.description = description;
7010      $(this.$refs.modal).modal("show");
7011    },
7012    hide: function hide() {
7013      $(this.$refs.modal).modal("hide");
7014    },
7015    doAction: function doAction(action) {
7016      action();
7017      this.hide();
7018    }
7019  }
7020});
7021
7022/***/ }),
7023
7024/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialFileInput.vue?vue&type=script&lang=js":
7025/*!*********************************************************************************************************************************************************************************************************!*\
7026  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialFileInput.vue?vue&type=script&lang=js ***!
7027  \*********************************************************************************************************************************************************************************************************/
7028/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
7029
7030"use strict";
7031__webpack_require__.r(__webpack_exports__);
7032/* harmony export */ __webpack_require__.d(__webpack_exports__, {
7033/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
7034/* harmony export */ });
7035function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
7036function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
7037function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
7038function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
7039/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
7040  name: "SocialFileInput",
7041  props: ["videoLength", "videoSize", "imageSize"],
7042  data: function data() {
7043    return {
7044      fileTypes: "image/*,audio/*,video/*",
7045      videoSrc: ""
7046    };
7047  },
7048  methods: {
7049    pickFile: function pickFile() {
7050      var _this = this;
7051      return _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
7052        var media;
7053        return _regeneratorRuntime().wrap(function _callee$(_context) {
7054          while (1) switch (_context.prev = _context.next) {
7055            case 0:
7056              _context.next = 2;
7057              return _this.checkFile();
7058            case 2:
7059              media = _context.sent;
7060              if (!media) {
7061                _this.$root.$refs.socialUploadFailModal.show(_this.videoSize, _this.imageSize);
7062              } else {
7063                _this.$emit("pick", media);
7064              }
7065              _this.$refs.input.value = "";
7066            case 5:
7067            case "end":
7068              return _context.stop();
7069          }
7070        }, _callee);
7071      }))();
7072    },
7073    checkFile: function checkFile() {
7074      var _this2 = this;
7075      return _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
7076        var file, type, extension, video, src, data, image;
7077        return _regeneratorRuntime().wrap(function _callee2$(_context2) {
7078          while (1) switch (_context2.prev = _context2.next) {
7079            case 0:
7080              file = _this2.$refs.input.files;
7081              if (!(file && file[0])) {
7082                _context2.next = 29;
7083                break;
7084              }
7085              type = file[0].type.split("/")[0];
7086              extension = file[0].name.split('.').pop().toLowerCase();
7087              if (!(type === 'image' && (file[0].type === 'image/heic' || extension === 'heic'))) {
7088                _context2.next = 7;
7089                break;
7090              }
7091              alert('不支持 HEIC 格式,請選擇其他圖片格式。');
7092              return _context2.abrupt("return", null);
7093            case 7:
7094              if (!(type == "video")) {
7095                _context2.next = 14;
7096                break;
7097              }
7098              _context2.next = 10;
7099              return _this2.getVideoObject(file[0]);
7100            case 10:
7101              video = _context2.sent;
7102              if (!(video.duration > _this2.videoLength)) {
7103                _context2.next = 14;
7104                break;
7105              }
7106              window.URL.revokeObjectURL(_this2.videoSrc);
7107              return _context2.abrupt("return", false);
7108            case 14:
7109              if (!(type == "image" && file[0].size <= _this2.imageSize * 1024 * 1024 || type == "video" && file[0].size <= _this2.videoSize * 1024 * 1024)) {
7110                _context2.next = 29;
7111                break;
7112              }
7113              _context2.next = 17;
7114              return _this2.getBase64(file[0]);
7115            case 17:
7116              src = _context2.sent;
7117              data = {
7118                type: file[0].type.split("/")[0],
7119                extension: file[0].type.split("/")[1],
7120                src: src
7121              };
7122              if (!(type == "image")) {
7123                _context2.next = 28;
7124                break;
7125              }
7126              _context2.next = 22;
7127              return _this2.getImageObject(src);
7128            case 22:
7129              image = _context2.sent;
7130              data.width = image.width;
7131              data.height = image.height;
7132              _context2.next = 27;
7133              return _this2.getExifData(image, "Orientation");
7134            case 27:
7135              data.orientation = _context2.sent;
7136            case 28:
7137              return _context2.abrupt("return", data);
7138            case 29:
7139              return _context2.abrupt("return", null);
7140            case 30:
7141            case "end":
7142              return _context2.stop();
7143          }
7144        }, _callee2);
7145      }))();
7146    },
7147    getBase64: function getBase64(file) {
7148      return new Promise(function (resolve, reject) {
7149        var reader = new FileReader();
7150        reader.readAsDataURL(file);
7151        reader.onload = function () {
7152          return resolve(reader.result);
7153        };
7154        reader.onerror = function (error) {
7155          return reject(error);
7156        };
7157      });
7158    },
7159    getImageObject: function getImageObject(src) {
7160      return new Promise(function (resolve) {
7161        var image = new Image();
7162        image.src = src;
7163        if (image.complete) {
7164          resolve(image);
7165        } else {
7166          image.onload = function () {
7167            resolve(image);
7168          };
7169        }
7170      });
7171    },
7172    getVideoObject: function getVideoObject(src) {
7173      var _this3 = this;
7174      return new Promise(function (resolve) {
7175        window.URL = window.URL || window.webkitURL;
7176        _this3.videoSrc = window.URL.createObjectURL(src);
7177        var video = document.createElement("video");
7178        video.preload = "metadata";
7179        video.onloadedmetadata = function () {
7180          resolve(video);
7181        };
7182        video.src = _this3.videoSrc;
7183      });
7184    },
7185    getExifData: function getExifData(image, attr) {
7186      return new Promise(function (resolve) {
7187        EXIF.getData(image, function () {
7188          resolve(EXIF.getTag(this, attr));
7189        });
7190      });
7191    }
7192  }
7193});
7194
7195/***/ }),
7196
7197/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialFirstModal.vue?vue&type=script&lang=js":
7198/*!**********************************************************************************************************************************************************************************************************!*\
7199  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialFirstModal.vue?vue&type=script&lang=js ***!
7200  \**********************************************************************************************************************************************************************************************************/
7201/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
7202
7203"use strict";
7204__webpack_require__.r(__webpack_exports__);
7205/* harmony export */ __webpack_require__.d(__webpack_exports__, {
7206/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
7207/* harmony export */ });
7208/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
7209  name: "SocialFirstModal",
7210  props: ["user"],
7211  data: function data() {
7212    return {
7213      aliasName: "",
7214      isAliasNameInvalid: false,
7215      isAliasNameUsed: false,
7216      timeout: null,
7217      isSubmit: false
7218    };
7219  },
7220  computed: {
7221    canSubmit: function canSubmit() {
7222      return !this.isSubmit && this.aliasName && !this.isAliasNameInvalid && !this.isAliasNameUsed;
7223    }
7224  },
7225  watch: {
7226    aliasName: function aliasName(newValue, oldValue) {
7227      var _this = this;
7228      var regex = /^[a-z\d_.]*$/g;
7229      this.isAliasNameInvalid = !regex.test(newValue);
7230      if (this.timeout) {
7231        clearTimeout(this.timeout);
7232      }
7233      this.timeout = setTimeout(function () {
7234        if (newValue) {
7235          axios.post("/api/user/aliasname", {
7236            alias_name: newValue
7237          }).then(function (response) {
7238            _this.isAliasNameUsed = !response.data.result;
7239          });
7240        }
7241      }, 500);
7242    }
7243  },
7244  mounted: function mounted() {
7245    $(this.$refs.modal).modal({
7246      backdrop: false
7247    });
7248    $(this.$refs.modal).modal("show");
7249  },
7250  methods: {
7251    submit: function submit() {
7252      if (!this.canSubmit) {
7253        return false;
7254      }
7255      this.isSubmit = true;
7256      axios.put("/user/" + this.user.id, {
7257        alias_name: this.aliasName
7258      }).then(function (response) {
7259        if (response.data.result) {
7260          location.reload();
7261        }
7262      });
7263    }
7264  }
7265});
7266
7267/***/ }),
7268
7269/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialMessagePage.vue?vue&type=script&lang=js":
7270/*!***********************************************************************************************************************************************************************************************************!*\
7271  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialMessagePage.vue?vue&type=script&lang=js ***!
7272  \***********************************************************************************************************************************************************************************************************/
7273/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
7274
7275"use strict";
7276__webpack_require__.r(__webpack_exports__);
7277/* harmony export */ __webpack_require__.d(__webpack_exports__, {
7278/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
7279/* harmony export */ });
7280/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
7281  name: "SocialMessagePage",
7282  data: function data() {
7283    return {
7284      chatRoom: null,
7285      chatRoomSetting: null
7286    };
7287  },
7288  mounted: function mounted() {
7289    var _this = this;
7290    this.$root.$refs.socialNavbar.setPage("message");
7291    if (this.$route.params.id) {
7292      axios.post("/api/chatRoom/" + this.$route.params.id).then(function (response) {
7293        _this.$refs.chatRoomList.selectChatRoom(response.data.chatRoom);
7294      });
7295    }
7296  },
7297  beforeRouteLeave: function beforeRouteLeave(to, from, next) {
7298    this.$root.$refs.socialNavbar.toBackPage();
7299    next();
7300  },
7301  methods: {
7302    back: function back() {
7303      this.$router.back();
7304    },
7305    newMessage: function newMessage() {
7306      this.$refs.newMessageModal.show();
7307    },
7308    shareMessage: function shareMessage(userIds, content) {
7309      this.$refs.chatRoom.share(userIds, content);
7310    },
7311    selectChatRoom: function selectChatRoom(chatRoom) {
7312      var _this2 = this;
7313      if (this.chatRoom == null || this.chatRoom.id != chatRoom.id) {
7314        axios.get("/chat/room/" + chatRoom.id).then(function (repsonse) {
7315          if (repsonse.data.result) {
7316            _this2.chatRoom = repsonse.data.chatRoom;
7317          }
7318        });
7319      }
7320      this.chatRoomSetting = null;
7321    },
7322    leaveChatRoom: function leaveChatRoom() {
7323      this.chatRoom = null;
7324      this.$refs.chatRoomList.leaveChatRoom();
7325    },
7326    destroyChatRoom: function destroyChatRoom() {
7327      var _this3 = this;
7328      var chatRoomId;
7329      if (this.chatRoom) {
7330        chatRoomId = this.chatRoom.id;
7331      } else {
7332        chatRoomId = this.chatRoomSetting.id;
7333      }
7334      axios["delete"]("/chat/room/" + chatRoomId).then(function (response) {
7335        if (response.data.result) {
7336          _this3.chatRoom = null;
7337          _this3.chatRoomSetting = null;
7338          _this3.$refs.chatRoomList.destroyChatRoom();
7339          _this3.$root.$refs.socialCompleteModal.success("聊天室已刪除");
7340        }
7341      });
7342    },
7343    openChatRoomSetting: function openChatRoomSetting(chatRoom) {
7344      if (this.chatRoom != null && this.chatRoom.id != chatRoom.id) {
7345        this.chatRoom = null;
7346      }
7347      this.chatRoomSetting = chatRoom;
7348    },
7349    closeChatRoomSetting: function closeChatRoomSetting() {
7350      this.chatRoomSetting = null;
7351      if (this.chatRoom == null) {
7352        this.$refs.chatRoomList.leaveChatRoom();
7353      }
7354    },
7355    pickFile: function pickFile(media) {
7356      this.$refs.chatRoom.pickFile(media);
7357    },
7358    sendMessage: function sendMessage(userIds, content) {
7359      var _this4 = this;
7360      axios.post("/chat", {
7361        user_ids: userIds,
7362        content: content
7363      }).then(function (response) {
7364        if (response.data.result) {
7365          _this4.$root.$refs.socialCompleteModal.success("訊息已傳送");
7366        } else {
7367          _this4.$root.$refs.socialCompleteModal.fail("傳送失敗");
7368        }
7369      });
7370    }
7371  }
7372});
7373
7374/***/ }),
7375
7376/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialNavbar.vue?vue&type=script&lang=js":
7377/*!******************************************************************************************************************************************************************************************************!*\
7378  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialNavbar.vue?vue&type=script&lang=js ***!
7379  \******************************************************************************************************************************************************************************************************/
7380/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
7381
7382"use strict";
7383__webpack_require__.r(__webpack_exports__);
7384/* harmony export */ __webpack_require__.d(__webpack_exports__, {
7385/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
7386/* harmony export */ });
7387/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
7388  name: "SocialNavbar",
7389  props: ["user"],
7390  data: function data() {
7391    return {
7392      notifications: this.user.social_notifications,
7393      message_count: this.user.message_count,
7394      backIconHover: false,
7395      homeIconHover: false,
7396      searchIconHover: false,
7397      postIconHover: false,
7398      messageIconHover: false,
7399      notifyIconHover: false,
7400      currentPage: null,
7401      backPage: null
7402    };
7403  },
7404  computed: {
7405    unreadCount: function unreadCount() {
7406      //                            v-if="user && user.hasOwnProperty('alias_name')"
7407
7408      return this.user && this.user.hasOwnProperty('alias_name') ? this.notifications.filter(function (notification) {
7409        return !notification.is_read;
7410      }).length : 0;
7411    }
7412  },
7413  mounted: function mounted() {
7414    var _this = this;
7415    // 檢查網址是否帶有socialpost參數且值為1
7416    if (this.$route.query.socialpost === '1') {
7417      // 檢查使用者是否已登入
7418      if (this.user && this.user.hasOwnProperty('alias_name')) {
7419        this.$root.$refs.socialPostEditModal.show();
7420      } else {
7421        // 未登入則導向登入頁
7422        window.location.href = '/login';
7423      }
7424    }
7425    if (this.user) {
7426      window.Echo["private"]("user." + this.user.id).listen("SocialNotification", function (data) {
7427        var index = _this.notifications.findIndex(function (notification) {
7428          return notification.id == data.socialNotification.id;
7429        });
7430        if (data.socialNotification.is_deleted) {
7431          if (index != -1) {
7432            _this.notifications.splice(index, 1);
7433          }
7434        } else {
7435          if (index == -1) {
7436            _this.notifications.unshift(data.socialNotification);
7437          } else {
7438            _this.notifications.splice(index, 1, data.socialNotification);
7439          }
7440        }
7441      }).listen("MessageNotification", function (data) {
7442        _this.message_count = data.message_count;
7443      });
7444    }
7445  },
7446  methods: {
7447    showNotifications: function showNotifications() {
7448      axios.post("/user/readNotifications");
7449      this.notifications.forEach(function (notification) {
7450        return notification.is_read = true;
7451      });
7452      this.$root.$refs.socialNotificationModal.show(this.notifications);
7453    },
7454    toMessagePage: function toMessagePage() {
7455      this.message_count = 0;
7456      this.$router.push({
7457        name: "socialMessage"
7458      });
7459    },
7460    setPage: function setPage(page) {
7461      if (this.currentPage) {
7462        this[this.currentPage + "IconHover"] = false;
7463      }
7464      this[page + "IconHover"] = true;
7465      this.backPage = this.currentPage;
7466      this.currentPage = page;
7467      console.log(page + "IconHover");
7468    },
7469    toBackPage: function toBackPage(page) {
7470      if (this.backPage && (!page || page == this.currentPage)) {
7471        this[this.currentPage + "IconHover"] = false;
7472        this[this.backPage + "IconHover"] = true;
7473        this.currentPage = this.backPage;
7474        this.backPage = null;
7475      }
7476    },
7477    iconLeave: function iconLeave(attr) {
7478      if (attr != this.currentPage + "IconHover") {
7479        this[attr] = false;
7480      }
7481    }
7482  }
7483});
7484
7485/***/ }),
7486
7487/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialNotification.vue?vue&type=script&lang=js":
7488/*!************************************************************************************************************************************************************************************************************!*\
7489  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialNotification.vue?vue&type=script&lang=js ***!
7490  \************************************************************************************************************************************************************************************************************/
7491/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
7492
7493"use strict";
7494__webpack_require__.r(__webpack_exports__);
7495/* harmony export */ __webpack_require__.d(__webpack_exports__, {
7496/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
7497/* harmony export */ });
7498/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
7499  name: "SocialNotification",
7500  props: ["notification"],
7501  data: function data() {
7502    return {
7503      isFollow: this.notification.object.is_follow
7504    };
7505  },
7506  methods: {
7507    open: function open(url) {
7508      if (url) {
7509        this.$router.push({
7510          path: url
7511        });
7512        this.$emit("click");
7513      }
7514    },
7515    follow: function follow() {
7516      axios.post("/user/follow", {
7517        user_id: this.notification.social_user.id
7518      });
7519      this.isFollow = true;
7520    },
7521    unfollow: function unfollow() {
7522      axios.post("/user/unfollow", {
7523        user_id: this.notification.social_user.id
7524      });
7525      this.isFollow = false;
7526    },
7527    showReportInfo: function showReportInfo() {
7528      this.$emit("showReportInfo", this.notification);
7529    }
7530  }
7531});
7532
7533/***/ }),
7534
7535/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialNotificationModal.vue?vue&type=script&lang=js":
7536/*!*****************************************************************************************************************************************************************************************************************!*\
7537  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialNotificationModal.vue?vue&type=script&lang=js ***!
7538  \*****************************************************************************************************************************************************************************************************************/
7539/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
7540
7541"use strict";
7542__webpack_require__.r(__webpack_exports__);
7543/* harmony export */ __webpack_require__.d(__webpack_exports__, {
7544/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
7545/* harmony export */ });
7546/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
7547  name: "SocialNotificationModal",
7548  data: function data() {
7549    return {
7550      notifications: []
7551    };
7552  },
7553  mounted: function mounted() {
7554    var _this = this;
7555    $(this.$refs.modal).on("show.bs.modal", function (e) {
7556      _this.$root.$refs.socialNavbar.setPage("notify");
7557    });
7558    $(this.$refs.modal).on("hide.bs.modal", function (e) {
7559      _this.$root.$refs.socialNavbar.toBackPage();
7560    });
7561  },
7562  methods: {
7563    show: function show(notifications) {
7564      this.notifications = notifications;
7565      $(this.$refs.modal).modal("show");
7566    },
7567    hide: function hide() {
7568      $(this.$refs.modal).modal("hide");
7569    },
7570    showReportInfo: function showReportInfo(notification) {
7571      this.$root.$refs.reportDetailModal.show(notification.object);
7572    }
7573  }
7574});
7575
7576/***/ }),
7577
7578/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPage.vue?vue&type=script&lang=js":
7579/*!****************************************************************************************************************************************************************************************************!*\
7580  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPage.vue?vue&type=script&lang=js ***!
7581  \****************************************************************************************************************************************************************************************************/
7582/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
7583
7584"use strict";
7585__webpack_require__.r(__webpack_exports__);
7586/* harmony export */ __webpack_require__.d(__webpack_exports__, {
7587/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
7588/* harmony export */ });
7589/* harmony import */ var vue_awesome_swiper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue-awesome-swiper */ "./node_modules/vue-awesome-swiper/dist/vue-awesome-swiper.js");
7590/* harmony import */ var vue_awesome_swiper__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue_awesome_swiper__WEBPACK_IMPORTED_MODULE_0__);
7591
7592/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
7593  name: "SocialPage",
7594  components: {
7595    swiper: vue_awesome_swiper__WEBPACK_IMPORTED_MODULE_0__.swiper,
7596    swiperSlide: vue_awesome_swiper__WEBPACK_IMPORTED_MODULE_0__.swiperSlide
7597  },
7598  data: function data() {
7599    return {
7600      self: null,
7601      specialUsers: [],
7602      isLogin: false,
7603      swiperOption: {
7604        slidesPerView: 5,
7605        spaceBetween: 16,
7606        breakpoints: {
7607          768: {
7608            slidesPerView: 10,
7609            spaceBetween: 16
7610          }
7611        }
7612      }
7613    };
7614  },
7615  mounted: function mounted() {
7616    var _this = this;
7617    this.$root.$refs.socialNavbar.setPage("home");
7618    axios.post("/api/user/special").then(function (response) {
7619      _this.self = response.data.self;
7620      _this.specialUsers = response.data.specialUsers;
7621      _this.isLogin = response.data.is_login;
7622    });
7623  },
7624  methods: {
7625    follow: function follow(specialUser) {
7626      if (this.isLogin) {
7627        axios.post("/user/follow", {
7628          user_id: specialUser.id
7629        });
7630        specialUser.is_follow = true;
7631      } else {
7632        if (confirm("請先登入")) {
7633          window.location.href = '/login';
7634        }
7635      }
7636    },
7637    unfollow: function unfollow(specialUser) {
7638      axios.post("/user/unfollow", {
7639        user_id: specialUser.id
7640      });
7641      specialUser.is_follow = false;
7642    }
7643  }
7644});
7645
7646/***/ }),
7647
7648/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPlaceModal.vue?vue&type=script&lang=js":
7649/*!**********************************************************************************************************************************************************************************************************!*\
7650  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPlaceModal.vue?vue&type=script&lang=js ***!
7651  \**********************************************************************************************************************************************************************************************************/
7652/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
7653
7654"use strict";
7655__webpack_require__.r(__webpack_exports__);
7656/* harmony export */ __webpack_require__.d(__webpack_exports__, {
7657/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
7658/* harmony export */ });
7659/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
7660  name: "SocialPlaceModal",
7661  data: function data() {
7662    return {
7663      position: null,
7664      keyword: "",
7665      places: [],
7666      timeout: null
7667    };
7668  },
7669  watch: {
7670    keyword: function keyword() {
7671      if (this.timeout) {
7672        clearTimeout(this.timeout);
7673      }
7674      this.timeout = setTimeout(this.search, 500);
7675    }
7676  },
7677  mounted: function mounted() {
7678    $(this.$refs.modal).modal({
7679      backdrop: false
7680    });
7681  },
7682  methods: {
7683    show: function show(position) {
7684      this.position = position;
7685      this.search();
7686      $(this.$refs.modal).modal("show");
7687    },
7688    hide: function hide() {
7689      $(this.$refs.modal).modal("hide");
7690    },
7691    search: function search() {
7692      var _this = this;
7693      axios.post("/api/social/places", {
7694        latitude: this.position.coords.latitude,
7695        longitude: this.position.coords.longitude,
7696        keyword: this.keyword
7697      }).then(function (response) {
7698        _this.places = response.data.places;
7699      });
7700    },
7701    submit: function submit(place) {
7702      this.$emit("submit", place);
7703      this.hide();
7704    }
7705  }
7706});
7707
7708/***/ }),
7709
7710/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPlacePage.vue?vue&type=script&lang=js":
7711/*!*********************************************************************************************************************************************************************************************************!*\
7712  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPlacePage.vue?vue&type=script&lang=js ***!
7713  \*********************************************************************************************************************************************************************************************************/
7714/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
7715
7716"use strict";
7717__webpack_require__.r(__webpack_exports__);
7718/* harmony export */ __webpack_require__.d(__webpack_exports__, {
7719/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
7720/* harmony export */ });
7721/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
7722  name: "SocialPlacePage",
7723  data: function data() {
7724    return {
7725      place: null
7726    };
7727  },
7728  mounted: function mounted() {
7729    var _this = this;
7730    axios.post("/social/place/" + (this.id ? this.id : this.$route.params.id)).then(function (response) {
7731      if (response.data.result) {
7732        document.title = response.data.place.name;
7733        _this.place = response.data.place;
7734      }
7735    });
7736  },
7737  methods: {
7738    back: function back() {
7739      this.$router.back();
7740    }
7741  }
7742});
7743
7744/***/ }),
7745
7746/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPost.vue?vue&type=script&lang=js":
7747/*!****************************************************************************************************************************************************************************************************!*\
7748  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPost.vue?vue&type=script&lang=js ***!
7749  \****************************************************************************************************************************************************************************************************/
7750/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
7751
7752"use strict";
7753__webpack_require__.r(__webpack_exports__);
7754/* harmony export */ __webpack_require__.d(__webpack_exports__, {
7755/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
7756/* harmony export */ });
7757/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
7758  name: "SocialPost",
7759  props: ["socialPost", "index"],
7760  mounted: function mounted() {
7761    var _this = this;
7762    this.$nextTick(function () {
7763      if (_this.$refs.cover) {
7764        _this.$refs.cover.addEventListener("load", function () {
7765          _this.$emit("loaded");
7766        });
7767      }
7768    });
7769  },
7770  methods: {
7771    like: function like() {
7772      if (this.socialPost.is_login) {
7773        axios.post("/social/post/like", {
7774          social_post_id: this.socialPost.id
7775        });
7776        this.socialPost.is_like = true;
7777        this.socialPost.like_count++;
7778      } else {
7779        if (confirm("請先登入")) {
7780          window.location.href = '/login';
7781        }
7782      }
7783    },
7784    unlike: function unlike() {
7785      axios.post("/social/post/unlike", {
7786        social_post_id: this.socialPost.id
7787      });
7788      this.socialPost.is_like = false;
7789      this.socialPost.like_count--;
7790    }
7791  }
7792});
7793
7794/***/ }),
7795
7796/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostComment.vue?vue&type=script&lang=js":
7797/*!***********************************************************************************************************************************************************************************************************!*\
7798  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostComment.vue?vue&type=script&lang=js ***!
7799  \***********************************************************************************************************************************************************************************************************/
7800/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
7801
7802"use strict";
7803__webpack_require__.r(__webpack_exports__);
7804/* harmony export */ __webpack_require__.d(__webpack_exports__, {
7805/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
7806/* harmony export */ });
7807/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
7808  name: "SocialPostComment",
7809  props: ["comment", "isAdminLoggedIn"],
7810  data: function data() {
7811    return {
7812      showEdit: false,
7813      tags: [],
7814      users: []
7815    };
7816  },
7817  computed: {
7818    controls: function controls() {
7819      if (this.comment.is_self) {
7820        return [{
7821          text: "編輯",
7822          action: this.startEdit
7823        }, {
7824          text: "刪除",
7825          action: this.startDelete,
7826          danger: true
7827        }];
7828      } else if (this.isAdminLoggedIn) {
7829        return [{
7830          text: "刪除",
7831          action: this.startDelete,
7832          danger: true
7833        }];
7834      }
7835      return [{
7836        text: "檢舉",
7837        action: this.report,
7838        danger: true
7839      }];
7840    }
7841  },
7842  methods: {
7843    openControls: function openControls() {
7844      this.$root.$refs.socialControlModal.show(this.controls);
7845    },
7846    startEdit: function startEdit() {
7847      this.$refs.socialContentInput.content = this.comment.content;
7848      this.showEdit = true;
7849    },
7850    startDelete: function startDelete() {
7851      this.$refs.deleteConfirmModal.show();
7852    },
7853    report: function report() {
7854      this.$refs.reportModal.show(this.comment.id);
7855    },
7856    showTags: function showTags(tags) {
7857      this.tags = tags;
7858    },
7859    showUsers: function showUsers(users) {
7860      this.users = users;
7861    },
7862    addTag: function addTag(tag) {
7863      this.$refs.socialContentInput.addTag(tag);
7864      this.tags = [];
7865    },
7866    addUser: function addUser(user) {
7867      this.$refs.socialContentInput.addUser(user);
7868      this.users = [];
7869    },
7870    save: function save() {
7871      axios.put(this.comment.update_url, {
7872        content: this.$refs.socialContentInput.content
7873      });
7874      this.comment.content = this.$refs.socialContentInput.content;
7875      this.showEdit = false;
7876      this.$refs.socialContentInput.content = "";
7877    },
7878    destroy: function destroy() {
7879      axios["delete"](this.comment.delete_url);
7880      this.$emit("destroy");
7881      this.$destroy();
7882      this.$el.parentNode.removeChild(this.$el);
7883    }
7884  }
7885});
7886
7887/***/ }),
7888
7889/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostCommentList.vue?vue&type=script&lang=js":
7890/*!***************************************************************************************************************************************************************************************************************!*\
7891  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostCommentList.vue?vue&type=script&lang=js ***!
7892  \***************************************************************************************************************************************************************************************************************/
7893/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
7894
7895"use strict";
7896__webpack_require__.r(__webpack_exports__);
7897/* harmony export */ __webpack_require__.d(__webpack_exports__, {
7898/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
7899/* harmony export */ });
7900function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
7901function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
7902function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
7903function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
7904function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
7905function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
7906/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
7907  name: "SocialPostCommentList",
7908  props: ["socialPost", "commentId", "isAdminLoggedIn"],
7909  data: function data() {
7910    var _this = this;
7911    return {
7912      newComments: [],
7913      showComments: this.socialPost.comments.filter(function (comment) {
7914        return comment.id != _this.commentId;
7915      }),
7916      totalCount: this.socialPost.comment_count,
7917      maxPage: 1,
7918      pageSize: 3,
7919      isLoading: false,
7920      isReply: false,
7921      currentComment: null,
7922      tags: [],
7923      users: []
7924    };
7925  },
7926  computed: {
7927    comments: function comments() {
7928      return this.newComments.concat(this.showComments);
7929    },
7930    replyUser: function replyUser() {
7931      return this.currentComment != null ? this.currentComment.user.name : "";
7932    },
7933    currentReplyList: function currentReplyList() {
7934      return this.currentComment != null ? this.$refs["replyList" + this.currentComment.id][0] : null;
7935    }
7936  },
7937  mounted: function mounted() {
7938    var _this2 = this;
7939    if (this.commentId) {
7940      axios.get("/social/post/comment/" + this.commentId).then(function (response) {
7941        _this2.newComments.push(response.data.comment);
7942      });
7943    }
7944  },
7945  methods: {
7946    load: function load() {
7947      var _this3 = this;
7948      this.maxPage++;
7949      this.isLoading = true;
7950      axios.get("/social/post/comment", {
7951        params: {
7952          social_post_id: this.socialPost.id,
7953          offset: (this.maxPage - 1) * this.pageSize,
7954          limit: this.pageSize
7955        }
7956      }).then(function (response) {
7957        var _this3$showComments;
7958        (_this3$showComments = _this3.showComments).push.apply(_this3$showComments, _toConsumableArray(response.data.comments.filter(function (comment) {
7959          return comment.id != _this3.commentId;
7960        })));
7961        _this3.totalCount = response.data.totalCount;
7962        _this3.isLoading = false;
7963      });
7964    },
7965    showTags: function showTags(tags) {
7966      this.tags = tags;
7967    },
7968    showUsers: function showUsers(users) {
7969      this.users = users;
7970    },
7971    addTag: function addTag(tag) {
7972      this.$refs.socialContentInput.addTag(tag);
7973      this.tags = [];
7974    },
7975    addUser: function addUser(user) {
7976      this.$refs.socialContentInput.addUser(user);
7977      this.users = [];
7978    },
7979    create: function create() {
7980      var _this4 = this;
7981      axios.post("/social/post/comment", {
7982        social_post_id: this.socialPost.id,
7983        content: this.$refs.socialContentInput.content
7984      }).then(function (response) {
7985        if (response.data.result) {
7986          _this4.newComments.push(response.data.comment);
7987          _this4.totalCount++;
7988        }
7989      });
7990      this.$refs.socialContentInput.content = "";
7991    },
7992    createReply: function createReply() {
7993      this.currentReplyList.create();
7994      this.endReply();
7995    },
7996    showDeleteSuccess: function showDeleteSuccess() {
7997      this.$root.$refs.socialCompleteModal.success("留言已刪除");
7998    },
7999    startComment: function startComment() {
8000      this.isReply = false;
8001    },
8002    startCommentWithMobile: function startCommentWithMobile() {
8003      this.$refs.socialContentInput.scrollTo();
8004      this.$refs.socialContentInput.focus();
8005    },
8006    startReply: function startReply(comment) {
8007      var _this5 = this;
8008      this.isReply = true;
8009      this.currentComment = comment;
8010      this.currentReplyList.startReply();
8011      this.$nextTick(function () {
8012        _this5.$parent.$refs.replySocialContentInput.content = "";
8013        _this5.$parent.$refs.replySocialContentInput.focus();
8014      });
8015    },
8016    endReply: function endReply() {
8017      this.isReply = false;
8018      this.currentComment = null;
8019    }
8020  }
8021});
8022
8023/***/ }),
8024
8025/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostEditModal.vue?vue&type=script&lang=js":
8026/*!*************************************************************************************************************************************************************************************************************!*\
8027  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostEditModal.vue?vue&type=script&lang=js ***!
8028  \*************************************************************************************************************************************************************************************************************/
8029/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
8030
8031"use strict";
8032__webpack_require__.r(__webpack_exports__);
8033/* harmony export */ __webpack_require__.d(__webpack_exports__, {
8034/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
8035/* harmony export */ });
8036function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
8037function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
8038function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
8039function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
8040/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
8041  name: "SocialPostEditModal",
8042  data: function data() {
8043    return {
8044      socialPost: {
8045        title: "",
8046        description: "",
8047        medias: [],
8048        friends: []
8049      },
8050      tags: [],
8051      users: [],
8052      videoSrc: "",
8053      imageMaxLength: 1,
8054      isBack: false,
8055      closeModal: false,
8056      timeout: 0
8057    };
8058  },
8059  computed: {
8060    ratio: function ratio() {
8061      return this.socialPost.medias[0].width / this.socialPost.medias[0].height;
8062    },
8063    draftControls: function draftControls() {
8064      return [{
8065        text: "儲存草稿",
8066        action: this.saveDraft
8067      }, {
8068        text: "捨棄貼文",
8069        action: this.abort,
8070        danger: true
8071      }];
8072    }
8073  },
8074  mounted: function mounted() {
8075    var _this = this;
8076    $(this.$refs.editModal).on("hide.bs.modal", function (e) {
8077      if (!_this.socialPost.id && !_this.closeModal) {
8078        _this.$root.$refs.socialControlModal.show(_this.draftControls, "將這則貼文儲存為草稿?", "捨棄之後系統將不會儲存這則貼文。");
8079        e.preventDefault();
8080      } else {
8081        _this.$root.$refs.socialNavbar.toBackPage();
8082        if (_this.isBack) {
8083          _this.$emit("back");
8084        }
8085        _this.socialPost = {
8086          title: "",
8087          description: "",
8088          medias: [],
8089          friends: []
8090        };
8091        _this.tags = [];
8092        _this.users = [];
8093        _this.isBack = false;
8094        _this.closeModal = false;
8095      }
8096    });
8097    this.thumbsSwiper = new Swiper(this.$refs.thumbsSwiper, {
8098      spaceBetween: 10,
8099      slidesPerView: 3,
8100      watchSlidesProgress: true,
8101      centerInsufficientSlides: true,
8102      breakpoints: {
8103        1024: {
8104          slidesPerView: 8,
8105          spaceBetween: 10
8106        },
8107        768: {
8108          slidesPerView: 6,
8109          spaceBetween: 10
8110        }
8111      }
8112    });
8113    this.swiper = new Swiper(this.$refs.swiper, {
8114      loop: true,
8115      spaceBetween: 10,
8116      thumbs: {
8117        swiper: this.thumbsSwiper
8118      }
8119    });
8120  },
8121  methods: {
8122    show: function show(socialPost) {
8123      var _this2 = this;
8124      return _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
8125        var draftSocialPost, image;
8126        return _regeneratorRuntime().wrap(function _callee$(_context) {
8127          while (1) switch (_context.prev = _context.next) {
8128            case 0:
8129              _this2.$root.$refs.socialNavbar.setPage("post");
8130              draftSocialPost = localStorage.getItem("socialPost");
8131              if (draftSocialPost) {
8132                socialPost = JSON.parse(draftSocialPost);
8133                localStorage.removeItem("socialPost");
8134              }
8135              if (!socialPost) {
8136                _context.next = 16;
8137                break;
8138              }
8139              socialPost.medias.forEach(function (media) {
8140                if (media.url) {
8141                  media.src = media.url;
8142                }
8143              });
8144              if (!(socialPost.medias[0].type === "image" && !socialPost.medias[0].width)) {
8145                _context.next = 11;
8146                break;
8147              }
8148              _context.next = 8;
8149              return _this2.getImageObject(socialPost.medias[0].src);
8150            case 8:
8151              image = _context.sent;
8152              socialPost.medias[0].width = image.width;
8153              socialPost.medias[0].height = image.height;
8154            case 11:
8155              _this2.socialPost = socialPost;
8156              _this2.$refs.socialContentInput.content = socialPost.description;
8157              _this2.$nextTick(function () {
8158                if (socialPost.medias[0].type === "video") {
8159                  _this2.$refs.video.load();
8160                }
8161                _this2.updateSwiper();
8162                $(_this2.$refs.editModal).modal("show");
8163              });
8164              _context.next = 17;
8165              break;
8166            case 16:
8167              _this2.$refs.socialUploadModal.show();
8168            case 17:
8169            case "end":
8170              return _context.stop();
8171          }
8172        }, _callee);
8173      }))();
8174    },
8175    hide: function hide() {
8176      $(this.$refs.editModal).modal("hide");
8177    },
8178    back: function back() {
8179      this.isBack = true;
8180      this.hide();
8181    },
8182    updateSwiper: function updateSwiper() {
8183      this.thumbsSwiper.update();
8184      this.swiper.update();
8185      this.swiper.slideTo(this.socialPost.medias.length - 1);
8186    },
8187    pickFile: function pickFile(media) {
8188      this.socialPost.medias.push(media);
8189      $(this.$refs.editModal).modal("show");
8190    },
8191    addFile: function addFile(media) {
8192      var _this3 = this;
8193      this.socialPost.medias.push(media);
8194      this.$nextTick(function () {
8195        if (media.type === "video") {
8196          _this3.$refs.video[0].load();
8197        } else {
8198          _this3.updateSwiper();
8199        }
8200      });
8201    },
8202    getImageObject: function getImageObject(src) {
8203      return new Promise(function (resolve) {
8204        var image = new Image();
8205        image.src = src;
8206        if (image.complete) {
8207          resolve(image);
8208        } else {
8209          image.onload = function () {
8210            resolve(image);
8211          };
8212        }
8213      });
8214    },
8215    removeMedia: function removeMedia(index) {
8216      var _this4 = this;
8217      this.socialPost.medias.splice(index, 1);
8218      this.$nextTick(function () {
8219        _this4.updateSwiper();
8220      });
8221    },
8222    saveDraft: function saveDraft() {
8223      var socialPost = JSON.stringify(this.socialPost);
8224      localStorage.setItem("socialPost", socialPost);
8225      this.isBack = false;
8226      this.closeModal = true;
8227      this.hide();
8228    },
8229    abort: function abort() {
8230      this.closeModal = true;
8231      this.hide();
8232    },
8233    showTags: function showTags(tags) {
8234      this.tags = tags;
8235    },
8236    showUsers: function showUsers(users) {
8237      this.users = users;
8238    },
8239    addTag: function addTag(tag) {
8240      this.$refs.socialContentInput.addTag(tag);
8241      this.tags = [];
8242    },
8243    addUser: function addUser(user) {
8244      this.$refs.socialContentInput.addUser(user);
8245      this.users = [];
8246    },
8247    editTagFriends: function editTagFriends() {
8248      this.$refs.tagUserModal.show(this.socialPost.friends);
8249    },
8250    tagFriends: function tagFriends(users) {
8251      this.socialPost.friends = users;
8252    },
8253    removeTagFriend: function removeTagFriend(user) {
8254      this.socialPost.friends = this.socialPost.friends.filter(function (friend) {
8255        return user.id != friend.id;
8256      });
8257    },
8258    save: function save() {
8259      var _this5 = this;
8260      this.$root.$refs.socialUploadingModal.show();
8261      var params = {
8262        title: this.socialPost.title,
8263        description: this.$refs.socialContentInput.content,
8264        medias: this.socialPost.medias,
8265        users: this.socialPost.friends.map(function (friend) {
8266          return friend.id;
8267        })
8268      };
8269      var request = this.socialPost.id ? axios.put("/social/post/" + this.socialPost.id, params) : axios.post("/social/post", params);
8270      request.then(function (response) {
8271        if (response.data.result) {
8272          if (!_this5.socialPost.id) {
8273            window.location.href = "/social";
8274          } else {
8275            _this5.hide();
8276            _this5.$emit("saved", response.data.social_post);
8277          }
8278        }
8279      })["finally"](function () {
8280        _this5.$root.$refs.socialUploadingModal.hide();
8281      });
8282    }
8283  }
8284});
8285
8286/***/ }),
8287
8288/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostError.vue?vue&type=script&lang=js":
8289/*!*********************************************************************************************************************************************************************************************************!*\
8290  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostError.vue?vue&type=script&lang=js ***!
8291  \*********************************************************************************************************************************************************************************************************/
8292/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
8293
8294"use strict";
8295__webpack_require__.r(__webpack_exports__);
8296/* harmony export */ __webpack_require__.d(__webpack_exports__, {
8297/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
8298/* harmony export */ });
8299/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
8300  name: "SocialPostError",
8301  props: ["showLinks"]
8302});
8303
8304/***/ }),
8305
8306/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostList.vue?vue&type=script&lang=js":
8307/*!********************************************************************************************************************************************************************************************************!*\
8308  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostList.vue?vue&type=script&lang=js ***!
8309  \********************************************************************************************************************************************************************************************************/
8310/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
8311
8312"use strict";
8313__webpack_require__.r(__webpack_exports__);
8314/* harmony export */ __webpack_require__.d(__webpack_exports__, {
8315/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
8316/* harmony export */ });
8317function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
8318function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
8319function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
8320function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
8321function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
8322function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
8323/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
8324  name: "SocialPostList",
8325  props: ["apiUrl"],
8326  data: function data() {
8327    return {
8328      socialPosts: [],
8329      page: 0,
8330      pageSize: 20,
8331      next: false,
8332      isLoading: false,
8333      currentPostIndex: null
8334    };
8335  },
8336  mounted: function mounted() {
8337    var _this = this;
8338    this.observer = new IntersectionObserver(function (entries, observer) {
8339      entries.forEach(function (entry) {
8340        if (!entry.isIntersecting || _this.isLoading) return;
8341        _this.loadPosts();
8342      });
8343    }, {
8344      rootMargin: "0px 0px 200px 0px"
8345    });
8346    this.loadPosts();
8347  },
8348  methods: {
8349    loadPosts: function loadPosts() {
8350      var _this2 = this;
8351      this.isLoading = true;
8352      axios.post(this.apiUrl, {
8353        offset: this.page * this.pageSize,
8354        limit: this.pageSize
8355      }).then(function (response) {
8356        if (response.data.socialPosts.length > 0) {
8357          var _this2$socialPosts;
8358          (_this2$socialPosts = _this2.socialPosts).push.apply(_this2$socialPosts, _toConsumableArray(response.data.socialPosts));
8359          _this2.$nextTick(function () {
8360            if (!_this2.msnry) {
8361              _this2.msnry = new Masonry(".social-index-grid", {
8362                itemSelector: ".social-index-grid-item"
8363              });
8364            }
8365            _this2.msnry.reloadItems();
8366            _this2.msnry.layout();
8367          });
8368        }
8369        if (_this2.page == 0 && response.data.next) {
8370          _this2.$nextTick(function () {
8371            _this2.observer.observe(_this2.$refs.bottom);
8372          });
8373        } else if (_this2.page > 0 && !response.data.next) {
8374          _this2.observer.unobserve(_this2.$refs.bottom);
8375        }
8376        _this2.page++;
8377        _this2.isLoading = false;
8378      });
8379    },
8380    showPost: function showPost(index) {
8381      this.$router.push({
8382        name: "socialPost",
8383        params: {
8384          id: this.socialPosts[index].id
8385        }
8386      });
8387    },
8388    showUser: function showUser(aliasName) {
8389      this.$router.push({
8390        name: "socialUser",
8391        params: {
8392          name: aliasName
8393        }
8394      });
8395    },
8396    updatePost: function updatePost(socialPost) {
8397      this.socialPosts.splice(this.currentPostIndex, 1, socialPost);
8398    },
8399    removePost: function removePost() {
8400      var _this3 = this;
8401      this.socialPosts.splice(this.currentPostIndex, 1);
8402      this.$nextTick(function () {
8403        _this3.msnry.reloadItems();
8404        _this3.msnry.layout();
8405      });
8406    }
8407  }
8408});
8409
8410/***/ }),
8411
8412/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostPage.vue?vue&type=script&lang=js":
8413/*!********************************************************************************************************************************************************************************************************!*\
8414  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostPage.vue?vue&type=script&lang=js ***!
8415  \********************************************************************************************************************************************************************************************************/
8416/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
8417
8418"use strict";
8419__webpack_require__.r(__webpack_exports__);
8420/* harmony export */ __webpack_require__.d(__webpack_exports__, {
8421/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
8422/* harmony export */ });
8423/* harmony import */ var vue_awesome_swiper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue-awesome-swiper */ "./node_modules/vue-awesome-swiper/dist/vue-awesome-swiper.js");
8424/* harmony import */ var vue_awesome_swiper__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue_awesome_swiper__WEBPACK_IMPORTED_MODULE_0__);
8425function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
8426function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
8427function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
8428function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
8429
8430/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
8431  name: "SocialPostPage",
8432  components: {
8433    swiper: vue_awesome_swiper__WEBPACK_IMPORTED_MODULE_0__.swiper,
8434    swiperSlide: vue_awesome_swiper__WEBPACK_IMPORTED_MODULE_0__.swiperSlide
8435  },
8436  data: function data() {
8437    return {
8438      isLoaded: false,
8439      socialPost: null,
8440      isAdminLoggedIn: false,
8441      ratio: 0,
8442      swiperOption: {
8443        spaceBetween: 10,
8444        pagination: {
8445          el: ".social-post-swiper-pagination",
8446          dynamicBullets: true
8447        }
8448      },
8449      commentListMounted: false,
8450      tags: [],
8451      users: []
8452    };
8453  },
8454  computed: {
8455    controls: function controls() {
8456      if (!this.socialPost) {
8457        return [];
8458      }
8459      if (this.socialPost.user.is_self || this.isAdminLoggedIn) {
8460        return [{
8461          text: "編輯",
8462          action: this.startEdit
8463        }, {
8464          text: "刪除",
8465          action: this.startDelete,
8466          danger: true
8467        }, {
8468          text: "傳送訊息",
8469          action: this.toMessagePage
8470        }, {
8471          text: "複製連結",
8472          action: this.copyUrl
8473        }];
8474      }
8475      return [{
8476        text: "傳送訊息",
8477        action: this.toMessagePage
8478      }, {
8479        text: "複製連結",
8480        action: this.copyUrl
8481      }, {
8482        text: "檢舉",
8483        action: this.report,
8484        danger: true
8485      }];
8486    },
8487    likeClassList: function likeClassList() {
8488      return {
8489        "bg-basic": true,
8490        "social-post-card-like-btn": this.socialPost.is_like,
8491        "social-post-like-btn": this.socialPost.is_like,
8492        "social-post-card-unlike-btn": !this.socialPost.is_like,
8493        "social-post-unlike-btn": !this.socialPost.is_like
8494      };
8495    }
8496  },
8497  mounted: function mounted() {
8498    var _this = this;
8499    axios.post("/social/post/" + this.$route.params.id).then(/*#__PURE__*/function () {
8500      var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(response) {
8501        var image;
8502        return _regeneratorRuntime().wrap(function _callee$(_context) {
8503          while (1) switch (_context.prev = _context.next) {
8504            case 0:
8505              if (!response.data.result) {
8506                _context.next = 11;
8507                break;
8508              }
8509              document.title = response.data.socialPost.title ? response.data.socialPost.title : "貼文";
8510              _this.socialPost = response.data.socialPost;
8511              if (!(response.data.socialPost.medias[0].type == "image")) {
8512                _context.next = 10;
8513                break;
8514              }
8515              _context.next = 6;
8516              return _this.getImageObject(response.data.socialPost.medias[0].url);
8517            case 6:
8518              image = _context.sent;
8519              _this.ratio = image.width / image.height;
8520              _context.next = 11;
8521              break;
8522            case 10:
8523              _this.$nextTick(function () {
8524                _this.$refs.video.load();
8525                _this.$refs.video.onloadeddata = function () {
8526                  _this.$refs.video.play();
8527                };
8528              });
8529            case 11:
8530            case "end":
8531              return _context.stop();
8532          }
8533        }, _callee);
8534      }));
8535      return function (_x) {
8536        return _ref.apply(this, arguments);
8537      };
8538    }())["finally"](function () {
8539      _this.isLoaded = true;
8540    });
8541    axios.get('/admin/is-logged-in').then(function (response) {
8542      if (response.data === true) {
8543        _this.isAdminLoggedIn = true;
8544      }
8545    })["catch"](function (error) {
8546      console.error('Error checking admin login:', error);
8547    });
8548  },
8549  methods: {
8550    showUser: function showUser(aliasName) {
8551      this.$router.push({
8552        name: "socialUser",
8553        params: {
8554          name: aliasName
8555        }
8556      });
8557    },
8558    toMessagePage: function toMessagePage() {
8559      this.$router.push({
8560        name: "socialMessage",
8561        params: {
8562          id: this.socialPost.user.id
8563        }
8564      });
8565    },
8566    back: function back() {
8567      this.$router.back();
8568    },
8569    openControls: function openControls() {
8570      this.$root.$refs.socialControlModal.show(this.controls);
8571    },
8572    nl2br: function nl2br(str, replaceMode, isXhtml) {
8573      var breakTag = isXhtml ? "<br />" : "<br>";
8574      var replaceStr = replaceMode ? "$1" + breakTag : "$1" + breakTag + "$2";
8575      return (str + "").replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, replaceStr);
8576    },
8577    getImageObject: function getImageObject(src) {
8578      return new Promise(function (resolve) {
8579        var image = new Image();
8580        image.src = src;
8581        if (image.complete) {
8582          resolve(image);
8583        } else {
8584          image.onload = function () {
8585            resolve(image);
8586          };
8587        }
8588      });
8589    },
8590    startComment: function startComment() {
8591      this.$refs.commentList.startComment();
8592      this.$refs.socialContentInput.focus();
8593    },
8594    doLike: function doLike() {
8595      if (this.socialPost.is_login) {
8596        this.socialPost.is_like ? this.unlike() : this.like();
8597      } else {
8598        if (confirm("請先登入")) {
8599          window.location.href = '/login';
8600        }
8601      }
8602    },
8603    like: function like() {
8604      axios.post("/social/post/like", {
8605        social_post_id: this.socialPost.id
8606      });
8607      this.socialPost.is_like = true;
8608      this.socialPost.like_count++;
8609      this.$emit("updated", this.socialPost);
8610    },
8611    unlike: function unlike() {
8612      axios.post("/social/post/unlike", {
8613        social_post_id: this.socialPost.id
8614      });
8615      this.socialPost.is_like = false;
8616      this.socialPost.like_count--;
8617      this.$emit("updated", this.socialPost);
8618    },
8619    follow: function follow() {
8620      if (this.socialPost.is_login) {
8621        axios.post("/user/follow", {
8622          user_id: this.socialPost.user.id
8623        });
8624        this.socialPost.user.is_follow = true;
8625      } else {
8626        if (confirm("請先登入")) {
8627          window.location.href = '/login';
8628        }
8629      }
8630    },
8631    unfollow: function unfollow() {
8632      axios.post("/user/unfollow", {
8633        user_id: this.socialPost.user.id
8634      });
8635      this.socialPost.user.is_follow = false;
8636    },
8637    startEdit: function startEdit() {
8638      this.$refs.editModal.show(JSON.parse(JSON.stringify(this.socialPost)));
8639    },
8640    startDelete: function startDelete() {
8641      this.$refs.deleteConfirmModal.show();
8642    },
8643    startShare: function startShare() {
8644      this.$refs.shareModal.show(this.socialPost.absolute_url);
8645    },
8646    share: function share(userIds, content) {
8647      var _this2 = this;
8648      this.$refs.shareModal.hide();
8649      axios.post("/chat", {
8650        user_ids: userIds,
8651        content: content,
8652        share_type: 4,
8653        share_object_id: this.socialPost.id
8654      }).then(function (response) {
8655        if (response.data.result) {
8656          _this2.$root.$refs.socialCompleteModal.success("貼文已分享");
8657        } else {
8658          _this2.$root.$refs.socialCompleteModal.fail("分享失敗");
8659        }
8660      });
8661    },
8662    copyUrl: function copyUrl() {
8663      navigator.clipboard.writeText(this.socialPost.absolute_url);
8664      this.$root.$refs.socialCompleteModal.success("連結已複製");
8665    },
8666    report: function report() {
8667      this.$refs.reportModal.show(this.socialPost.id);
8668    },
8669    showTags: function showTags(tags) {
8670      this.tags = tags;
8671    },
8672    showUsers: function showUsers(users) {
8673      this.users = users;
8674    },
8675    addTag: function addTag(tag) {
8676      this.$refs.socialContentInput.addTag(tag);
8677      this.tags = [];
8678    },
8679    addUser: function addUser(user) {
8680      this.$refs.socialContentInput.addUser(user);
8681      this.users = [];
8682    },
8683    showFriends: function showFriends() {
8684      this.$refs.friendModal.show();
8685    },
8686    onCommentInputChange: function onCommentInputChange(newValue, oldValue) {
8687      this.$refs.commentList.$refs.socialContentInput.content = newValue;
8688    },
8689    onReplyInputChange: function onReplyInputChange(newValue, oldValue) {
8690      if (this.$refs.commentList.currentReplyList) {
8691        this.$refs.commentList.currentReplyList.setReply(newValue);
8692      }
8693    },
8694    createComment: function createComment() {
8695      if (this.socialPost.is_login) {
8696        this.$refs.commentList.create();
8697        this.$refs.socialContentInput.content = "";
8698      } else {
8699        if (confirm("請先登入")) {
8700          window.location.href = '/login';
8701        }
8702      }
8703    },
8704    createReply: function createReply() {
8705      if (this.socialPost.is_login) {
8706        this.$refs.commentList.createReply();
8707        this.$refs.replySocialContentInput.content = "";
8708      } else {
8709        if (confirm("請先登入")) {
8710          window.location.href = '/login';
8711        }
8712      }
8713    },
8714    updated: function updated(socialPost) {
8715      this.socialPost = socialPost;
8716
8717      // this.$nextTick(() => {
8718      //   this.swiper.update();
8719      // });
8720
8721      this.$emit("updated", socialPost);
8722    },
8723    destroy: function destroy() {
8724      axios["delete"](this.socialPost.delete_url);
8725      this.$emit("deleted", this.socialPost);
8726      window.location.href = '/social';
8727    }
8728  }
8729});
8730
8731/***/ }),
8732
8733/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostReplyList.vue?vue&type=script&lang=js":
8734/*!*************************************************************************************************************************************************************************************************************!*\
8735  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostReplyList.vue?vue&type=script&lang=js ***!
8736  \*************************************************************************************************************************************************************************************************************/
8737/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
8738
8739"use strict";
8740__webpack_require__.r(__webpack_exports__);
8741/* harmony export */ __webpack_require__.d(__webpack_exports__, {
8742/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
8743/* harmony export */ });
8744function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
8745function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
8746function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
8747function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
8748function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
8749function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
8750/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
8751  name: "SocialPostReplyList",
8752  props: ["comment", "showDeleteSuccess", "isAdminLoggedIn"],
8753  data: function data() {
8754    return {
8755      newReplies: [],
8756      showReplies: this.comment.replies,
8757      totalCount: this.comment.comment_count,
8758      maxPage: 1,
8759      pageSize: 2,
8760      isLoading: false,
8761      showReply: false,
8762      tags: [],
8763      users: []
8764    };
8765  },
8766  computed: {
8767    replies: function replies() {
8768      return this.showReplies.concat(this.newReplies);
8769    }
8770  },
8771  watch: {
8772    content: function content(value) {
8773      this.$emit("contentChange", value);
8774    }
8775  },
8776  methods: {
8777    load: function load() {
8778      var _this = this;
8779      this.maxPage++;
8780      this.isLoading = true;
8781      axios.get("/social/post/comment", {
8782        params: {
8783          social_post_comment_id: this.comment.id,
8784          offset: (this.maxPage - 1) * this.pageSize,
8785          limit: this.pageSize
8786        }
8787      }).then(function (response) {
8788        var _this$showReplies;
8789        (_this$showReplies = _this.showReplies).push.apply(_this$showReplies, _toConsumableArray(response.data.comments));
8790        _this.totalCount = response.data.totalCount;
8791        _this.isLoading = false;
8792      });
8793    },
8794    startReply: function startReply() {
8795      var _this2 = this;
8796      this.showReply = true;
8797      this.$nextTick(function () {
8798        _this2.$refs.socialContentInput.scrollTo();
8799        _this2.$refs.socialContentInput.focus();
8800      });
8801    },
8802    endReply: function endReply() {
8803      this.showReply = false;
8804      this.$refs.socialContentInput.content = "";
8805    },
8806    setReply: function setReply(content) {
8807      this.$refs.socialContentInput.content = content;
8808    },
8809    showTags: function showTags(tags) {
8810      this.tags = tags;
8811    },
8812    showUsers: function showUsers(users) {
8813      this.users = users;
8814    },
8815    addTag: function addTag(tag) {
8816      this.$refs.socialContentInput.addTag(tag);
8817      this.tags = [];
8818    },
8819    addUser: function addUser(user) {
8820      this.$refs.socialContentInput.addUser(user);
8821      this.users = [];
8822    },
8823    create: function create() {
8824      var _this3 = this;
8825      axios.post("/social/post/comment", {
8826        social_post_id: this.comment.social_post_id,
8827        social_post_comment_id: this.comment.id,
8828        content: this.$refs.socialContentInput.content
8829      }).then(function (response) {
8830        if (response.data.result) {
8831          _this3.newReplies.push(response.data.comment);
8832          _this3.totalCount++;
8833        }
8834      });
8835      this.showReply = false;
8836      this.$refs.socialContentInput.content = "";
8837      this.$emit("created");
8838    }
8839  }
8840});
8841
8842/***/ }),
8843
8844/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialSearchModal.vue?vue&type=script&lang=js":
8845/*!***********************************************************************************************************************************************************************************************************!*\
8846  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialSearchModal.vue?vue&type=script&lang=js ***!
8847  \***********************************************************************************************************************************************************************************************************/
8848/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
8849
8850"use strict";
8851__webpack_require__.r(__webpack_exports__);
8852/* harmony export */ __webpack_require__.d(__webpack_exports__, {
8853/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
8854/* harmony export */ });
8855/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
8856  name: "SocialSearchModal",
8857  data: function data() {
8858    return {
8859      keyword: "",
8860      timeout: null,
8861      records: [],
8862      result: []
8863    };
8864  },
8865  watch: {
8866    keyword: function keyword(newValue, oldValue) {
8867      var _this = this;
8868      if (this.timeout) {
8869        clearTimeout(this.timeout);
8870      }
8871      if (newValue.length > 0) {
8872        this.timeout = setTimeout(function () {
8873          axios.post("/social/search", {
8874            keyword: newValue
8875          }).then(function (response) {
8876            _this.result = response.data.result;
8877          });
8878        }, 500);
8879      } else {
8880        this.result = this.records;
8881      }
8882    }
8883  },
8884  mounted: function mounted() {
8885    var _this2 = this;
8886    $(this.$refs.modal).on("show.bs.modal", function (e) {
8887      _this2.$root.$refs.socialNavbar.setPage("search");
8888    });
8889    $(this.$refs.modal).on("hide.bs.modal", function (e) {
8890      _this2.keyword = "";
8891      _this2.$root.$refs.socialNavbar.toBackPage();
8892    });
8893  },
8894  methods: {
8895    show: function show() {
8896      var _this3 = this;
8897      axios.get("/social/search/record").then(function (response) {
8898        if (response.data.result) {
8899          _this3.records = response.data.records;
8900          _this3.result = _this3.records;
8901        }
8902      });
8903      $(this.$refs.modal).modal("show");
8904    },
8905    hide: function hide() {
8906      $(this.$refs.modal).modal("hide");
8907    },
8908    toTagPage: function toTagPage(tag) {
8909      axios.post("/social/search/record", {
8910        search_tag_id: tag.id
8911      });
8912      this.hide();
8913      this.$router.push({
8914        name: "socialTag",
8915        params: {
8916          name: tag.name
8917        }
8918      });
8919    },
8920    toUserPage: function toUserPage(user) {
8921      axios.post("/social/search/record", {
8922        search_user_id: user.id
8923      });
8924      this.hide();
8925      this.$router.push({
8926        name: "socialUser",
8927        params: {
8928          name: user.alias_name
8929        }
8930      });
8931    },
8932    toPlacePage: function toPlacePage(place) {
8933      axios.post("/social/search/record", {
8934        search_place_id: place.id
8935      });
8936      this.hide();
8937      this.$router.push({
8938        name: "socialPlace",
8939        params: {
8940          id: place.id
8941        }
8942      });
8943    },
8944    startDelete: function startDelete() {
8945      this.$refs.deleteConfirmModal.show();
8946    },
8947    destroy: function destroy(id) {
8948      var _this4 = this;
8949      var url = "/social/search/record";
8950      if (id) {
8951        url += "/" + id;
8952      }
8953      axios["delete"](url).then(function (reponse) {
8954        if (!id) {
8955          if (reponse.data.result) {
8956            _this4.$root.$refs.socialCompleteModal.success("搜尋記錄已清除");
8957          } else {
8958            _this4.$root.$refs.socialCompleteModal.fail("搜尋記錄清除失敗");
8959          }
8960        }
8961      });
8962      if (id) {
8963        this.records = this.records.filter(function (record) {
8964          return record.id != id;
8965        });
8966      } else {
8967        this.records = [];
8968      }
8969      this.result = this.records;
8970    }
8971  }
8972});
8973
8974/***/ }),
8975
8976/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialSelectUserModal.vue?vue&type=script&lang=js":
8977/*!***************************************************************************************************************************************************************************************************************!*\
8978  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialSelectUserModal.vue?vue&type=script&lang=js ***!
8979  \***************************************************************************************************************************************************************************************************************/
8980/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
8981
8982"use strict";
8983__webpack_require__.r(__webpack_exports__);
8984/* harmony export */ __webpack_require__.d(__webpack_exports__, {
8985/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
8986/* harmony export */ });
8987/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
8988  name: "SocialSelectUserModal",
8989  props: ["title"],
8990  data: function data() {
8991    return {
8992      users: [],
8993      selectedUsers: [],
8994      keyword: "",
8995      timeout: null
8996    };
8997  },
8998  computed: {
8999    canSubmit: function canSubmit() {
9000      return this.selectedUsers.length > 0;
9001    }
9002  },
9003  watch: {
9004    keyword: function keyword(newValue, oldValue) {
9005      var _this = this;
9006      if (this.timeout) {
9007        clearTimeout(this.timeout);
9008      }
9009      this.timeout = setTimeout(function () {
9010        axios.post("/api/social/users", {
9011          keyword: newValue
9012        }).then(function (response) {
9013          _this.users = response.data.users;
9014        });
9015      }, 500);
9016    }
9017  },
9018  mounted: function mounted() {
9019    var _this2 = this;
9020    axios.post("/chat/users").then(function (response) {
9021      if (response.data.result) {
9022        _this2.users = response.data.users;
9023      }
9024    });
9025  },
9026  methods: {
9027    show: function show(users) {
9028      this.selectedUsers = users;
9029      $(this.$refs.modal).modal("show");
9030    },
9031    hide: function hide() {
9032      $(this.$refs.modal).modal("hide");
9033    },
9034    selectUser: function selectUser(user) {
9035      if (this.getIsChecked(user)) {
9036        this.removeUser(user);
9037      } else {
9038        this.selectedUsers.push(user);
9039      }
9040    },
9041    removeUser: function removeUser(user) {
9042      this.selectedUsers = this.selectedUsers.filter(function (selectedUser) {
9043        return user.id != selectedUser.id;
9044      });
9045    },
9046    getIsChecked: function getIsChecked(user) {
9047      return this.selectedUsers.some(function (selectedUser) {
9048        return user.id == selectedUser.id;
9049      });
9050    },
9051    submit: function submit() {
9052      this.$emit("submit", this.selectedUsers);
9053      this.hide();
9054    }
9055  }
9056});
9057
9058/***/ }),
9059
9060/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialShareModal.vue?vue&type=script&lang=js":
9061/*!**********************************************************************************************************************************************************************************************************!*\
9062  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialShareModal.vue?vue&type=script&lang=js ***!
9063  \**********************************************************************************************************************************************************************************************************/
9064/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
9065
9066"use strict";
9067__webpack_require__.r(__webpack_exports__);
9068/* harmony export */ __webpack_require__.d(__webpack_exports__, {
9069/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
9070/* harmony export */ });
9071/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
9072  name: "SocialShareModal",
9073  props: ["title", "copyTitle"],
9074  data: function data() {
9075    return {
9076      url: ""
9077    };
9078  },
9079  methods: {
9080    show: function show(url) {
9081      this.url = url;
9082      $(this.$refs.modal).modal("show");
9083    },
9084    hide: function hide() {
9085      $(this.$refs.modal).modal("hide");
9086    },
9087    copy: function copy() {
9088      navigator.clipboard.writeText(this.url);
9089      this.$root.$refs.socialCompleteModal.success("連結已複製");
9090    },
9091    startShare: function startShare() {
9092      this.$refs.chatSelectUserModal.show();
9093    },
9094    share: function share(userIds, content) {
9095      this.$emit("share", userIds, content);
9096    }
9097  }
9098});
9099
9100/***/ }),
9101
9102/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialTagPage.vue?vue&type=script&lang=js":
9103/*!*******************************************************************************************************************************************************************************************************!*\
9104  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialTagPage.vue?vue&type=script&lang=js ***!
9105  \*******************************************************************************************************************************************************************************************************/
9106/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
9107
9108"use strict";
9109__webpack_require__.r(__webpack_exports__);
9110/* harmony export */ __webpack_require__.d(__webpack_exports__, {
9111/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
9112/* harmony export */ });
9113/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
9114  name: "SocialTagPage",
9115  data: function data() {
9116    return {
9117      tag: null
9118    };
9119  },
9120  mounted: function mounted() {
9121    var _this = this;
9122    axios.post("/social/tag/" + (this.name ? this.name : this.$route.params.name)).then(function (response) {
9123      if (response.data.result) {
9124        document.title = response.data.tag.name;
9125        _this.tag = response.data.tag;
9126      }
9127    });
9128  },
9129  methods: {
9130    back: function back() {
9131      this.$router.back();
9132    }
9133  }
9134});
9135
9136/***/ }),
9137
9138/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialUpload.vue?vue&type=script&lang=js":
9139/*!******************************************************************************************************************************************************************************************************!*\
9140  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialUpload.vue?vue&type=script&lang=js ***!
9141  \******************************************************************************************************************************************************************************************************/
9142/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
9143
9144"use strict";
9145__webpack_require__.r(__webpack_exports__);
9146/* harmony export */ __webpack_require__.d(__webpack_exports__, {
9147/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
9148/* harmony export */ });
9149/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
9150  name: "SocialUpload",
9151  props: ["videoLengthStr", "videoLength", "videoSize", "imageSize"],
9152  data: function data() {
9153    return {
9154      hasNext: false
9155    };
9156  },
9157  mounted: function mounted() {
9158    var _this = this;
9159    $(this.$refs.modal).on("hide.bs.modal", function (e) {
9160      if (!_this.hasNext) {
9161        _this.$root.$refs.socialNavbar.toBackPage("post");
9162        _this.hasNext = false;
9163      }
9164    });
9165  },
9166  methods: {
9167    show: function show() {
9168      $(this.$refs.modal).modal("show");
9169    },
9170    hide: function hide() {
9171      $(this.$refs.modal).modal("hide");
9172    },
9173    pick: function pick(media) {
9174      this.hasNext = true;
9175      this.hide();
9176      this.$emit("pick", media);
9177    }
9178  }
9179});
9180
9181/***/ }),
9182
9183/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialUploadFailModal.vue?vue&type=script&lang=js":
9184/*!***************************************************************************************************************************************************************************************************************!*\
9185  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialUploadFailModal.vue?vue&type=script&lang=js ***!
9186  \***************************************************************************************************************************************************************************************************************/
9187/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
9188
9189"use strict";
9190__webpack_require__.r(__webpack_exports__);
9191/* harmony export */ __webpack_require__.d(__webpack_exports__, {
9192/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
9193/* harmony export */ });
9194/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
9195  name: "SocialUploadFailModal",
9196  data: function data() {
9197    return {
9198      videoSize: 0,
9199      imageSize: 0
9200    };
9201  },
9202  methods: {
9203    show: function show(videoSize, imageSize) {
9204      this.videoSize = videoSize;
9205      this.imageSize = imageSize;
9206      $(this.$refs.modal).modal("show");
9207    },
9208    hide: function hide() {
9209      $(this.$refs.modal).modal("hide");
9210    }
9211  }
9212});
9213
9214/***/ }),
9215
9216/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialUploadingModal.vue?vue&type=script&lang=js":
9217/*!**************************************************************************************************************************************************************************************************************!*\
9218  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialUploadingModal.vue?vue&type=script&lang=js ***!
9219  \**************************************************************************************************************************************************************************************************************/
9220/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
9221
9222"use strict";
9223__webpack_require__.r(__webpack_exports__);
9224/* harmony export */ __webpack_require__.d(__webpack_exports__, {
9225/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
9226/* harmony export */ });
9227/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
9228  name: "SocialUploadingModal",
9229  mounted: function mounted() {
9230    var _this = this;
9231    $(this.$refs.modal).on("hidden.bs.modal", function (e) {
9232      $(_this.$refs.modal).find(".progress-bar").width(0);
9233    });
9234  },
9235  methods: {
9236    show: function show() {
9237      $(this.$refs.modal).find(".progress-bar").animate({
9238        width: "100%"
9239      }, 300);
9240      $(this.$refs.modal).modal("show");
9241    },
9242    hide: function hide() {
9243      $(this.$refs.modal).modal("hide");
9244    }
9245  }
9246});
9247
9248/***/ }),
9249
9250/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialUserModal.vue?vue&type=script&lang=js":
9251/*!*********************************************************************************************************************************************************************************************************!*\
9252  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialUserModal.vue?vue&type=script&lang=js ***!
9253  \*********************************************************************************************************************************************************************************************************/
9254/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
9255
9256"use strict";
9257__webpack_require__.r(__webpack_exports__);
9258/* harmony export */ __webpack_require__.d(__webpack_exports__, {
9259/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
9260/* harmony export */ });
9261/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
9262  name: "SocialUserModal",
9263  props: ["title", "users"],
9264  methods: {
9265    show: function show() {
9266      $(this.$refs.modal).modal("show");
9267    },
9268    hide: function hide() {
9269      $(this.$refs.modal).modal("hide");
9270    },
9271    follow: function follow(user) {
9272      axios.post("/user/follow", {
9273        user_id: user.id
9274      });
9275      user.is_follow = true;
9276    },
9277    unfollow: function unfollow(user) {
9278      axios.post("/user/unfollow", {
9279        user_id: user.id
9280      });
9281      user.is_follow = false;
9282    },
9283    showUser: function showUser(aliasName) {
9284      this.$router.push({
9285        name: "socialUser",
9286        params: {
9287          name: aliasName
9288        }
9289      });
9290    }
9291  }
9292});
9293
9294/***/ }),
9295
9296/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialUserPage.vue?vue&type=script&lang=js":
9297/*!********************************************************************************************************************************************************************************************************!*\
9298  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialUserPage.vue?vue&type=script&lang=js ***!
9299  \********************************************************************************************************************************************************************************************************/
9300/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
9301
9302"use strict";
9303__webpack_require__.r(__webpack_exports__);
9304/* harmony export */ __webpack_require__.d(__webpack_exports__, {
9305/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
9306/* harmony export */ });
9307function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
9308function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
9309function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
9310function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
9311/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
9312  name: "SocialUserPage",
9313  data: function data() {
9314    return {
9315      user: null,
9316      name: "",
9317      introduction: "",
9318      isEditMode: false
9319    };
9320  },
9321  mounted: function mounted() {
9322    var _this = this;
9323    axios.post("/social/user/" + (this.name ? this.name : this.$route.params.name)).then(/*#__PURE__*/function () {
9324      var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(response) {
9325        return _regeneratorRuntime().wrap(function _callee$(_context) {
9326          while (1) switch (_context.prev = _context.next) {
9327            case 0:
9328              if (response.data.result) {
9329                _this.user = response.data.user;
9330              }
9331            case 1:
9332            case "end":
9333              return _context.stop();
9334          }
9335        }, _callee);
9336      }));
9337      return function (_x) {
9338        return _ref.apply(this, arguments);
9339      };
9340    }());
9341  },
9342  computed: {
9343    settings: function settings() {
9344      var _this2 = this;
9345      if (this.user.is_self) {
9346        return [{
9347          text: "複製個人頁面網址",
9348          action: this.copyUrl,
9349          active: true
9350        }, {
9351          text: "分享個人頁面",
9352          action: this.startShare,
9353          active: true
9354        }, {
9355          text: "已封鎖帳號",
9356          action: this.openLocks,
9357          active: true
9358        }];
9359      }
9360      return [{
9361        text: "檢舉",
9362        action: this.report,
9363        active: true
9364      }, {
9365        text: "封鎖",
9366        action: function action() {
9367          _this2.lock(_this2.user);
9368        },
9369        active: !this.user.is_lock
9370      }, {
9371        text: "解除封鎖",
9372        action: this.unlock,
9373        active: this.user.is_lock
9374      }, {
9375        text: "移除粉絲",
9376        action: this.startUnfollowMe,
9377        active: this.user.is_follow_me
9378      }, {
9379        text: "複製商業檔案網址",
9380        action: this.copyUrl,
9381        active: true
9382      }, {
9383        text: "分享這個商業檔案",
9384        action: this.startShare,
9385        active: true
9386      }, {
9387        text: "贈送點數",
9388        action: this.startSendPointGift,
9389        active: !this.user.is_lock
9390      }, {
9391        text: "傳送訊息",
9392        action: this.toMessagePage,
9393        active: true
9394      }];
9395    }
9396  },
9397  methods: {
9398    toUserPage: function toUserPage(user) {
9399      this.$router.push({
9400        name: "socialUser",
9401        params: {
9402          name: user.alias_name
9403        }
9404      });
9405    },
9406    toMessagePage: function toMessagePage() {
9407      this.closeSettings();
9408      this.$router.push({
9409        name: "socialMessage",
9410        params: {
9411          id: this.user.id
9412        }
9413      });
9414    },
9415    back: function back() {
9416      if (this.id) {
9417        window.location.href = "/social";
9418      } else {
9419        this.$router.back();
9420      }
9421    },
9422    openFollows: function openFollows() {
9423      $(this.$refs.followModal).modal("show");
9424    },
9425    closeFollows: function closeFollows() {
9426      $(this.$refs.followModal).modal("hide");
9427    },
9428    openFollowMes: function openFollowMes() {
9429      $(this.$refs.followMeModal).modal("show");
9430    },
9431    closeFollowMes: function closeFollowMes() {
9432      $(this.$refs.followMeModal).modal("hide");
9433    },
9434    openLocks: function openLocks() {
9435      $(this.$refs.lockModal).modal("show");
9436    },
9437    closeLocks: function closeLocks() {
9438      $(this.$refs.lockModal).modal("hide");
9439    },
9440    openSettings: function openSettings() {
9441      $(this.$refs.settingModal).modal("show");
9442    },
9443    closeSettings: function closeSettings() {
9444      $(this.$refs.settingModal).modal("hide");
9445    },
9446    openGift: function openGift() {
9447      $(this.$refs.giftModal).modal("show");
9448    },
9449    closeGift: function closeGift() {
9450      $(this.$refs.giftModal).modal("hide");
9451    },
9452    startEdit: function startEdit() {
9453      this.name = this.user.name;
9454      this.introduction = this.user.introduction;
9455      this.isEditMode = true;
9456    },
9457    update: function update() {
9458      var _this3 = this;
9459      axios.put("/user/" + this.user.id, {
9460        name: this.name,
9461        introduction: this.introduction
9462      }).then(function (response) {
9463        if (response.data.result) {
9464          _this3.user.name = _this3.name;
9465          _this3.user.introduction = _this3.introduction;
9466        }
9467      });
9468      this.isEditMode = false;
9469    },
9470    follow: function follow(user) {
9471      axios.post("/user/follow", {
9472        user_id: user.id
9473      });
9474      user.is_follow = true;
9475    },
9476    unfollow: function unfollow(user) {
9477      axios.post("/user/unfollow", {
9478        user_id: user.id
9479      });
9480      user.is_follow = false;
9481    },
9482    startUnfollowMe: function startUnfollowMe() {
9483      this.$refs.unfollowMeConfirmModal.show();
9484    },
9485    unfollowMe: function unfollowMe() {
9486      var _this4 = this;
9487      axios.post("/user/unfollowMe", {
9488        user_id: this.user.id
9489      }).then(function (response) {
9490        if (response.data.result) {
9491          _this4.user.is_follow_me = false;
9492          _this4.$root.$refs.socialCompleteModal.success("粉絲已移除");
9493        }
9494      });
9495    },
9496    lock: function lock(user) {
9497      axios.post("/user/lock", {
9498        user_id: user.id
9499      });
9500      user.is_lock = true;
9501    },
9502    unlock: function unlock(user) {
9503      axios.post("/user/unlock", {
9504        user_id: user.id
9505      });
9506      user.is_lock = false;
9507    },
9508    report: function report() {
9509      this.$refs.reportModal.show(this.user.id);
9510      this.closeSettings();
9511    },
9512    startShare: function startShare() {
9513      this.$refs.shareModal.show(this.user.absolute_url);
9514    },
9515    share: function share(userIds, content) {
9516      var _this5 = this;
9517      this.$refs.shareModal.hide();
9518      axios.post("/chat", {
9519        user_ids: userIds,
9520        content: content,
9521        share_type: 5,
9522        share_object_id: this.user.id
9523      }).then(function (response) {
9524        if (response.data.result) {
9525          _this5.$root.$refs.socialCompleteModal.success("個人檔案已分享");
9526        } else {
9527          _this5.$root.$refs.socialCompleteModal.fail("分享失敗");
9528        }
9529      });
9530    },
9531    copyUrl: function copyUrl() {
9532      navigator.clipboard.writeText(this.user.absolute_url);
9533      this.$root.$refs.socialCompleteModal.success("連結已複製");
9534    },
9535    startSendPointGift: function startSendPointGift() {
9536      this.$refs.sendPointGiftConfirmModal.show();
9537    },
9538    sendPointGift: function sendPointGift() {
9539      var _this6 = this;
9540      axios.post("/user/sendPointGift", {
9541        user_id: this.user.id
9542      }).then(function (response) {
9543        if (response.data.result) {
9544          _this6.user.can_send_gift = false;
9545          _this6.$root.$refs.socialCompleteModal.success("點數已贈送");
9546        } else {
9547          _this6.$root.$refs.socialCompleteModal.fail("已達每日上限");
9548        }
9549      });
9550    },
9551    logout: function logout() {
9552      axios.post("/logout").then(function (response) {
9553        if (response.data.result) {
9554          window.location.href = "/";
9555        }
9556      });
9557    },
9558    showReportInfo: function showReportInfo() {
9559      this.$emit("showReportInfo", this.notification);
9560    }
9561  }
9562});
9563
9564/***/ }),
9565
9566/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/TimeFormat.vue?vue&type=script&lang=js":
9567/*!****************************************************************************************************************************************************************************************************!*\
9568  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/TimeFormat.vue?vue&type=script&lang=js ***!
9569  \****************************************************************************************************************************************************************************************************/
9570/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
9571
9572"use strict";
9573__webpack_require__.r(__webpack_exports__);
9574/* harmony export */ __webpack_require__.d(__webpack_exports__, {
9575/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
9576/* harmony export */ });
9577/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
9578  name: "TimeFormat",
9579  props: ["time"],
9580  data: function data() {
9581    return {
9582      displayText: ""
9583    };
9584  },
9585  mounted: function mounted() {
9586    this.calculate();
9587  },
9588  methods: {
9589    calculate: function calculate() {
9590      var now = new Date();
9591      var time = new Date(this.time);
9592      var secondsPast = Math.floor((now.getTime() - time.getTime()) / 1000);
9593      var interval = 0;
9594      if (secondsPast < 60) {
9595        interval = 5;
9596        this.displayText = secondsPast + "秒鐘前";
9597      } else if (secondsPast < 3600) {
9598        interval = 60;
9599        this.displayText = Math.floor(secondsPast / interval) + "分鐘前";
9600      } else if (secondsPast < 86400) {
9601        interval = 3600;
9602        this.displayText = Math.floor(secondsPast / interval) + "小時前";
9603      } else if (secondsPast < 86400) {
9604        interval = 86400;
9605        this.displayText = Math.floor(secondsPast / interval) + "天前";
9606      } else if (secondsPast < 31526000) {
9607        this.displayText = time.getMonth() + 1 + "." + time.getDate();
9608      } else {
9609        this.displayText = time.getFullYear() + "." + time.getMonth() + 1 + "." + time.getDate();
9610      }
9611      if (interval > 0) {
9612        setTimeout(this.calculate, interval * 1000);
9613      }
9614    }
9615  }
9616});
9617
9618/***/ }),
9619
9620/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ChatMessage.vue?vue&type=template&id=7812acf4":
9621/*!****************************************************************************************************************************************************************************************************************************************************************************************!*\
9622  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ChatMessage.vue?vue&type=template&id=7812acf4 ***!
9623  \****************************************************************************************************************************************************************************************************************************************************************************************/
9624/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
9625
9626"use strict";
9627__webpack_require__.r(__webpack_exports__);
9628/* harmony export */ __webpack_require__.d(__webpack_exports__, {
9629/* harmony export */   render: () => (/* binding */ render),
9630/* harmony export */   staticRenderFns: () => (/* binding */ staticRenderFns)
9631/* harmony export */ });
9632var render = function render() {
9633  var _vm = this,
9634    _c = _vm._self._c;
9635  return _c("div", {
9636    ref: "dom"
9637  }, [_vm.chatMessage.show_time ? _c("div", {
9638    staticClass: "social-message-chat-time"
9639  }, [_vm._v("\n        " + _vm._s(_vm.getTimeFormat(_vm.chatMessage.created_at)) + "\n    ")]) : _vm._e(), _vm._v(" "), _c("div", {
9640    "class": {
9641      "social-message-chat-user d-flex align-items-flex-start": !_vm.chatMessage.user.is_self,
9642      "social-message-chat-personal": _vm.chatMessage.user.is_self
9643    }
9644  }, [!_vm.chatMessage.user.is_self ? _c("img", {
9645    staticClass: "social-message-chat-user-img",
9646    attrs: {
9647      src: _vm.chatMessage.user.profile_image
9648    }
9649  }) : _vm._e(), _vm._v(" "), _c("div", {
9650    staticClass: "d-flex align-items-center"
9651  }, [_vm.chatMessage.user.is_self ? _c("div", {
9652    staticClass: "social-message-chat-interaction-block"
9653  }, [_c("div", {
9654    staticClass: "social-message-chat-space-between-use"
9655  }), _vm._v(" "), _vm.canShare ? _c("div", {
9656    staticClass: "social-message-chat-share-block",
9657    attrs: {
9658      type: "button"
9659    },
9660    on: {
9661      click: function click($event) {
9662        return _vm.share(_vm.chatMessage);
9663      }
9664    }
9665  }) : _vm._e(), _vm._v(" "), _vm.chatMessage.is_read ? _c("div", {
9666    staticClass: "social-message-chat-read"
9667  }, [_vm._v("\n                    已讀\n                ")]) : _vm._e()]) : _vm._e(), _vm._v(" "), _vm.chatMessage.type == 1 ? _c("div", {
9668    staticClass: "social-message-chat-content"
9669  }, [_c("div", {
9670    staticClass: "social-message-chat-content-part",
9671    domProps: {
9672      innerHTML: _vm._s(_vm.chatMessage.content)
9673    }
9674  }), _vm._v(" "), _vm.chatMessage.link ? _c("a", {
9675    attrs: {
9676      href: _vm.chatMessage.link.url,
9677      target: "_blank"
9678    }
9679  }, [_vm.chatMessage.link.image ? _c("img", {
9680    staticClass: "social-message-chat-content-link-img",
9681    attrs: {
9682      src: _vm.chatMessage.link.image
9683    }
9684  }) : _vm._e(), _vm._v(" "), _c("div", {
9685    staticClass: "social-message-chat-content-link"
9686  }, [_c("div", {
9687    staticClass: "social-message-chat-content-link-title"
9688  }, [_vm._v("\n                            " + _vm._s(_vm.chatMessage.link.title) + "\n                        ")]), _vm._v(" "), _vm.chatMessage.link.description ? _c("div", {
9689    staticClass: "social-message-chat-content-link-description"
9690  }, [_vm._v("\n                            " + _vm._s(_vm.chatMessage.link.description) + "\n                        ")]) : _vm._e()])]) : _vm._e()]) : _vm.chatMessage.type == 2 ? _c("div", {
9691    staticClass: "position-relative",
9692    on: {
9693      click: function click($event) {
9694        return _vm.zoomIn(_vm.chatMessage);
9695      }
9696    }
9697  }, [_c("img", {
9698    ref: "image",
9699    staticClass: "social-message-chat-content social-message-chat-content-img cursor-pointer",
9700    attrs: {
9701      src: _vm.chatMessage.file.url
9702    }
9703  })]) : _vm.chatMessage.type == 3 ? _c("div", {
9704    staticClass: "position-relative",
9705    on: {
9706      click: function click($event) {
9707        return _vm.zoomIn(_vm.chatMessage);
9708      }
9709    }
9710  }, [_c("img", {
9711    staticClass: "social-message-chat-content-video-play",
9712    attrs: {
9713      src: "/img/video_play_fill_black_white.svg"
9714    }
9715  }), _vm._v(" "), _c("img", {
9716    ref: "image",
9717    staticClass: "social-message-chat-content social-message-chat-content-img cursor-pointer",
9718    attrs: {
9719      src: _vm.chatMessage.file.cover
9720    }
9721  })]) : _vm.chatMessage.type == 4 ? _c("div", {
9722    staticClass: "social-message-chat-content cursor-pointer",
9723    on: {
9724      click: function click($event) {
9725        return _vm.openWindow(_vm.message.social_post.url);
9726      }
9727    }
9728  }, [_c("div", {
9729    staticClass: "social-message-chat-content-part d-flex align-items-center"
9730  }, [_c("img", {
9731    staticClass: "social-message-chat-content-post-user-img",
9732    attrs: {
9733      src: _vm.message.social_post.user.profile_image
9734    }
9735  }), _vm._v(" "), _c("div", {
9736    staticClass: "social-message-chat-content-post-user-name"
9737  }, [_vm._v("\n                        " + _vm._s(_vm.message.social_post.user.name) + "\n                    ")]), _vm._v("\n                    的貼文\n                ")]), _vm._v(" "), _c("div", {
9738    staticClass: "position-relative"
9739  }, [_vm.message.social_post.medias[0].type == "video" ? _c("img", {
9740    staticClass: "video_play_fill_black_white",
9741    attrs: {
9742      src: "/img/video_play_fill_black_white.svg"
9743    }
9744  }) : _vm._e(), _vm._v(" "), _c("img", {
9745    staticClass: "social-message-chat-content-post-img",
9746    attrs: {
9747      src: _vm.message.social_post.medias[0].cover
9748    }
9749  })]), _vm._v(" "), _c("div", {
9750    staticClass: "social-message-chat-content-link"
9751  }, [_c("div", {
9752    staticClass: "social-message-chat-content-link-title"
9753  }, [_vm._v("\n                        " + _vm._s(_vm.message.social_post.title) + "\n                    ")])])]) : _vm.chatMessage.type == 5 ? _c("div", {
9754    staticClass: "d-flex align-items-center",
9755    on: {
9756      click: function click($event) {
9757        return _vm.openWindow(_vm.message.personal.url);
9758      }
9759    }
9760  }, [_c("div", {
9761    staticClass: "social-message-chat-content social-message-chat-content-personal-page cursor-pointer"
9762  }, [_c("div", {
9763    staticClass: "social-message-chat-content-part d-flex align-items-center"
9764  }, [_c("img", {
9765    staticClass: "social-message-chat-content-post-user-img",
9766    attrs: {
9767      src: _vm.message.personal.profile_image
9768    }
9769  }), _vm._v(" "), _c("div", {
9770    staticClass: "social-message-chat-content-post-user-name"
9771  }, [_vm._v("\n                            " + _vm._s(_vm.message.personal.name) + "\n                        ")]), _vm._v("\n                        的個人檔案\n                    ")]), _vm._v(" "), _vm.message.personal.last_social_posts.length > 0 ? _c("div", {
9772    staticClass: "social-message-chat-content-personal-page-img-block"
9773  }, _vm._l(_vm.message.personal.last_social_posts, function (socialPost) {
9774    return _c("img", {
9775      key: socialPost.id,
9776      staticClass: "social-message-chat-content-personal-page-img",
9777      attrs: {
9778        src: socialPost.medias[0].cover
9779      }
9780    });
9781  }), 0) : _vm._e()])]) : _vm._e(), _vm._v(" "), !_vm.chatMessage.user.is_self && _vm.canShare ? _c("div", {
9782    staticClass: "social-message-chat-share-block",
9783    attrs: {
9784      type: "button"
9785    },
9786    on: {
9787      click: function click($event) {
9788        return _vm.share(_vm.chatMessage);
9789      }
9790    }
9791  }) : _vm._e()])])]);
9792};
9793var staticRenderFns = [];
9794render._withStripped = true;
9795
9796
9797/***/ }),
9798
9799/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ChatRoom.vue?vue&type=template&id=4926d03e":
9800/*!*************************************************************************************************************************************************************************************************************************************************************************************!*\
9801  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ChatRoom.vue?vue&type=template&id=4926d03e ***!
9802  \*************************************************************************************************************************************************************************************************************************************************************************************/
9803/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
9804
9805"use strict";
9806__webpack_require__.r(__webpack_exports__);
9807/* harmony export */ __webpack_require__.d(__webpack_exports__, {
9808/* harmony export */   render: () => (/* binding */ render),
9809/* harmony export */   staticRenderFns: () => (/* binding */ staticRenderFns)
9810/* harmony export */ });
9811var render = function render() {
9812  var _vm = this,
9813    _c = _vm._self._c;
9814  return _c("div", {
9815    staticClass: "social-message-chat-block bg-tb-gray-1d1d1d"
9816  }, [_c("div", {
9817    staticClass: "d-flex justify-content-between flex-column h-100"
9818  }, [_c("div", {
9819    staticClass: "social-message-chat-content-block"
9820  }, [_c("div", {
9821    ref: "top"
9822  }), _vm._v(" "), _vm._l(_vm.messages, function (message) {
9823    return _c("ChatMessage", {
9824      key: message.id,
9825      ref: "chatMessages",
9826      refInFor: true,
9827      attrs: {
9828        message: message
9829      },
9830      on: {
9831        loaded: _vm.fileLoaded,
9832        zoomIn: _vm.zoomIn,
9833        share: _vm.startShare
9834      }
9835    });
9836  }), _vm._v(" "), _c("div", {
9837    ref: "bottom"
9838  })], 2), _vm._v(" "), !_vm.chatRoom.chat_with.is_lock ? _c("div", {
9839    staticClass: "social-message-chat-input-block"
9840  }, [_c("div", {
9841    staticClass: "social-message-chat-input-upload bg-basic",
9842    attrs: {
9843      type: "button"
9844    },
9845    on: {
9846      click: _vm.selectFile
9847    }
9848  }), _vm._v(" "), _c("form", {
9849    staticClass: "social-post-comment-input-block mt-0 w-100",
9850    on: {
9851      submit: function submit($event) {
9852        $event.preventDefault();
9853        return _vm.send.apply(null, arguments);
9854      }
9855    }
9856  }, [_c("input", {
9857    directives: [{
9858      name: "model",
9859      rawName: "v-model",
9860      value: _vm.content,
9861      expression: "content"
9862    }],
9863    staticClass: "social-post-comment-input social-message-chat-input",
9864    attrs: {
9865      placeholder: "訊息⋯  "
9866    },
9867    domProps: {
9868      value: _vm.content
9869    },
9870    on: {
9871      input: function input($event) {
9872        if ($event.target.composing) return;
9873        _vm.content = $event.target.value;
9874      }
9875    }
9876  }), _vm._v(" "), _c("button", {
9877    staticClass: "btn social-post-comment-submit social-message-chat-submit"
9878  }, [_vm._v("\n                    發佈\n                ")])])]) : _c("div", {
9879    staticClass: "social-message-chat-input-block social-message-chat-input-blockade-block"
9880  }, [_c("div", {
9881    staticClass: "social-message-chat-input-blockade-state"
9882  }, [_vm._v("\n                已封鎖\n            ")]), _vm._v(" "), _c("div", {
9883    staticClass: "social-message-chat-input-blockade-btn-block"
9884  }, [_c("div", {
9885    staticClass: "btn social-message-chat-input-blockade-cancel",
9886    on: {
9887      click: _vm.unlock
9888    }
9889  }, [_vm._v("\n                    解除封鎖\n                ")]), _vm._v(" "), _c("div", {
9890    staticClass: "btn social-message-chat-input-delete red",
9891    on: {
9892      click: _vm.destroy
9893    }
9894  }, [_vm._v("\n                    刪除聊天室\n                ")])])])])]);
9895};
9896var staticRenderFns = [];
9897render._withStripped = true;
9898
9899
9900/***/ }),
9901
9902/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ChatRoomList.vue?vue&type=template&id=36db22fc":
9903/*!*****************************************************************************************************************************************************************************************************************************************************************************************!*\
9904  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ChatRoomList.vue?vue&type=template&id=36db22fc ***!
9905  \*****************************************************************************************************************************************************************************************************************************************************************************************/
9906/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
9907
9908"use strict";
9909__webpack_require__.r(__webpack_exports__);
9910/* harmony export */ __webpack_require__.d(__webpack_exports__, {
9911/* harmony export */   render: () => (/* binding */ render),
9912/* harmony export */   staticRenderFns: () => (/* binding */ staticRenderFns)
9913/* harmony export */ });
9914var render = function render() {
9915  var _vm = this,
9916    _c = _vm._self._c;
9917  return _c("div", {
9918    staticClass: "social-message-list-page bg-dark-gray flex-column p-0 h-100"
9919  }, [_c("div", {
9920    staticClass: "social-post-report-declare-block social-message-search-block"
9921  }, [_c("input", {
9922    directives: [{
9923      name: "model",
9924      rawName: "v-model",
9925      value: _vm.keyword,
9926      expression: "keyword"
9927    }],
9928    staticClass: "social-post-report-user-search w-100",
9929    attrs: {
9930      type: "text",
9931      placeholder: "搜尋朋友"
9932    },
9933    domProps: {
9934      value: _vm.keyword
9935    },
9936    on: {
9937      input: function input($event) {
9938        if ($event.target.composing) return;
9939        _vm.keyword = $event.target.value;
9940      }
9941    }
9942  })]), _vm._v(" "), _c("div", {
9943    staticClass: "social-post-report-options-section social-message-list-section"
9944  }, [_vm._l(_vm.showChatRooms, function (chatRoom) {
9945    return _c("div", {
9946      key: chatRoom.id,
9947      "class": {
9948        "social-post-report-options": true,
9949        "social-message-list": true,
9950        "bg-333333": _vm.currentChatRoom != null && _vm.currentChatRoom.id == chatRoom.id
9951      },
9952      on: {
9953        click: function click($event) {
9954          return _vm.selectChatRoom(chatRoom);
9955        }
9956      }
9957    }, [_c("div", {
9958      staticClass: "social-post-report-user-data d-flex align-items-center"
9959    }, [_c("img", {
9960      staticClass: "social-post-report-user-img",
9961      attrs: {
9962        src: chatRoom.chat_with.profile_image
9963      }
9964    }), _vm._v(" "), _c("div", {
9965      staticClass: "social-message-list-logs-block"
9966    }, [_c("div", {
9967      staticClass: "social-message-logs-user-name"
9968    }, [_vm._v("\n                        " + _vm._s(chatRoom.chat_with.name) + "\n                    ")]), _vm._v(" "), chatRoom.last_message ? _c("div", {
9969      "class": {
9970        "social-message-logs-content": true,
9971        white: _vm.userId != chatRoom.last_message.user_id && !chatRoom.last_message.is_read
9972      }
9973    }, [chatRoom.last_message.type == 1 ? _c("div", [_vm._v("\n                            " + _vm._s(chatRoom.last_message.simple_content) + "\n                        ")]) : _vm._e(), _vm._v(" "), chatRoom.last_message.type == 2 ? _c("div", [_vm._v("\n                            " + _vm._s(_vm.userId == chatRoom.last_message.user_id ? "您" : chatRoom.last_message.user.name) + "傳送了一張圖片\n                        ")]) : _vm._e(), _vm._v(" "), chatRoom.last_message.type == 3 ? _c("div", [_vm._v("\n                            " + _vm._s(_vm.userId == chatRoom.last_message.user_id ? "您" : chatRoom.last_message.user.name) + "傳送了一則影片\n                        ")]) : _vm._e(), _vm._v(" "), chatRoom.last_message.type == 4 ? _c("div", [_vm._v("\n                            " + _vm._s(_vm.userId == chatRoom.last_message.user_id ? "您" : chatRoom.last_message.user.name) + "傳送了一則貼文\n                        ")]) : _vm._e(), _vm._v(" "), chatRoom.last_message.type == 5 ? _c("div", [_vm._v("\n                            " + _vm._s(_vm.userId == chatRoom.last_message.user_id ? "您" : chatRoom.last_message.user.name) + "傳送了一則個人檔案\n                        ")]) : _vm._e()]) : _vm._e()])]), _vm._v(" "), _c("div", {
9974      staticClass: "social-message-more",
9975      on: {
9976        click: function click($event) {
9977          $event.stopPropagation();
9978          return _vm.setChatRoom(chatRoom);
9979        }
9980      }
9981    }, [_vm._v("\n                ⋮\n            ")])]);
9982  }), _vm._v(" "), _vm.showChatRooms.length > 0 ? _c("div", {
9983    staticClass: "social-post-report-last-hr d-block d-tb-none"
9984  }) : _vm._e(), _vm._v(" "), _vm.keyword != "" && _vm.showChatRooms.length == 0 ? _c("div", {
9985    staticClass: "social-message-list-search-not"
9986  }, [_vm._v("\n            查無搜尋結果\n        ")]) : _vm._e()], 2)]);
9987};
9988var staticRenderFns = [];
9989render._withStripped = true;
9990
9991
9992/***/ }),
9993
9994/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ChatRoomSetting.vue?vue&type=template&id=c1cfc73c":
9995/*!********************************************************************************************************************************************************************************************************************************************************************************************!*\
9996  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ChatRoomSetting.vue?vue&type=template&id=c1cfc73c ***!
9997  \********************************************************************************************************************************************************************************************************************************************************************************************/
9998/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
9999
10000"use strict";
10001__webpack_require__.r(__webpack_exports__);
10002/* harmony export */ __webpack_require__.d(__webpack_exports__, {
10003/* harmony export */   render: () => (/* binding */ render),
10004/* harmony export */   staticRenderFns: () => (/* binding */ staticRenderFns)
10005/* harmony export */ });
10006var render = function render() {
10007  var _vm = this,
10008    _c = _vm._self._c;
10009  return _c("div", {
10010    staticClass: "social-message-chat-block bg-dark-gray white d-tb-inline-flex"
10011  }, [_c("div", {
10012    staticClass: "social-message-chat-more-block"
10013  }, [_c("div", {
10014    staticClass: "social-message-chat-more"
10015  }, [_c("div", {
10016    staticClass: "social-message-chat-more-title"
10017  }, [_vm._v("成員")]), _vm._v(" "), _c("div", {
10018    staticClass: "social-post-report-options"
10019  }, [_c("router-link", {
10020    staticClass: "social-post-report-user-data d-flex align-items-center",
10021    attrs: {
10022      to: {
10023        name: "socialUser",
10024        params: {
10025          name: _vm.chatRoom.chat_with.alias_name
10026        }
10027      }
10028    }
10029  }, [_c("img", {
10030    staticClass: "social-post-report-user-img",
10031    attrs: {
10032      src: _vm.chatRoom.chat_with.profile_image
10033    }
10034  }), _vm._v(" "), _c("div", {
10035    staticClass: "social-post-report-user-name"
10036  }, [_vm._v("\n            " + _vm._s(_vm.chatRoom.chat_with.name) + "\n          ")])])], 1), _vm._v(" "), _c("div", {
10037    staticClass: "social-message-chat-more-btn-block"
10038  }, [_c("div", {
10039    staticClass: "btn social-message-chat-input-delete red pl-0",
10040    on: {
10041      click: _vm.destroy
10042    }
10043  }, [_vm._v("\n          刪除聊天室\n        ")]), _vm._v(" "), !_vm.chatRoom.chat_with.is_lock ? _c("div", {
10044    staticClass: "btn social-message-chat-input-blockade red pl-0",
10045    on: {
10046      click: _vm.lock
10047    }
10048  }, [_vm._v("\n          封鎖\n        ")]) : _c("div", {
10049    staticClass: "btn social-message-chat-input-blockade-cancel pl-0",
10050    on: {
10051      click: _vm.unlock
10052    }
10053  }, [_vm._v("\n          解除封鎖\n        ")]), _vm._v(" "), _c("div", {
10054    staticClass: "btn social-message-chat-input-report red pl-0",
10055    on: {
10056      click: _vm.report
10057    }
10058  }, [_vm._v("\n          檢舉\n        ")])])]), _vm._v(" "), _c("div", {
10059    staticClass: "social-post-report-last-hr"
10060  })])]);
10061};
10062var staticRenderFns = [];
10063render._withStripped = true;
10064
10065
10066/***/ }),
10067
10068/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ChatSelectUserModal.vue?vue&type=template&id=2cd7071a":
10069/*!************************************************************************************************************************************************************************************************************************************************************************************************!*\
10070  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ChatSelectUserModal.vue?vue&type=template&id=2cd7071a ***!
10071  \************************************************************************************************************************************************************************************************************************************************************************************************/
10072/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
10073
10074"use strict";
10075__webpack_require__.r(__webpack_exports__);
10076/* harmony export */ __webpack_require__.d(__webpack_exports__, {
10077/* harmony export */   render: () => (/* binding */ render),
10078/* harmony export */   staticRenderFns: () => (/* binding */ staticRenderFns)
10079/* harmony export */ });
10080var render = function render() {
10081  var _vm = this,
10082    _c = _vm._self._c;
10083  return _c("div", {
10084    ref: "modal",
10085    staticClass: "social-modal-min-full modal p-0 fade",
10086    attrs: {
10087      tabindex: "-1"
10088    }
10089  }, [_c("div", {
10090    staticClass: "modal-dialog modal-dialog-centered modal-block m-tb-0"
10091  }, [_c("div", {
10092    staticClass: "modal-content"
10093  }, [_c("div", {
10094    staticClass: "modal-header bg-dark-gray position-relative"
10095  }, [_c("button", {
10096    staticClass: "btn-social-back",
10097    attrs: {
10098      type: "button"
10099    },
10100    on: {
10101      click: _vm.hide
10102    }
10103  }, [_c("img", {
10104    attrs: {
10105      src: "/img/back_outline_white.svg",
10106      alt: ""
10107    }
10108  })]), _vm._v(" "), _c("h4", {
10109    staticClass: "modal-title text-center w-100 white"
10110  }, [_vm._v("\n          " + _vm._s(_vm.title) + "\n        ")])]), _vm._v(" "), _c("div", {
10111    staticClass: "modal-body bg-dark-gray flex-column p-0"
10112  }, [_c("div", {
10113    staticClass: "social-post-report-declare-block social-message-search-block"
10114  }, [_c("input", {
10115    directives: [{
10116      name: "model",
10117      rawName: "v-model",
10118      value: _vm.keyword,
10119      expression: "keyword"
10120    }],
10121    staticClass: "social-post-report-user-search w-100",
10122    attrs: {
10123      type: "text",
10124      placeholder: "搜尋"
10125    },
10126    domProps: {
10127      value: _vm.keyword
10128    },
10129    on: {
10130      input: function input($event) {
10131        if ($event.target.composing) return;
10132        _vm.keyword = $event.target.value;
10133      }
10134    }
10135  })]), _vm._v(" "), _c("div", {
10136    staticClass: "social-message-select-user-block"
10137  }, _vm._l(_vm.selectedUsers, function (user) {
10138    return _c("div", {
10139      key: user.id,
10140      staticClass: "social-message-select-user",
10141      on: {
10142        click: function click($event) {
10143          return _vm.removeUser(user);
10144        }
10145      }
10146    }, [_vm._v("\n            " + _vm._s(user.name) + "\n          ")]);
10147  }), 0), _vm._v(" "), _c("div", {
10148    staticClass: "social-post-report-options-section social-message-edit-section"
10149  }, [_c("div", {
10150    staticClass: "social-post-report-options-block"
10151  }, _vm._l(_vm.showUsers, function (user) {
10152    return _c("div", {
10153      key: user.id,
10154      staticClass: "social-post-report-options",
10155      on: {
10156        click: function click($event) {
10157          return _vm.selectUser(user);
10158        }
10159      }
10160    }, [_c("div", {
10161      staticClass: "social-post-report-user-data d-flex align-items-center"
10162    }, [_c("img", {
10163      staticClass: "social-post-report-user-img",
10164      attrs: {
10165        src: user.profile_image
10166      }
10167    }), _vm._v(" "), _c("div", {
10168      staticClass: "social-post-report-user-name"
10169    }, [_vm._v("\n                  " + _vm._s(user.name) + "\n                ")])]), _vm._v(" "), _c("input", {
10170      staticClass: "social-post-report-radio",
10171      attrs: {
10172        type: "checkbox"
10173      },
10174      domProps: {
10175        checked: user.isChecked
10176      }
10177    })]);
10178  }), 0), _vm._v(" "), _c("div", {
10179    staticClass: "social-post-report-last-hr"
10180  }), _vm._v(" "), _c("div", {
10181    directives: [{
10182      name: "show",
10183      rawName: "v-show",
10184      value: _vm.showUsers.length == 0,
10185      expression: "showUsers.length == 0"
10186    }],
10187    staticClass: "social-message-list-search-not"
10188  }, [_vm._v("\n            查無搜尋結果\n          ")])]), _vm._v(" "), _c("div", {
10189    staticClass: "btn-social-post-report-block"
10190  }, [_c("textarea", {
10191    directives: [{
10192      name: "model",
10193      rawName: "v-model",
10194      value: _vm.content,
10195      expression: "content"
10196    }],
10197    staticClass: "social-message-edit-form",
10198    attrs: {
10199      row: "3",
10200      placeholder: "撰寫新訊息..."
10201    },
10202    domProps: {
10203      value: _vm.content
10204    },
10205    on: {
10206      input: function input($event) {
10207        if ($event.target.composing) return;
10208        _vm.content = $event.target.value;
10209      }
10210    }
10211  }), _vm._v(" "), _c("input", {
10212    "class": {
10213      "btn-social-post-report": true,
10214      "btn-social-post-report-fill-in": _vm.canSubmit,
10215      "btn-social-post-report-un-fill-in": !_vm.canSubmit
10216    },
10217    attrs: {
10218      type: "button",
10219      disabled: !_vm.canSubmit,
10220      value: "提交"
10221    },
10222    on: {
10223      click: _vm.submit
10224    }
10225  })])])])])]);
10226};
10227var staticRenderFns = [];
10228render._withStripped = true;
10229
10230
10231/***/ }),
10232
10233/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ChatZoominModal.vue?vue&type=template&id=13f548c2":
10234/*!********************************************************************************************************************************************************************************************************************************************************************************************!*\
10235  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ChatZoominModal.vue?vue&type=template&id=13f548c2 ***!
10236  \********************************************************************************************************************************************************************************************************************************************************************************************/
10237/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
10238
10239"use strict";
10240__webpack_require__.r(__webpack_exports__);
10241/* harmony export */ __webpack_require__.d(__webpack_exports__, {
10242/* harmony export */   render: () => (/* binding */ render),
10243/* harmony export */   staticRenderFns: () => (/* binding */ staticRenderFns)
10244/* harmony export */ });
10245var render = function render() {
10246  var _vm = this,
10247    _c = _vm._self._c;
10248  return _c("div", {
10249    ref: "modal",
10250    staticClass: "edit-social-post-modal modal fade",
10251    attrs: {
10252      tabindex: "-1"
10253    }
10254  }, [_vm._m(0), _vm._v(" "), _c("div", {
10255    staticClass: "modal-dialog modal-dialog-centered modal-block flex-column justify-content-center"
10256  }, [_vm.message ? _c("div", {
10257    staticClass: "modal-content",
10258    staticStyle: {
10259      "background-color": "rgba(0, 0, 0, 0) !important"
10260    }
10261  }, [_vm.message.file.type == "image" ? _c("img", {
10262    staticClass: "social-message-chat-img-full",
10263    attrs: {
10264      src: _vm.message.file.url
10265    }
10266  }) : _c("video", {
10267    staticClass: "social-message-chat-img-full",
10268    attrs: {
10269      controls: "",
10270      autoplay: ""
10271    }
10272  }, [_c("source", {
10273    attrs: {
10274      src: _vm.message.file.url,
10275      type: "video/mp4"
10276    }
10277  }), _vm._v("\n                Sorry, your browser doesn't support embedded videos.\n            ")])]) : _vm._e()])]);
10278};
10279var staticRenderFns = [function () {
10280  var _vm = this,
10281    _c = _vm._self._c;
10282  return _c("button", {
10283    staticClass: "btn-edit-social-close close",
10284    attrs: {
10285      type: "button",
10286      "data-bs-dismiss": "modal",
10287      "aria-label": "Close"
10288    }
10289  }, [_c("span", {
10290    staticClass: "edit-social-close-icon",
10291    attrs: {
10292      "aria-hidden": "true"
10293    }
10294  }, [_c("img", {
10295    attrs: {
10296      src: "/img/close_outline_white.svg"
10297    }
10298  })])]);
10299}];
10300render._withStripped = true;
10301
10302
10303/***/ }),
10304
10305/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/CollectList.vue?vue&type=template&id=318b27cd":
10306/*!****************************************************************************************************************************************************************************************************************************************************************************************!*\
10307  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/CollectList.vue?vue&type=template&id=318b27cd ***!
10308  \****************************************************************************************************************************************************************************************************************************************************************************************/
10309/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
10310
10311"use strict";
10312__webpack_require__.r(__webpack_exports__);
10313/* harmony export */ __webpack_require__.d(__webpack_exports__, {
10314/* harmony export */   render: () => (/* binding */ render),
10315/* harmony export */   staticRenderFns: () => (/* binding */ staticRenderFns)
10316/* harmony export */ });
10317var render = function render() {
10318  var _vm = this,
10319    _c = _vm._self._c;
10320  return _c("div", [_c("div", {
10321    staticClass: "container"
10322  }, [_c("div", {
10323    staticClass: "row"
10324  }, [_vm._m(0), _vm._v(" "), _c("div", {
10325    staticClass: "col-6 col-md-3 col-lg-3 d-xl-3 px-md-0 filter-btn pr-1 text-right"
10326  }, [_c("button", {
10327    staticClass: "btn btn-outline mybutton",
10328    attrs: {
10329      type: "button"
10330    },
10331    on: {
10332      click: function click($event) {
10333        _vm.showCanvas = !_vm.showCanvas;
10334      }
10335    }
10336  }, [_c("img", {
10337    staticClass: "img-fluid mr-2",
10338    staticStyle: {
10339      width: "16px"
10340    },
10341    attrs: {
10342      src: "/img/filter-icon.svg"
10343    }
10344  }), _vm._v("篩選\n                ")])]), _vm._v(" "), _c("div", {
10345    staticClass: "col-6 col-md-3 col-lg-3 col-xl-3 text-right pl-1 filter-select"
10346  }, [_c("div", {
10347    staticClass: "dropdown d-block d-md-inline-block d-lg-inline-block"
10348  }, [_c("button", {
10349    staticClass: "btn dropdown-toggle dropdown-toggle-couponlist myselect",
10350    attrs: {
10351      type: "button"
10352    }
10353  }, [_vm._v("\n                        " + _vm._s(_vm.currentSort.name) + "\n                        "), _c("img", {
10354    attrs: {
10355      src: "/img/arrow.svg",
10356      alt: "arrow"
10357    }
10358  })]), _vm._v(" "), _c("div", {
10359    staticClass: "dropdown-menu",
10360    attrs: {
10361      "aria-labelledby": "dropdownMenuButton"
10362    }
10363  }, _vm._l(_vm.sorts, function (sort, index) {
10364    return _c("a", {
10365      key: index,
10366      staticClass: "dropdown-item",
10367      attrs: {
10368        href: "#"
10369      },
10370      on: {
10371        click: function click($event) {
10372          return _vm.changeSort(sort);
10373        }
10374      }
10375    }, [_vm._v("\n                            " + _vm._s(sort.name) + "\n                        ")]);
10376  }), 0)])])])]), _vm._v(" "), _vm._l(_vm.maxPage, function (page, pageIndex) {
10377    return [pageIndex == 0 || _vm.filterPosts.length > pageIndex * _vm.pageSize ? _c("div", {
10378      key: pageIndex
10379    }, [_c("div", {
10380      staticClass: "container"
10381    }, [pageIndex == 0 && _vm.selectedCategories.length > 0 ? _c("div", {
10382      staticClass: "search-result mt-2"
10383    }, [_c("div", {
10384      staticClass: "row"
10385    }, [_c("div", {
10386      staticClass: "col"
10387    }, [_vm._v("\n                            已選擇篩選條件\n                            "), _vm._l(_vm.selectedCategories, function (selectedCategory, index) {
10388      return _c("div", {
10389        key: index,
10390        staticClass: "search-item rounded py-1 ml-2 mb-1",
10391        on: {
10392          click: function click($event) {
10393            return _vm.removeCategory(index);
10394          }
10395        }
10396      }, [_vm._v("\n                                " + _vm._s(selectedCategory) + "\n                            ")]);
10397    }), _vm._v(" "), _c("a", {
10398      staticClass: "btn btn-link p-0 ml-2 clear-allitem",
10399      on: {
10400        click: _vm.clearConditions
10401      }
10402    }, [_vm._v("\n                                清除所有篩選\n                            ")])], 2)])]) : _vm._e(), _vm._v(" "), _c("div", {
10403      staticClass: "collections-list mt-3",
10404      staticStyle: {
10405        "min-height": "800px"
10406      }
10407    }, [pageIndex == 0 ? _c("div", {
10408      staticClass: "filter-section d-none d-xl-block"
10409    }, [_c("div", {
10410      staticClass: "input-group search-bar mb-2"
10411    }, [_c("input", {
10412      directives: [{
10413        name: "model",
10414        rawName: "v-model",
10415        value: _vm.keyword,
10416        expression: "keyword"
10417      }],
10418      staticClass: "form-control my-0 border-0",
10419      attrs: {
10420        type: "text",
10421        placeholder: "搜尋文章",
10422        "aria-label": "Search"
10423      },
10424      domProps: {
10425        value: _vm.keyword
10426      },
10427      on: {
10428        input: function input($event) {
10429          if ($event.target.composing) return;
10430          _vm.keyword = $event.target.value;
10431        }
10432      }
10433    }), _vm._v(" "), _c("div", {
10434      staticClass: "search-icon"
10435    })]), _vm._v(" "), _c("div", {
10436      staticClass: "filter-header my-2"
10437    }, [_c("a", {
10438      staticClass: "btn btn-block text-left p-0",
10439      attrs: {
10440        "data-toggle": "collapse",
10441        href: "#multiCollapseExample2",
10442        role: "button",
10443        "aria-expanded": "false",
10444        "aria-controls": "multiCollapseExample2"
10445      }
10446    }, [_vm._v("文章分類\n                                "), _c("img", {
10447      attrs: {
10448        src: "/img/arrow.svg",
10449        alt: "arrow"
10450      }
10451    })])]), _vm._v(" "), _c("div", {
10452      staticClass: "collapse multi-collapse border-0 show",
10453      attrs: {
10454        id: "multiCollapseExample2"
10455      }
10456    }, [_c("div", {
10457      staticClass: "card card-body p-0 border-0"
10458    }, _vm._l(_vm.categories, function (category, index) {
10459      return _c("div", {
10460        key: index,
10461        staticClass: "form-check mb-2 search-by-type-checkbox"
10462      }, [_c("input", {
10463        directives: [{
10464          name: "model",
10465          rawName: "v-model",
10466          value: _vm.selectedCategories,
10467          expression: "selectedCategories"
10468        }],
10469        staticClass: "form-check-input",
10470        attrs: {
10471          type: "checkbox",
10472          id: "category1" + index
10473        },
10474        domProps: {
10475          value: category,
10476          checked: Array.isArray(_vm.selectedCategories) ? _vm._i(_vm.selectedCategories, category) > -1 : _vm.selectedCategories
10477        },
10478        on: {
10479          change: function change($event) {
10480            var $$a = _vm.selectedCategories,
10481              $$el = $event.target,
10482              $$c = $$el.checked ? true : false;
10483            if (Array.isArray($$a)) {
10484              var $$v = category,
10485                $$i = _vm._i($$a, $$v);
10486              if ($$el.checked) {
10487                $$i < 0 && (_vm.selectedCategories = $$a.concat([$$v]));
10488              } else {
10489                $$i > -1 && (_vm.selectedCategories = $$a.slice(0, $$i).concat($$a.slice($$i + 1)));
10490              }
10491            } else {
10492              _vm.selectedCategories = $$c;
10493            }
10494          }
10495        }
10496      }), _vm._v(" "), _c("label", {
10497        staticClass: "form-check-label",
10498        attrs: {
10499          "for": "category1" + index
10500        }
10501      }, [_vm._v("\n                                        " + _vm._s(category) + "\n                                    ")])]);
10502    }), 0)])]) : _vm._e(), _vm._v(" "), _c("div", {
10503      staticClass: "row"
10504    }, [_vm._l(_vm.filterPosts.slice(pageIndex * _vm.pageSize, (pageIndex + 1) * _vm.pageSize), function (post, index) {
10505      return [_c("article", {
10506        key: index,
10507        staticClass: "col-md-4 postCard-collection"
10508      }, [_c("post", {
10509        staticClass: "postCardh3 rounded shadow2 postCardCalc1",
10510        attrs: {
10511          post: post,
10512          "image-class": "postImage200 postCollectionRounded"
10513        }
10514      })], 1)];
10515    })], 2)])]), _vm._v(" "), _c("div", {
10516      staticClass: "advertiseBlock"
10517    }, [_c("div", {
10518      staticClass: "container"
10519    }, [_c("a", {
10520      attrs: {
10521        href: _vm.advertisement2.uri,
10522        target: "_blank"
10523      }
10524    }, [_c("img", {
10525      attrs: {
10526        src: _vm.advertisement2.image,
10527        alt: _vm.advertisement2.name
10528      }
10529    })])])])]) : _vm._e()];
10530  }), _vm._v(" "), _c("div", {
10531    staticClass: "bs-canvas bs-canvas-anim bs-canvas-left position-fixed h-100",
10532    style: {
10533      width: _vm.showCanvas ? "240px" : "0"
10534    },
10535    attrs: {
10536      id: "bs-canvas-left"
10537    }
10538  }, [_c("div", {
10539    staticClass: "p-3"
10540  }, [_c("div", {
10541    staticStyle: {
10542      "font-size": "20px"
10543    }
10544  }, [_c("img", {
10545    staticClass: "img-fluid mr-2",
10546    staticStyle: {
10547      width: "20px"
10548    },
10549    attrs: {
10550      src: "/img/filter-icon.svg"
10551    }
10552  }), _vm._v("\n                文章篩選\n            ")])]), _vm._v(" "), _c("div", {
10553    staticClass: "bs-canvas-content px-3"
10554  }, [_c("div", {
10555    staticClass: "input-group search-bar mb-2"
10556  }, [_c("input", {
10557    directives: [{
10558      name: "model",
10559      rawName: "v-model",
10560      value: _vm.keyword,
10561      expression: "keyword"
10562    }],
10563    staticClass: "form-control my-0 border-0",
10564    attrs: {
10565      type: "text",
10566      placeholder: "搜尋文章",
10567      "aria-label": "Search"
10568    },
10569    domProps: {
10570      value: _vm.keyword
10571    },
10572    on: {
10573      input: function input($event) {
10574        if ($event.target.composing) return;
10575        _vm.keyword = $event.target.value;
10576      }
10577    }
10578  }), _vm._v(" "), _c("div", {
10579    staticClass: "search-icon"
10580  })]), _vm._v(" "), _c("div", {
10581    staticClass: "filter-header my-2"
10582  }, [_c("a", {
10583    staticClass: "btn btn-block text-left p-0",
10584    attrs: {
10585      "data-toggle": "collapse",
10586      href: "#multiCollapseExample2",
10587      role: "button",
10588      "aria-expanded": "false",
10589      "aria-controls": "multiCollapseExample2"
10590    }
10591  }, [_vm._v("文章分類\n                    "), _c("img", {
10592    staticClass: "mr-2",
10593    attrs: {
10594      src: "/img/arrow.svg",
10595      alt: "arrow"
10596    }
10597  })])]), _vm._v(" "), _c("div", {
10598    staticClass: "collapse multi-collapse border-0 show",
10599    attrs: {
10600      id: "multiCollapseExample2"
10601    }
10602  }, [_c("div", {
10603    staticClass: "card card-body p-0 border-0"
10604  }, _vm._l(_vm.categories, function (category, index) {
10605    return _c("div", {
10606      key: index,
10607      staticClass: "form-check mb-2 search-by-type-checkbox"
10608    }, [_c("input", {
10609      directives: [{
10610        name: "model",
10611        rawName: "v-model",
10612        value: _vm.selectedCategories,
10613        expression: "selectedCategories"
10614      }],
10615      staticClass: "form-check-input",
10616      attrs: {
10617        type: "checkbox",
10618        id: "category2" + index
10619      },
10620      domProps: {
10621        value: category,
10622        checked: Array.isArray(_vm.selectedCategories) ? _vm._i(_vm.selectedCategories, category) > -1 : _vm.selectedCategories
10623      },
10624      on: {
10625        change: function change($event) {
10626          var $$a = _vm.selectedCategories,
10627            $$el = $event.target,
10628            $$c = $$el.checked ? true : false;
10629          if (Array.isArray($$a)) {
10630            var $$v = category,
10631              $$i = _vm._i($$a, $$v);
10632            if ($$el.checked) {
10633              $$i < 0 && (_vm.selectedCategories = $$a.concat([$$v]));
10634            } else {
10635              $$i > -1 && (_vm.selectedCategories = $$a.slice(0, $$i).concat($$a.slice($$i + 1)));
10636            }
10637          } else {
10638            _vm.selectedCategories = $$c;
10639          }
10640        }
10641      }
10642    }), _vm._v(" "), _c("label", {
10643      staticClass: "form-check-label",
10644      attrs: {
10645        "for": "category2" + index
10646      }
10647    }, [_vm._v("\n                            " + _vm._s(category) + "\n                        ")])]);
10648  }), 0)])])]), _vm._v(" "), _c("div", {
10649    staticClass: "bg-black",
10650    style: {
10651      display: _vm.showCanvas ? "block" : "none"
10652    },
10653    attrs: {
10654      "aria-label": "Close"
10655    },
10656    on: {
10657      click: function click($event) {
10658        _vm.showCanvas = false;
10659      }
10660    }
10661  })], 2);
10662};
10663var staticRenderFns = [function () {
10664  var _vm = this,
10665    _c = _vm._self._c;
10666  return _c("div", {
10667    staticClass: "col-12 col-md-6"
10668  }, [_c("h2", {
10669    staticClass: "categoryTitle"
10670  }, [_vm._v("文章收藏")]), _vm._v(" "), _c("span", {
10671    staticClass: "categorySubTitle"
10672  }, [_vm._v("MY FAVORITE ARTICLES")])]);
10673}];
10674render._withStripped = true;
10675
10676
10677/***/ }),
10678
10679/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/CompleteModal.vue?vue&type=template&id=7dcd3699":
10680/*!******************************************************************************************************************************************************************************************************************************************************************************************!*\
10681  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/CompleteModal.vue?vue&type=template&id=7dcd3699 ***!
10682  \******************************************************************************************************************************************************************************************************************************************************************************************/
10683/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
10684
10685"use strict";
10686__webpack_require__.r(__webpack_exports__);
10687/* harmony export */ __webpack_require__.d(__webpack_exports__, {
10688/* harmony export */   render: () => (/* binding */ render),
10689/* harmony export */   staticRenderFns: () => (/* binding */ staticRenderFns)
10690/* harmony export */ });
10691var render = function render() {
10692  var _vm = this,
10693    _c = _vm._self._c;
10694  return _c("div", {
10695    ref: "modal",
10696    staticClass: "modal fade",
10697    attrs: {
10698      tabindex: "-1"
10699    }
10700  }, [_c("div", {
10701    staticClass: "modal-dialog modal-dialog-centered flex-column justify-content-center"
10702  }, [_c("div", {
10703    staticClass: "modal-content modal-content-basic-white text-center w-auto"
10704  }, [_c("div", {
10705    staticClass: "modal-body flex-center content-copy-link-complete px-96px py-36px"
10706  }, [_vm.isSuccess ? _c("img", {
10707    staticClass: "content-copy-link-complete-img",
10708    attrs: {
10709      src: "/img/complete_fill_green.svg"
10710    }
10711  }) : _c("img", {
10712    staticClass: "content-copy-link-complete-img",
10713    attrs: {
10714      src: "/img/error_outline_white.svg"
10715    }
10716  }), _vm._v(" "), _c("div", {
10717    staticClass: "content-copy-link-complete-text"
10718  }, [_vm._v("\n                    " + _vm._s(_vm.message) + "\n                ")])])])])]);
10719};
10720var staticRenderFns = [];
10721render._withStripped = true;
10722
10723
10724/***/ }),
10725
10726/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/CopyUrlButton.vue?vue&type=template&id=0493799e":
10727/*!******************************************************************************************************************************************************************************************************************************************************************************************!*\
10728  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/CopyUrlButton.vue?vue&type=template&id=0493799e ***!
10729  \******************************************************************************************************************************************************************************************************************************************************************************************/
10730/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
10731
10732"use strict";
10733__webpack_require__.r(__webpack_exports__);
10734/* harmony export */ __webpack_require__.d(__webpack_exports__, {
10735/* harmony export */   render: () => (/* binding */ render),
10736/* harmony export */   staticRenderFns: () => (/* binding */ staticRenderFns)
10737/* harmony export */ });
10738var render = function render() {
10739  var _vm = this,
10740    _c = _vm._self._c;
10741  return _c("button", {
10742    staticClass: "copyLinkBtn",
10743    on: {
10744      click: _vm.copy
10745    }
10746  }, [_vm._v("複製")]);
10747};
10748var staticRenderFns = [];
10749render._withStripped = true;
10750
10751
10752/***/ }),
10753
10754/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/Coupon.vue?vue&type=template&id=c253f95e":
10755/*!***********************************************************************************************************************************************************************************************************************************************************************************!*\
10756  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/Coupon.vue?vue&type=template&id=c253f95e ***!
10757  \***********************************************************************************************************************************************************************************************************************************************************************************/
10758/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
10759
10760"use strict";
10761__webpack_require__.r(__webpack_exports__);
10762/* harmony export */ __webpack_require__.d(__webpack_exports__, {
10763/* harmony export */   render: () => (/* binding */ render),
10764/* harmony export */   staticRenderFns: () => (/* binding */ staticRenderFns)
10765/* harmony export */ });
10766var render = function render() {
10767  var _vm = this,
10768    _c = _vm._self._c;
10769  return _c("section", {
10770    staticClass: "coupon-list-collection shadow2 rounded pb-2 mb-3"
10771  }, [_c("div", {
10772    directives: [{
10773      name: "show",
10774      rawName: "v-show",
10775      value: _vm.canMarkAsDeleted,
10776      expression: "canMarkAsDeleted"
10777    }],
10778    staticClass: "btn-delete-coupon-block",
10779    on: {
10780      click: function click($event) {
10781        return _vm.markAsDeleted();
10782      }
10783    }
10784  }, [_c("div", {
10785    staticClass: "btn-delete-coupon"
10786  })]), _vm._v(" "), _c("div", {
10787    staticClass: "coupon-detail"
10788  }, [_c("div", {
10789    staticClass: "status pr-2"
10790  }, [!_vm.coupon.use_url ? _c("div", {
10791    staticClass: "mark px-3"
10792  }, [_vm._v("\n        已被兌換" + _vm._s(_vm.coupon.exchange_times) + "次\n      ")]) : _vm._e(), _vm._v(" "), _c("div", {
10793    staticClass: "mark px-3"
10794  }, [_vm._v(_vm._s(_vm.coupon.type_name))])]), _vm._v(" "), _vm.lazy ? _c("img", {
10795    attrs: {
10796      "data-src": _vm.coupon.image,
10797      alt: _vm.coupon.name
10798    }
10799  }) : _c("img", {
10800    attrs: {
10801      src: _vm.coupon.image,
10802      alt: _vm.coupon.name
10803    }
10804  }), _vm._v(" "), _c("div", {
10805    staticClass: "coupon-title pt-2 px-2"
10806  }, [_vm._v("\n      " + _vm._s(_vm.coupon.name) + "\n    ")]), _vm._v(" "), _c("div", {
10807    staticClass: "coupon-description px-2 pt-2"
10808  }, [_vm._v("\n      " + _vm._s(_vm.coupon.store_name) + " | " + _vm._s(_vm.coupon.store_address) + "\n    ")]), _vm._v(" "), _c("div", {
10809    staticClass: "coupon-time px-2 pb-2"
10810  }, [_vm._v("\n      " + _vm._s(_vm.coupon.expired_at ? "兌換期限 " + _vm.coupon.expired_at : " ") + "\n    ")])]), _vm._v(" "), _c("div", {
10811    staticClass: "get-coupon px-2"
10812  }, [_vm.coupon.use_url ? _c("div", {
10813    staticClass: "use-limit"
10814  }, [_vm.coupon.is_used && _vm.coupon.user_coupon_delivery_status ? _c("span", {
10815    staticClass: "red"
10816  }, [_vm._v("進度: "), _c("span", {
10817    staticClass: "delivery-status"
10818  }, [_vm._v(_vm._s(_vm.coupon.user_coupon_delivery_status_desc))])]) : !_vm.coupon.expired_at ? _c("span", {
10819    staticClass: "red"
10820  }, [_vm._v(" ")]) : _vm.coupon.expired_days <= 10 ? _c("span", {
10821    staticClass: "red"
10822  }, [_vm._v("剩餘" + _vm._s(_vm.coupon.expired_days) + "天")]) : _c("span", [_vm._v("剩餘" + _vm._s(_vm.coupon.expired_days) + "天")])]) : _vm.canOnlyRedeemWithCode ? _c("div", {
10823    staticClass: "code"
10824  }, [_c("span", {
10825    staticClass: "point-num"
10826  }), _c("span", {
10827    staticClass: "red"
10828  }, [_vm._v("請輸入折扣碼序號進行兌換")])]) : _c("div", {
10829    staticClass: "point"
10830  }, [_c("span", {
10831    staticClass: "point-num"
10832  }, [_vm._v(_vm._s(_vm.coupon.point))]), _vm._v(" 點\n    ")]), _vm._v(" "), _vm.coupon.is_used ? _c("button", {
10833    staticClass: "btn btn-getcoupon py-1",
10834    attrs: {
10835      disabled: ""
10836    }
10837  }, [_vm._v("\n      已使用\n    ")]) : _vm.coupon.is_expired ? _c("button", {
10838    staticClass: "btn btn-getcoupon py-1",
10839    attrs: {
10840      disabled: ""
10841    }
10842  }, [_vm._v("\n      已逾期\n    ")]) : _vm.canOnlyRedeemWithCode && !_vm.coupon.use_url ? _c("button", {
10843    staticClass: "d-none btn btn-getcoupon py-1"
10844  }) : _vm.coupon.point > this.$parent.userPoints ? _c("a", {
10845    staticClass: "btn btn-getcoupon btn-coupon-not-enough py-1",
10846    attrs: {
10847      href: _vm.submitUrl,
10848      disabled: ""
10849    }
10850  }, [_vm._v("\n      點數不足\n    ")]) : !_vm.coupon.use_url && _vm.coupon.amount <= _vm.coupon.exchange_times ? _c("button", {
10851    staticClass: "btn btn-getcoupon py-1",
10852    attrs: {
10853      disabled: "true"
10854    }
10855  }, [_vm._v("\n      兌換完畢\n    ")]) : _c("a", {
10856    staticClass: "btn btn-getcoupon py-1",
10857    attrs: {
10858      href: _vm.submitUrl
10859    }
10860  }, [_vm._v("\n      " + _vm._s(_vm.submitText) + "\n    ")])])]);
10861};
10862var staticRenderFns = [];
10863render._withStripped = true;
10864
10865
10866/***/ }),
10867
10868/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/CouponList.vue?vue&type=template&id=2676d6e2":
10869/*!***************************************************************************************************************************************************************************************************************************************************************************************!*\
10870  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/CouponList.vue?vue&type=template&id=2676d6e2 ***!
10871  \***************************************************************************************************************************************************************************************************************************************************************************************/
10872/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
10873
10874"use strict";
10875__webpack_require__.r(__webpack_exports__);
10876/* harmony export */ __webpack_require__.d(__webpack_exports__, {
10877/* harmony export */   render: () => (/* binding */ render),
10878/* harmony export */   staticRenderFns: () => (/* binding */ staticRenderFns)
10879/* harmony export */ });
10880var render = function render() {
10881  var _vm = this,
10882    _c = _vm._self._c;
10883  return _c("div", [_vm._l(_vm.pageCount, function (page, pageIndex) {
10884    return [_c("div", {
10885      staticClass: "container mycontainer"
10886    }, [pageIndex == 0 ? [_c("div", {
10887      staticClass: "row"
10888    }, [_c("div", {
10889      staticClass: "col-12 col-md-6"
10890    }, [_c("h2", {
10891      staticClass: "categoryTitle"
10892    }, [_vm._v(_vm._s(_vm.title))]), _vm._v(" "), _c("span", {
10893      staticClass: "categorySubTitle"
10894    }, [_vm._v(_vm._s(_vm.englishTitle))])]), _vm._v(" "), _c("div", {
10895      staticClass: "col-6 col-md-3 col-lg-3 d-xl-3 px-md-0 filter-btn pr-1 text-right"
10896    }, [_c("button", {
10897      staticClass: "btn btn-outline mybutton",
10898      attrs: {
10899        type: "button"
10900      },
10901      on: {
10902        click: function click($event) {
10903          _vm.showCanvas = !_vm.showCanvas;
10904        }
10905      }
10906    }, [_c("img", {
10907      staticClass: "img-fluid mr-2",
10908      staticStyle: {
10909        width: "16px"
10910      },
10911      attrs: {
10912        src: "/img/filter-icon.svg"
10913      }
10914    }), _vm._v("篩選與折扣碼\n                        ")])]), _vm._v(" "), _c("div", {
10915      staticClass: "col-6 col-md-3 col-lg-3 col-xl-3 text-right pl-1 filter-select"
10916    }, [_c("div", {
10917      staticClass: "dropdown d-block d-md-inline-block d-lg-inline-block"
10918    }, [_c("button", {
10919      staticClass: "btn dropdown-toggle dropdown-toggle-couponlist myselect",
10920      attrs: {
10921        type: "button"
10922      }
10923    }, [_vm._v("\n                                " + _vm._s(_vm.currentSort.name) + "\n                                "), _c("img", {
10924      attrs: {
10925        src: "/img/arrow.svg",
10926        alt: "arrow"
10927      }
10928    })]), _vm._v(" "), _c("div", {
10929      staticClass: "dropdown-menu",
10930      attrs: {
10931        "aria-labelledby": "dropdownMenuButton"
10932      }
10933    }, _vm._l(_vm.sorts, function (sort, index) {
10934      return _c("a", {
10935        key: index,
10936        staticClass: "dropdown-item",
10937        attrs: {
10938          href: "#"
10939        },
10940        on: {
10941          click: function click($event) {
10942            return _vm.changeSort(sort);
10943          }
10944        }
10945      }, [_vm._v("\n                                    " + _vm._s(sort.name) + "\n                                ")]);
10946    }), 0)])])]), _vm._v(" "), _vm.selectedPrice != null || _vm.selectedAreas.length > 0 || _vm.selectedTypes.length > 0 ? _c("div", {
10947      staticClass: "search-result mt-2"
10948    }, [_c("div", {
10949      staticClass: "row"
10950    }, [_c("div", {
10951      staticClass: "col"
10952    }, [_vm._v("\n                            已選擇篩選條件\n                            "), _vm.selectedPrice ? _c("div", {
10953      staticClass: "search-item rounded py-1 ml-2 mb-1",
10954      on: {
10955        click: _vm.removePrice
10956      }
10957    }, [_vm._v("\n                                " + _vm._s(_vm.getPriceLabel(_vm.selectedPrice)) + "\n                            ")]) : _vm._e(), _vm._v(" "), _vm._l(_vm.selectedAreas, function (selectedArea, index) {
10958      return _c("div", {
10959        key: index,
10960        staticClass: "search-item rounded py-1 ml-2 mb-1",
10961        on: {
10962          click: function click($event) {
10963            return _vm.removeArea(index);
10964          }
10965        }
10966      }, [_vm._v("\n                                " + _vm._s(selectedArea) + "\n                            ")]);
10967    }), _vm._v(" "), _vm._l(_vm.selectedTypes, function (selectedType, index) {
10968      return _c("div", {
10969        key: index,
10970        staticClass: "search-item rounded py-1 ml-2 mb-1",
10971        on: {
10972          click: function click($event) {
10973            return _vm.removeType(index);
10974          }
10975        }
10976      }, [_vm._v("\n                                " + _vm._s(selectedType) + "\n                            ")]);
10977    }), _vm._v(" "), _c("a", {
10978      staticClass: "btn btn-link p-0 ml-2 clear-allitem",
10979      on: {
10980        click: _vm.clearConditions
10981      }
10982    }, [_vm._v("\n                                清除所有篩選\n                            ")])], 2)])]) : _vm._e(), _vm._v(" "), _c("div", {
10983      staticClass: "collections-list mt-3"
10984    }, [_c("div", {
10985      staticClass: "filter-section d-none d-xl-block"
10986    }, [_c("div", {
10987      staticClass: "input-group search-bar mb-2"
10988    }, [_c("input", {
10989      directives: [{
10990        name: "model",
10991        rawName: "v-model",
10992        value: _vm.exchangeCode,
10993        expression: "exchangeCode"
10994      }],
10995      staticClass: "form-control my-0 border-0",
10996      attrs: {
10997        type: "text",
10998        placeholder: "輸入序號",
10999        "aria-label": "Search"
11000      },
11001      domProps: {
11002        value: _vm.exchangeCode
11003      },
11004      on: {
11005        input: function input($event) {
11006          if ($event.target.composing) return;
11007          _vm.exchangeCode = $event.target.value;
11008        }
11009      }
11010    }), _vm._v(" "), _c("button", {
11011      staticClass: "btn btn-getcoupon px-2 py-0 m-1",
11012      on: {
11013        click: _vm.exchange
11014      }
11015    }, [_vm._v("\n                                兌換\n                            ")])]), _vm._v(" "), _vm.showExchangeMessage ? _c("div", {
11016      staticClass: "mb-2"
11017    }, [_vm.exchangeResult ? _c("span", {
11018      staticClass: "ok"
11019    }, [_vm._v("兌換成功")]) : _c("span", {
11020      staticClass: "failure"
11021    }, [_vm._v("此折扣碼無效")])]) : _vm._e(), _vm._v(" "), _c("div", {
11022      staticClass: "input-group search-bar mb-2"
11023    }, [_c("input", {
11024      directives: [{
11025        name: "model",
11026        rawName: "v-model",
11027        value: _vm.keyword,
11028        expression: "keyword"
11029      }],
11030      staticClass: "form-control my-0 border-0",
11031      attrs: {
11032        type: "text",
11033        placeholder: "搜尋",
11034        "aria-label": "Search"
11035      },
11036      domProps: {
11037        value: _vm.keyword
11038      },
11039      on: {
11040        input: function input($event) {
11041          if ($event.target.composing) return;
11042          _vm.keyword = $event.target.value;
11043        }
11044      }
11045    }), _vm._v(" "), _c("div", {
11046      staticClass: "search-icon"
11047    })]), _vm._v(" "), _c("div", {
11048      staticClass: "filter-header my-2"
11049    }, [_c("a", {
11050      staticClass: "btn btn-block text-left p-0",
11051      attrs: {
11052        "data-toggle": "collapse",
11053        href: "#multiCollapseExample1",
11054        role: "button",
11055        "aria-expanded": "false",
11056        "aria-controls": "multiCollapseExample1"
11057      }
11058    }, [_vm._v("點數面額\n                                "), _c("img", {
11059      attrs: {
11060        src: "/img/arrow.svg",
11061        alt: ""
11062      }
11063    })])]), _vm._v(" "), _c("div", {
11064      staticClass: "collapse multi-collapse show",
11065      attrs: {
11066        id: "multiCollapseExample1"
11067      }
11068    }, [_c("div", {
11069      staticClass: "card card-body border-0 p-0"
11070    }, _vm._l(_vm.prices, function (price, index) {
11071      return _c("div", {
11072        key: index,
11073        staticClass: "form-check mb-2 search-by-type-checkbox"
11074      }, [_c("input", {
11075        directives: [{
11076          name: "model",
11077          rawName: "v-model",
11078          value: _vm.selectedPrice,
11079          expression: "selectedPrice"
11080        }],
11081        staticClass: "form-check-input",
11082        attrs: {
11083          type: "radio",
11084          id: "price1" + index
11085        },
11086        domProps: {
11087          value: price,
11088          checked: _vm._q(_vm.selectedPrice, price)
11089        },
11090        on: {
11091          change: function change($event) {
11092            _vm.selectedPrice = price;
11093          }
11094        }
11095      }), _vm._v(" "), _c("label", {
11096        staticClass: "form-check-label",
11097        attrs: {
11098          "for": "price1" + index
11099        }
11100      }, [_vm._v("\n                                        " + _vm._s(_vm.getPriceLabel(price)) + "\n                                    ")])]);
11101    }), 0)]), _vm._v(" "), _c("hr", {
11102      staticClass: "my-1"
11103    }), _vm._v(" "), _c("div", {
11104      staticClass: "filter-header my-2"
11105    }, [_c("a", {
11106      staticClass: "btn btn-block text-left p-0",
11107      attrs: {
11108        "data-toggle": "collapse",
11109        href: "#multiCollapseExample2",
11110        role: "button",
11111        "aria-expanded": "false",
11112        "aria-controls": "multiCollapseExample2"
11113      }
11114    }, [_vm._v("店家區域\n                                "), _c("img", {
11115      attrs: {
11116        src: "/img/arrow.svg",
11117        alt: ""
11118      }
11119    })])]), _vm._v(" "), _c("div", {
11120      staticClass: "collapse multi-collapse border-0 show",
11121      attrs: {
11122        id: "multiCollapseExample2"
11123      }
11124    }, [_c("div", {
11125      staticClass: "card card-body border-0 p-0"
11126    }, _vm._l(_vm.areas, function (area, index) {
11127      return _c("div", {
11128        key: index,
11129        staticClass: "form-check mb-2 search-by-type-checkbox"
11130      }, [_c("input", {
11131        directives: [{
11132          name: "model",
11133          rawName: "v-model",
11134          value: _vm.selectedAreas,
11135          expression: "selectedAreas"
11136        }],
11137        staticClass: "form-check-input",
11138        attrs: {
11139          type: "checkbox",
11140          id: "area1" + index
11141        },
11142        domProps: {
11143          value: area,
11144          checked: Array.isArray(_vm.selectedAreas) ? _vm._i(_vm.selectedAreas, area) > -1 : _vm.selectedAreas
11145        },
11146        on: {
11147          change: function change($event) {
11148            var $$a = _vm.selectedAreas,
11149              $$el = $event.target,
11150              $$c = $$el.checked ? true : false;
11151            if (Array.isArray($$a)) {
11152              var $$v = area,
11153                $$i = _vm._i($$a, $$v);
11154              if ($$el.checked) {
11155                $$i < 0 && (_vm.selectedAreas = $$a.concat([$$v]));
11156              } else {
11157                $$i > -1 && (_vm.selectedAreas = $$a.slice(0, $$i).concat($$a.slice($$i + 1)));
11158              }
11159            } else {
11160              _vm.selectedAreas = $$c;
11161            }
11162          }
11163        }
11164      }), _vm._v(" "), _c("label", {
11165        staticClass: "form-check-label",
11166        attrs: {
11167          "for": "area1" + index
11168        }
11169      }, [_vm._v("\n                                        " + _vm._s(area) + "\n                                    ")])]);
11170    }), 0)]), _vm._v(" "), _c("hr", {
11171      staticClass: "my-1"
11172    }), _vm._v(" "), _c("div", {
11173      staticClass: "filter-header my-2"
11174    }, [_c("a", {
11175      staticClass: "btn btn-block text-left p-0",
11176      attrs: {
11177        "data-toggle": "collapse",
11178        href: "#multiCollapseExample3",
11179        role: "button",
11180        "aria-expanded": "false",
11181        "aria-controls": "multiCollapseExample3"
11182      }
11183    }, [_vm._v("贈品分類\n                                "), _c("img", {
11184      attrs: {
11185        src: "/img/arrow.svg",
11186        alt: ""
11187      }
11188    })])]), _vm._v(" "), _c("div", {
11189      staticClass: "collapse multi-collapse show",
11190      attrs: {
11191        id: "multiCollapseExample3"
11192      }
11193    }, [_c("div", {
11194      staticClass: "card card-body border-0 p-0"
11195    }, _vm._l(_vm.types, function (type, index) {
11196      return _c("div", {
11197        key: index,
11198        staticClass: "form-check mb-2 search-by-type-checkbox"
11199      }, [_c("input", {
11200        directives: [{
11201          name: "model",
11202          rawName: "v-model",
11203          value: _vm.selectedTypes,
11204          expression: "selectedTypes"
11205        }],
11206        staticClass: "form-check-input",
11207        attrs: {
11208          type: "checkbox",
11209          id: "type1" + index
11210        },
11211        domProps: {
11212          value: type,
11213          checked: Array.isArray(_vm.selectedTypes) ? _vm._i(_vm.selectedTypes, type) > -1 : _vm.selectedTypes
11214        },
11215        on: {
11216          change: function change($event) {
11217            var $$a = _vm.selectedTypes,
11218              $$el = $event.target,
11219              $$c = $$el.checked ? true : false;
11220            if (Array.isArray($$a)) {
11221              var $$v = type,
11222                $$i = _vm._i($$a, $$v);
11223              if ($$el.checked) {
11224                $$i < 0 && (_vm.selectedTypes = $$a.concat([$$v]));
11225              } else {
11226                $$i > -1 && (_vm.selectedTypes = $$a.slice(0, $$i).concat($$a.slice($$i + 1)));
11227              }
11228            } else {
11229              _vm.selectedTypes = $$c;
11230            }
11231          }
11232        }
11233      }), _vm._v(" "), _c("label", {
11234        staticClass: "form-check-label",
11235        attrs: {
11236          "for": "type1" + index
11237        }
11238      }, [_vm._v("\n                                        " + _vm._s(type) + "\n                                    ")])]);
11239    }), 0)])])])] : _vm._e(), _vm._v(" "), _c("div", {
11240      staticClass: "row"
11241    }, [_vm._l(_vm.filterCoupons.slice(pageIndex * _vm.pageSize, (pageIndex + 1) * _vm.pageSize), function (coupon) {
11242      return [_c("div", {
11243        staticClass: "col-12 col-sm-6 col-lg-4"
11244      }, [_c("Coupon", {
11245        attrs: {
11246          coupon: coupon
11247        }
11248      })], 1)];
11249    })], 2)], 2), _vm._v(" "), _c("div", {
11250      staticClass: "advertiseBlock"
11251    }, [_c("div", {
11252      staticClass: "container"
11253    }, [_c("a", {
11254      attrs: {
11255        href: _vm.advertisement2.uri,
11256        target: "_blank"
11257      }
11258    }, [_c("img", {
11259      attrs: {
11260        src: _vm.advertisement2.image,
11261        alt: _vm.advertisement2.name
11262      }
11263    })])])])];
11264  }), _vm._v(" "), _c("div", {
11265    staticClass: "bs-canvas bs-canvas-anim bs-canvas-left position-fixed h-100",
11266    style: {
11267      width: _vm.showCanvas ? "240px" : "0"
11268    },
11269    attrs: {
11270      id: "bs-canvas-left"
11271    }
11272  }, [_c("div", {
11273    staticClass: "p-3"
11274  }, [_c("div", {
11275    staticStyle: {
11276      "font-size": "20px"
11277    }
11278  }, [_c("img", {
11279    staticClass: "img-fluid mr-2",
11280    staticStyle: {
11281      width: "20px"
11282    },
11283    attrs: {
11284      src: "/img/filter-icon.svg"
11285    }
11286  }), _vm._v("\n                篩選與折扣碼\n            ")])]), _vm._v(" "), _c("div", {
11287    staticClass: "bs-canvas-content px-3"
11288  }, [_c("div", {
11289    staticClass: "input-group search-bar mb-2"
11290  }, [_c("input", {
11291    directives: [{
11292      name: "model",
11293      rawName: "v-model",
11294      value: _vm.exchangeCode,
11295      expression: "exchangeCode"
11296    }],
11297    staticClass: "form-control my-0 border-0",
11298    attrs: {
11299      type: "text",
11300      placeholder: "輸入序號",
11301      "aria-label": "Search"
11302    },
11303    domProps: {
11304      value: _vm.exchangeCode
11305    },
11306    on: {
11307      input: function input($event) {
11308        if ($event.target.composing) return;
11309        _vm.exchangeCode = $event.target.value;
11310      }
11311    }
11312  }), _vm._v(" "), _c("button", {
11313    staticClass: "btn btn-getcoupon px-2 py-0 m-1",
11314    on: {
11315      click: _vm.exchange
11316    }
11317  }, [_vm._v("\n                    兌換\n                ")])]), _vm._v(" "), _vm.showExchangeMessage ? _c("div", {
11318    staticClass: "mb-2"
11319  }, [_vm.exchangeResult ? _c("span", {
11320    staticClass: "ok"
11321  }, [_vm._v("兌換成功")]) : _c("span", {
11322    staticClass: "failure"
11323  }, [_vm._v("此折扣碼無效")])]) : _vm._e(), _vm._v(" "), _c("div", {
11324    staticClass: "input-group search-bar mb-2"
11325  }, [_c("input", {
11326    directives: [{
11327      name: "model",
11328      rawName: "v-model",
11329      value: _vm.keyword,
11330      expression: "keyword"
11331    }],
11332    staticClass: "form-control my-0 border-0",
11333    attrs: {
11334      type: "text",
11335      placeholder: "搜尋",
11336      "aria-label": "Search"
11337    },
11338    domProps: {
11339      value: _vm.keyword
11340    },
11341    on: {
11342      input: function input($event) {
11343        if ($event.target.composing) return;
11344        _vm.keyword = $event.target.value;
11345      }
11346    }
11347  }), _vm._v(" "), _c("div", {
11348    staticClass: "search-icon"
11349  })]), _vm._v(" "), _c("div", {
11350    staticClass: "filter-header my-2"
11351  }, [_c("a", {
11352    staticClass: "btn btn-block text-left p-0",
11353    attrs: {
11354      "data-toggle": "collapse",
11355      href: "#multiCollapseExample1",
11356      role: "button",
11357      "aria-expanded": "false",
11358      "aria-controls": "multiCollapseExample1"
11359    }
11360  }, [_vm._v("點數面額 "), _c("img", {
11361    attrs: {
11362      src: "/img/arrow.svg",
11363      alt: ""
11364    }
11365  })])]), _vm._v(" "), _c("div", {
11366    staticClass: "collapse multi-collapse show",
11367    attrs: {
11368      id: "multiCollapseExample1"
11369    }
11370  }, [_c("div", {
11371    staticClass: "card card-body border-0 p-0"
11372  }, _vm._l(_vm.prices, function (price, index) {
11373    return _c("div", {
11374      key: index,
11375      staticClass: "form-check mb-2 search-by-type-checkbox"
11376    }, [_c("input", {
11377      directives: [{
11378        name: "model",
11379        rawName: "v-model",
11380        value: _vm.selectedPrice,
11381        expression: "selectedPrice"
11382      }],
11383      staticClass: "form-check-input",
11384      attrs: {
11385        type: "radio",
11386        id: "price1" + index
11387      },
11388      domProps: {
11389        value: price,
11390        checked: _vm._q(_vm.selectedPrice, price)
11391      },
11392      on: {
11393        change: function change($event) {
11394          _vm.selectedPrice = price;
11395        }
11396      }
11397    }), _vm._v(" "), _c("label", {
11398      staticClass: "form-check-label",
11399      attrs: {
11400        "for": "price1" + index
11401      }
11402    }, [_vm._v("\n                            " + _vm._s(_vm.getPriceLabel(price)) + "\n                        ")])]);
11403  }), 0)]), _vm._v(" "), _c("hr", {
11404    staticClass: "my-1"
11405  }), _vm._v(" "), _c("div", {
11406    staticClass: "filter-header my-2"
11407  }, [_c("a", {
11408    staticClass: "btn btn-block text-left p-0",
11409    attrs: {
11410      "data-toggle": "collapse",
11411      href: "#multiCollapseExample2",
11412      role: "button",
11413      "aria-expanded": "false",
11414      "aria-controls": "multiCollapseExample2"
11415    }
11416  }, [_vm._v("店家區域 "), _c("img", {
11417    attrs: {
11418      src: "/img/arrow.svg",
11419      alt: ""
11420    }
11421  })])]), _vm._v(" "), _c("div", {
11422    staticClass: "collapse multi-collapse border-0 show",
11423    attrs: {
11424      id: "multiCollapseExample2"
11425    }
11426  }, [_c("div", {
11427    staticClass: "card card-body border-0 p-0"
11428  }, _vm._l(_vm.areas, function (area, index) {
11429    return _c("div", {
11430      key: index,
11431      staticClass: "form-check mb-2 search-by-type-checkbox"
11432    }, [_c("input", {
11433      directives: [{
11434        name: "model",
11435        rawName: "v-model",
11436        value: _vm.selectedAreas,
11437        expression: "selectedAreas"
11438      }],
11439      staticClass: "form-check-input",
11440      attrs: {
11441        type: "checkbox",
11442        id: "area1" + index
11443      },
11444      domProps: {
11445        value: area,
11446        checked: Array.isArray(_vm.selectedAreas) ? _vm._i(_vm.selectedAreas, area) > -1 : _vm.selectedAreas
11447      },
11448      on: {
11449        change: function change($event) {
11450          var $$a = _vm.selectedAreas,
11451            $$el = $event.target,
11452            $$c = $$el.checked ? true : false;
11453          if (Array.isArray($$a)) {
11454            var $$v = area,
11455              $$i = _vm._i($$a, $$v);
11456            if ($$el.checked) {
11457              $$i < 0 && (_vm.selectedAreas = $$a.concat([$$v]));
11458            } else {
11459              $$i > -1 && (_vm.selectedAreas = $$a.slice(0, $$i).concat($$a.slice($$i + 1)));
11460            }
11461          } else {
11462            _vm.selectedAreas = $$c;
11463          }
11464        }
11465      }
11466    }), _vm._v(" "), _c("label", {
11467      staticClass: "form-check-label",
11468      attrs: {
11469        "for": "area1" + index
11470      }
11471    }, [_vm._v("\n                            " + _vm._s(area) + "\n                        ")])]);
11472  }), 0)]), _vm._v(" "), _c("hr", {
11473    staticClass: "my-1"
11474  }), _vm._v(" "), _c("div", {
11475    staticClass: "filter-header my-2"
11476  }, [_c("a", {
11477    staticClass: "btn btn-block text-left p-0",
11478    attrs: {
11479      "data-toggle": "collapse",
11480      href: "#multiCollapseExample3",
11481      role: "button",
11482      "aria-expanded": "false",
11483      "aria-controls": "multiCollapseExample3"
11484    }
11485  }, [_vm._v("贈品分類 "), _c("img", {
11486    attrs: {
11487      src: "/img/arrow.svg",
11488      alt: ""
11489    }
11490  })])]), _vm._v(" "), _c("div", {
11491    staticClass: "collapse multi-collapse show",
11492    attrs: {
11493      id: "multiCollapseExample3"
11494    }
11495  }, [_c("div", {
11496    staticClass: "card card-body border-0 p-0"
11497  }, _vm._l(_vm.types, function (type, index) {
11498    return _c("div", {
11499      key: index,
11500      staticClass: "form-check mb-2 search-by-type-checkbox"
11501    }, [_c("input", {
11502      directives: [{
11503        name: "model",
11504        rawName: "v-model",
11505        value: _vm.selectedTypes,
11506        expression: "selectedTypes"
11507      }],
11508      staticClass: "form-check-input",
11509      attrs: {
11510        type: "checkbox",
11511        id: "type1" + index
11512      },
11513      domProps: {
11514        value: type,
11515        checked: Array.isArray(_vm.selectedTypes) ? _vm._i(_vm.selectedTypes, type) > -1 : _vm.selectedTypes
11516      },
11517      on: {
11518        change: function change($event) {
11519          var $$a = _vm.selectedTypes,
11520            $$el = $event.target,
11521            $$c = $$el.checked ? true : false;
11522          if (Array.isArray($$a)) {
11523            var $$v = type,
11524              $$i = _vm._i($$a, $$v);
11525            if ($$el.checked) {
11526              $$i < 0 && (_vm.selectedTypes = $$a.concat([$$v]));
11527            } else {
11528              $$i > -1 && (_vm.selectedTypes = $$a.slice(0, $$i).concat($$a.slice($$i + 1)));
11529            }
11530          } else {
11531            _vm.selectedTypes = $$c;
11532          }
11533        }
11534      }
11535    }), _vm._v(" "), _c("label", {
11536      staticClass: "form-check-label",
11537      attrs: {
11538        "for": "type1" + index
11539      }
11540    }, [_vm._v("\n                            " + _vm._s(type) + "\n                        ")])]);
11541  }), 0)])])]), _vm._v(" "), _c("div", {
11542    staticClass: "bg-black",
11543    style: {
11544      display: _vm.showCanvas ? "block" : "none"
11545    },
11546    attrs: {
11547      "aria-label": "Close"
11548    },
11549    on: {
11550      click: function click($event) {
11551        _vm.showCanvas = false;
11552      }
11553    }
11554  })], 2);
11555};
11556var staticRenderFns = [];
11557render._withStripped = true;
11558
11559
11560/***/ }),
11561
11562/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/NewUser.vue?vue&type=template&id=1283a570":
11563/*!************************************************************************************************************************************************************************************************************************************************************************************!*\
11564  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/NewUser.vue?vue&type=template&id=1283a570 ***!
11565  \************************************************************************************************************************************************************************************************************************************************************************************/
11566/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
11567
11568"use strict";
11569__webpack_require__.r(__webpack_exports__);
11570/* harmony export */ __webpack_require__.d(__webpack_exports__, {
11571/* harmony export */   render: () => (/* binding */ render),
11572/* harmony export */   staticRenderFns: () => (/* binding */ staticRenderFns)
11573/* harmony export */ });
11574var render = function render() {
11575  var _vm = this,
11576    _c = _vm._self._c;
11577  return _c("div", {
11578    staticClass: "social-post-card social-post-card-member-block",
11579    on: {
11580      click: function click($event) {
11581        return _vm.$emit("userClick", _vm.socialPost.alias_name);
11582      }
11583    }
11584  }, [_c("span", {
11585    staticClass: "social-post-card-member-title"
11586  }, [_vm._v("新會員")]), _vm._v(" "), _c("div", {
11587    staticClass: "member-profile shadow rounded text-center pb-2"
11588  }, [_c("div", {
11589    staticClass: "avatar mb-4 social-post-card-member-image-block"
11590  }, [_c("div", {
11591    style: {
11592      height: "150px",
11593      backgroundImage: "url(" + _vm.socialPost.background_image + ")",
11594      backgroundSize: "cover",
11595      backgroundPosition: "center"
11596    }
11597  }), _vm._v(" "), _c("div", {
11598    staticClass: "avatar-pic rounded-circle social-post-card-member-image"
11599  }, [_c("div", {
11600    staticClass: "rounded-circle w-100 h-100",
11601    style: {
11602      backgroundImage: "url(" + _vm.socialPost.profile_image + ")",
11603      backgroundSize: "cover"
11604    }
11605  })])]), _vm._v(" "), _c("h2", {
11606    staticClass: "member-name title social-post-card-member-name"
11607  }, [_vm._v("\n            " + _vm._s(_vm.socialPost.name) + "\n        ")]), _vm._v(" "), _c("div", {
11608    staticClass: "member-message px-3 mb-4 social-post-card-member-name-description ellipsis"
11609  }, [_vm._v("\n            " + _vm._s(_vm.socialPost.introduction) + "\n        ")])])]);
11610};
11611var staticRenderFns = [];
11612render._withStripped = true;
11613
11614
11615/***/ }),
11616
11617/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/Post.vue?vue&type=template&id=5e8280ea":
11618/*!*********************************************************************************************************************************************************************************************************************************************************************************!*\
11619  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/Post.vue?vue&type=template&id=5e8280ea ***!
11620  \*********************************************************************************************************************************************************************************************************************************************************************************/
11621/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
11622
11623"use strict";
11624__webpack_require__.r(__webpack_exports__);
11625/* harmony export */ __webpack_require__.d(__webpack_exports__, {
11626/* harmony export */   render: () => (/* binding */ render),
11627/* harmony export */   staticRenderFns: () => (/* binding */ staticRenderFns)
11628/* harmony export */ });
11629var render = function render() {
11630  var _vm = this,
11631    _c = _vm._self._c;
11632  return _c("article", {
11633    staticClass: "postCard",
11634    on: {
11635      click: function click($event) {
11636        $event.stopPropagation();
11637        return _vm.redirect.apply(null, arguments);
11638      }
11639    }
11640  }, [_c("article", {
11641    "class": "postImage " + _vm.imageClass,
11642    style: {
11643      backgroundImage: !_vm.lazy ? "url(" + _vm.post.cover_image + ")" : ""
11644    },
11645    attrs: {
11646      "data-background-src": _vm.lazy ? _vm.post.cover_image : ""
11647    }
11648  }), _vm._v(" "), _c("article", {
11649    staticClass: "postContent"
11650  }, [_c("h3", {
11651    staticClass: "postTitle ellipsis"
11652  }, [_vm._v("\n      " + _vm._s(_vm.post.title) + "\n    ")]), _vm._v(" "), _c("div", {
11653    staticClass: "metaBlock"
11654  }, [_c("a", {
11655    attrs: {
11656      href: _vm.post.source_uri
11657    }
11658  }, [_c("h5", {
11659    staticClass: "meta"
11660  }, [_vm._v("\n          " + _vm._s(_vm.post.source_name) + "\n        ")])]), _vm._v(" "), _c("a", {
11661    attrs: {
11662      href: _vm.post.category_url
11663    }
11664  }, [_c("h5", {
11665    staticClass: "meta metacategory"
11666  }, [_vm._v("\n          " + _vm._s(_vm.post.category_name) + "\n        ")])])]), _vm._v(" "), _c("div", {
11667    staticClass: "saveBlock"
11668  }, [_vm.isCollect ? _c("div", {
11669    staticClass: "saveIcon",
11670    staticStyle: {
11671      cursor: "pointer"
11672    },
11673    on: {
11674      click: function click($event) {
11675        $event.stopPropagation();
11676        return _vm.uncollect.apply(null, arguments);
11677      }
11678    }
11679  }) : _c("div", {
11680    staticClass: "unsavedIcon",
11681    staticStyle: {
11682      cursor: "pointer"
11683    },
11684    on: {
11685      click: function click($event) {
11686        $event.stopPropagation();
11687        return _vm.collect.apply(null, arguments);
11688      }
11689    }
11690  })])])]);
11691};
11692var staticRenderFns = [];
11693render._withStripped = true;
11694
11695
11696/***/ }),
11697
11698/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/PostComment.vue?vue&type=template&id=a82be5f8":
11699/*!****************************************************************************************************************************************************************************************************************************************************************************************!*\
11700  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/PostComment.vue?vue&type=template&id=a82be5f8 ***!
11701  \****************************************************************************************************************************************************************************************************************************************************************************************/
11702/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
11703
11704"use strict";
11705__webpack_require__.r(__webpack_exports__);
11706/* harmony export */ __webpack_require__.d(__webpack_exports__, {
11707/* harmony export */   render: () => (/* binding */ render),
11708/* harmony export */   staticRenderFns: () => (/* binding */ staticRenderFns)
11709/* harmony export */ });
11710var render = function render() {
11711  var _vm = this,
11712    _c = _vm._self._c;
11713  return _c("div", {
11714    staticClass: "d-flex flex-row"
11715  }, [_vm.comment.user.profile_image ? _c("div", {
11716    staticClass: "commentImage",
11717    style: {
11718      backgroundImage: "url(" + _vm.comment.user.profile_image + ")"
11719    }
11720  }) : _c("div", {
11721    staticClass: "commentImage",
11722    staticStyle: {
11723      "background-color": "#ccc",
11724      color: "#aaa",
11725      "text-align": "center",
11726      "padding-top": "23px",
11727      "font-size": "12px",
11728      "background-image": "none"
11729    }
11730  }, [_vm._v("未登入")]), _vm._v(" "), _c("div", {
11731    staticClass: "commentUser"
11732  }, [_vm.comment.user.name ? _c("h4", {
11733    staticClass: "commentAuthorName"
11734  }, [_vm._v(_vm._s(_vm.comment.user.name))]) : _vm._e(), _vm._v(" "), _c("p", {
11735    staticClass: "commentContent",
11736    domProps: {
11737      innerHTML: _vm._s(_vm.nl2br(_vm.comment.content))
11738    }
11739  }), _vm._v(" "), _c("h6", {
11740    staticClass: "commentTime"
11741  }, [_vm._v("\n            " + _vm._s(_vm.comment.created_at) + "\n            "), _vm._t("up")], 2), _vm._v(" "), _vm.comment.can_edit ? _c("h5", {
11742    staticClass: "commentEdit",
11743    on: {
11744      click: function click($event) {
11745        _vm.showControls = !_vm.showControls;
11746      }
11747    }
11748  }, [_vm._v("\n            ...\n            "), _c("div", {
11749    directives: [{
11750      name: "show",
11751      rawName: "v-show",
11752      value: _vm.showControls,
11753      expression: "showControls"
11754    }],
11755    staticClass: "commentEditBlock"
11756  }, [_c("h6", {
11757    staticClass: "edit-comment",
11758    on: {
11759      click: _vm.edit
11760    }
11761  }, [_vm._v("編輯留言")]), _vm._v(" "), _c("h6", {
11762    staticClass: "delete-comment",
11763    on: {
11764      click: _vm.destroy
11765    }
11766  }, [_vm._v("刪除留言")])])]) : _vm._e(), _vm._v(" "), _vm.comment.can_edit ? _c("div", {
11767    directives: [{
11768      name: "show",
11769      rawName: "v-show",
11770      value: _vm.showEdit,
11771      expression: "showEdit"
11772    }],
11773    staticClass: "commentForm"
11774  }, [_c("textarea", {
11775    directives: [{
11776      name: "model",
11777      rawName: "v-model",
11778      value: _vm.content,
11779      expression: "content"
11780    }],
11781    staticClass: "form-control commentFormControl",
11782    attrs: {
11783      rows: "3"
11784    },
11785    domProps: {
11786      value: _vm.content
11787    },
11788    on: {
11789      input: function input($event) {
11790        if ($event.target.composing) return;
11791        _vm.content = $event.target.value;
11792      }
11793    }
11794  }), _vm._v(" "), _c("button", {
11795    staticClass: "btn btn-dark btnEdit",
11796    attrs: {
11797      type: "button"
11798    },
11799    on: {
11800      click: _vm.save
11801    }
11802  }, [_vm._v("\n                儲存\n            ")])]) : _vm._e(), _vm._v(" "), _vm._t("down")], 2)]);
11803};
11804var staticRenderFns = [];
11805render._withStripped = true;
11806
11807
11808/***/ }),
11809
11810/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/PostCommentList.vue?vue&type=template&id=4ef2e67c":
11811/*!********************************************************************************************************************************************************************************************************************************************************************************************!*\
11812  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/PostCommentList.vue?vue&type=template&id=4ef2e67c ***!
11813  \********************************************************************************************************************************************************************************************************************************************************************************************/
11814/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
11815
11816"use strict";
11817__webpack_require__.r(__webpack_exports__);
11818/* harmony export */ __webpack_require__.d(__webpack_exports__, {
11819/* harmony export */   render: () => (/* binding */ render),
11820/* harmony export */   staticRenderFns: () => (/* binding */ staticRenderFns)
11821/* harmony export */ });
11822var render = function render() {
11823  var _vm = this,
11824    _c = _vm._self._c;
11825  return _c("div", {
11826    staticClass: "commentBlock"
11827  }, [_vm._m(0), _vm._v(" "), _c("div", {
11828    staticClass: "commentSection"
11829  }, [_c("div", {
11830    staticClass: "row"
11831  }, [_c("div", {
11832    staticClass: "col-12"
11833  }, [_c("h4", {
11834    staticClass: "commentTilte"
11835  }, [_vm._v("文章留言區")]), _vm._v(" "), _c("textarea", {
11836    directives: [{
11837      name: "model",
11838      rawName: "v-model",
11839      value: _vm.content,
11840      expression: "content"
11841    }],
11842    staticClass: "form-control commentFormControl",
11843    attrs: {
11844      rows: "4",
11845      placeholder: "分享你對文章的看法吧 !"
11846    },
11847    domProps: {
11848      value: _vm.content
11849    },
11850    on: {
11851      input: function input($event) {
11852        if ($event.target.composing) return;
11853        _vm.content = $event.target.value;
11854      }
11855    }
11856  }), _vm._v(" "), _c("button", {
11857    staticClass: "btn btn-dark btnEdit",
11858    attrs: {
11859      type: "submit"
11860    },
11861    on: {
11862      click: _vm.create
11863    }
11864  }, [_vm._v("\n            發佈\n          ")])])])]), _vm._v(" "), _vm._l(_vm.comments, function (comment, index) {
11865    return _c("div", {
11866      key: index,
11867      staticClass: "commentSection commentLine"
11868    }, [_c("post-comment", {
11869      attrs: {
11870        comment: comment
11871      },
11872      scopedSlots: _vm._u([{
11873        key: "up",
11874        fn: function fn() {
11875          return [_c("span", {
11876            staticClass: "commentReply",
11877            on: {
11878              click: function click($event) {
11879                return _vm.$refs.replyList[index].toggleReply();
11880              }
11881            }
11882          }, [_vm._v("\n            回覆\n          ")]), _vm._v(" "), _vm.isAdmin ? _c("div", {
11883            staticClass: "btn btn-danger",
11884            on: {
11885              click: function click($event) {
11886                return _vm.deleteComment(comment.id);
11887              }
11888            }
11889          }, [_vm._v("\n            刪除\n          ")]) : _vm._e()];
11890        },
11891        proxy: true
11892      }, {
11893        key: "down",
11894        fn: function fn() {
11895          return [_c("post-reply-list", {
11896            ref: "replyList",
11897            refInFor: true,
11898            attrs: {
11899              user: _vm.user,
11900              comment: comment
11901            }
11902          })];
11903        },
11904        proxy: true
11905      }], null, true)
11906    })], 1);
11907  }), _vm._v(" "), _vm.showComments.length < _vm.totalCount ? _c("a", {
11908    directives: [{
11909      name: "show",
11910      rawName: "v-show",
11911      value: !_vm.isLoading,
11912      expression: "!isLoading"
11913    }],
11914    attrs: {
11915      href: "#"
11916    },
11917    on: {
11918      click: function click($event) {
11919        $event.preventDefault();
11920        return _vm.load.apply(null, arguments);
11921      }
11922    }
11923  }, [_c("h4", {
11924    staticClass: "commentbtn"
11925  }, [_vm._v("MORE")])]) : _vm._e()], 2);
11926};
11927var staticRenderFns = [function () {
11928  var _vm = this,
11929    _c = _vm._self._c;
11930  return _c("div", {
11931    staticClass: "commentSections"
11932  }, [_c("div", {
11933    staticClass: "commentSection mb-4 border border-secondary rounded p-3",
11934    staticStyle: {
11935      "border-width": "1px !important"
11936    }
11937  }), _vm._v(" "), _c("div", {
11938    staticClass: "d-flex justify-content-between align-items-center",
11939    staticStyle: {
11940      cursor: "pointer"
11941    },
11942    attrs: {
11943      "data-bs-toggle": "collapse",
11944      "data-bs-target": "#rulesCollapse",
11945      "aria-expanded": "false"
11946    }
11947  }, [_c("h4", {
11948    staticClass: "mb-0"
11949  }, [_vm._v("社群互動管理規則")]), _vm._v(" "), _c("i", {
11950    staticClass: "fas fa-chevron-down"
11951  })]), _vm._v(" "), _c("div", {
11952    staticClass: "collapse",
11953    attrs: {
11954      id: "rulesCollapse"
11955    }
11956  }, [_c("div", {
11957    staticClass: "card card-body mt-2"
11958  }, [_c("h5", {
11959    staticClass: "text-danger fw-bold mb-3"
11960  }, [_vm._v("重要提醒:Togayther 平台嚴禁任何金融投資的話題!違者將被立即刪文並封鎖!")]), _vm._v(" "), _c("div", {
11961    staticClass: "rules-content"
11962  }, [_c("p", [_vm._v("有關 Togayther 平台在圖片上傳與留言功能方面的規則説明如下:")]), _vm._v(" "), _c("h6", {
11963    staticClass: "fw-bold mt-3"
11964  }, [_vm._v("圖片上傳規則:")]), _vm._v(" "), _c("ul", [_c("li", [_vm._v("每張圖片大小不超過 2MB")]), _vm._v(" "), _c("li", [_vm._v("單篇貼文限制一張圖片")]), _vm._v(" "), _c("li", [_vm._v("僅註冊用戶可上傳圖片")]), _vm._v(" "), _c("li", [_vm._v("僅認證 VIP 會員可上傳網址")])]), _vm._v(" "), _c("h6", {
11965    staticClass: "fw-bold mt-3"
11966  }, [_vm._v("禁止內容:")]), _vm._v(" "), _c("ul", [_c("li", [_vm._v("人像裸露、暴力血腥場景")]), _vm._v(" "), _c("li", [_vm._v("未成年色情相關訊息")]), _vm._v(" "), _c("li", [_vm._v("違禁符號")]), _vm._v(" "), _c("li", [_vm._v("謾罵、人身攻擊、歧視言論")]), _vm._v(" "), _c("li", [_vm._v("重複留言或與主題無關的內容")])]), _vm._v(" "), _c("h6", {
11967    staticClass: "fw-bold mt-3"
11968  }, [_vm._v("隱私保護:")]), _vm._v(" "), _c("p", [_vm._v("禁止在公開留言中留下個人電話、電子郵件、社群帳號等聯繫方式。")]), _vm._v(" "), _c("div", {
11969    staticClass: "alert alert-warning mt-3 mb-0"
11970  }, [_c("strong", [_vm._v("違規處置:")]), _vm._v(" 違規者將取消會員資格並沒收積分作為懲戒。\n            ")])])])])]);
11971}];
11972render._withStripped = true;
11973
11974
11975/***/ }),
11976
11977/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/PostList.vue?vue&type=template&id=4720a3c9":
11978/*!*************************************************************************************************************************************************************************************************************************************************************************************!*\
11979  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/PostList.vue?vue&type=template&id=4720a3c9 ***!
11980  \*************************************************************************************************************************************************************************************************************************************************************************************/
11981/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
11982
11983"use strict";
11984__webpack_require__.r(__webpack_exports__);
11985/* harmony export */ __webpack_require__.d(__webpack_exports__, {
11986/* harmony export */   render: () => (/* binding */ render),
11987/* harmony export */   staticRenderFns: () => (/* binding */ staticRenderFns)
11988/* harmony export */ });
11989var render = function render() {
11990  var _vm = this,
11991    _c = _vm._self._c;
11992  return _c("div", [_vm._l(_vm.maxPage, function (page, pageIndex) {
11993    return [_c("div", {
11994      key: "post" + pageIndex,
11995      staticClass: "container"
11996    }, [_c("div", {
11997      staticClass: "row"
11998    }, [_vm._l(_vm.showPosts.slice(pageIndex * _vm.pageSize, (pageIndex + 1) * _vm.pageSize), function (post, index) {
11999      return [_c("article", {
12000        key: index,
12001        staticClass: "col-md-4",
12002        "class": {
12003          "postCard-first": _vm.allFirst || pageIndex == 0 && index == 0,
12004          "postCard-other": !_vm.allFirst && (pageIndex > 0 || index > 0)
12005        }
12006      }, [_c("post", {
12007        "class": _vm.postClass,
12008        attrs: {
12009          post: post,
12010          imageClass: _vm.postImageClass
12011        }
12012      })], 1), _vm._v(" "), index % 9 == 5 && _vm.advertisement4.id ? _c("div", {
12013        key: index,
12014        staticClass: "col-md-4 pdlr10"
12015      }, [_c("div", {
12016        staticClass: "postAdvertiseBlock adv04"
12017      }, [_c("a", {
12018        attrs: {
12019          href: _vm.advertisement4.uri,
12020          target: "_blank"
12021        }
12022      }, [_c("div", {
12023        staticClass: "postAdvertise postCard adBlock",
12024        style: {
12025          backgroundImage: "url(" + _vm.advertisement4.image + ")"
12026        },
12027        attrs: {
12028          id: "ad4_" + _vm.advertisement4.id,
12029          role: "img",
12030          "aria-label": _vm.advertisement4.name
12031        },
12032        on: {
12033          click: function click($event) {
12034            return _vm.clickAds(_vm.advertisement4.id);
12035          }
12036        }
12037      })])])]) : _vm._e()];
12038    })], 2)]), _vm._v(" "), _c("div", {
12039      key: "advertise" + pageIndex,
12040      staticClass: "advertiseBlock"
12041    }, [_c("div", {
12042      staticClass: "container"
12043    }, [_c("a", {
12044      attrs: {
12045        href: _vm.advertisement2.uri,
12046        target: "_blank"
12047      },
12048      on: {
12049        click: function click($event) {
12050          return _vm.clickAds(_vm.advertisement2.id);
12051        }
12052      }
12053    }, [_c("img", {
12054      staticClass: "adBlock",
12055      attrs: {
12056        id: "ad2_" + _vm.advertisement2.id,
12057        src: _vm.advertisement2.image,
12058        alt: _vm.advertisement2.name
12059      }
12060    })])])])];
12061  })], 2);
12062};
12063var staticRenderFns = [];
12064render._withStripped = true;
12065
12066
12067/***/ }),
12068
12069/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/PostReplyList.vue?vue&type=template&id=6c6a54e6":
12070/*!******************************************************************************************************************************************************************************************************************************************************************************************!*\
12071  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/PostReplyList.vue?vue&type=template&id=6c6a54e6 ***!
12072  \******************************************************************************************************************************************************************************************************************************************************************************************/
12073/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
12074
12075"use strict";
12076__webpack_require__.r(__webpack_exports__);
12077/* harmony export */ __webpack_require__.d(__webpack_exports__, {
12078/* harmony export */   render: () => (/* binding */ render),
12079/* harmony export */   staticRenderFns: () => (/* binding */ staticRenderFns)
12080/* harmony export */ });
12081var render = function render() {
12082  var _vm = this,
12083    _c = _vm._self._c;
12084  return _c("div", [_c("div", {
12085    staticClass: "commentReplySections"
12086  }, _vm._l(_vm.replies, function (reply, index) {
12087    return _c("post-comment", {
12088      key: index,
12089      staticClass: "commentReplySection",
12090      attrs: {
12091        comment: reply
12092      }
12093    });
12094  }), 1), _vm._v(" "), _vm.showReplies.length < _vm.totalCount ? _c("a", {
12095    directives: [{
12096      name: "show",
12097      rawName: "v-show",
12098      value: !_vm.isLoading,
12099      expression: "!isLoading"
12100    }],
12101    attrs: {
12102      href: "#"
12103    },
12104    on: {
12105      click: function click($event) {
12106        $event.preventDefault();
12107        return _vm.load.apply(null, arguments);
12108      }
12109    }
12110  }, [_c("h4", {
12111    staticClass: "commentbtn"
12112  }, [_vm._v("MORE")])]) : _vm._e(), _vm._v(" "), _c("div", {
12113    directives: [{
12114      name: "show",
12115      rawName: "v-show",
12116      value: _vm.showReply,
12117      expression: "showReply"
12118    }],
12119    staticClass: "commentForm"
12120  }, [_c("textarea", {
12121    directives: [{
12122      name: "model",
12123      rawName: "v-model",
12124      value: _vm.content,
12125      expression: "content"
12126    }],
12127    ref: "replyContent",
12128    staticClass: "form-control commentFormControl",
12129    attrs: {
12130      rows: "3"
12131    },
12132    domProps: {
12133      value: _vm.content
12134    },
12135    on: {
12136      input: function input($event) {
12137        if ($event.target.composing) return;
12138        _vm.content = $event.target.value;
12139      }
12140    }
12141  }), _vm._v(" "), _c("button", {
12142    staticClass: "btn btn-dark btnEdit",
12143    attrs: {
12144      type: "button"
12145    },
12146    on: {
12147      click: _vm.create
12148    }
12149  }, [_vm._v("\n            發佈\n        ")])])]);
12150};
12151var staticRenderFns = [];
12152render._withStripped = true;
12153
12154
12155/***/ }),
12156
12157/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ProfileEditModal.vue?vue&type=template&id=1d27ac85&scoped=true":
12158/*!*********************************************************************************************************************************************************************************************************************************************************************************************************!*\
12159  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ProfileEditModal.vue?vue&type=template&id=1d27ac85&scoped=true ***!
12160  \*********************************************************************************************************************************************************************************************************************************************************************************************************/
12161/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
12162
12163"use strict";
12164__webpack_require__.r(__webpack_exports__);
12165/* harmony export */ __webpack_require__.d(__webpack_exports__, {
12166/* harmony export */   render: () => (/* binding */ render),
12167/* harmony export */   staticRenderFns: () => (/* binding */ staticRenderFns)
12168/* harmony export */ });
12169var render = function render() {
12170  var _vm = this,
12171    _c = _vm._self._c;
12172  return _c("div", {
12173    staticClass: "modal fade",
12174    attrs: {
12175      id: "profileEditModal",
12176      tabindex: "-1",
12177      "aria-labelledby": "profileEditModalLabel",
12178      "aria-hidden": "true"
12179    }
12180  }, [_c("div", {
12181    staticClass: "modal-dialog modal-dialog-centered"
12182  }, [_c("div", {
12183    staticClass: "modal-content"
12184  }, [_c("div", {
12185    staticClass: "modal-header"
12186  }, [_c("h5", {
12187    staticClass: "modal-title",
12188    attrs: {
12189      id: "profileEditModalLabel"
12190    }
12191  }, [_vm._v("完善個人資料")]), _vm._v(" "), _c("button", {
12192    staticClass: "close",
12193    attrs: {
12194      type: "button",
12195      "data-dismiss": "modal",
12196      "aria-label": "Close",
12197      id: "profileEditModalClose"
12198    },
12199    on: {
12200      click: _vm.hide
12201    }
12202  }, [_c("span", {
12203    attrs: {
12204      "aria-hidden": "true"
12205    }
12206  }, [_vm._v("×")])])]), _vm._v(" "), _c("div", {
12207    staticClass: "modal-body"
12208  }, [_c("p", {
12209    staticClass: "text-muted mb-3"
12210  }, [_vm._v("\n          請填寫您的聯絡電話和地址資料以確認禮品可以寄送給您,以及優惠券可兌換\n        ")]), _vm._v(" "), _vm.isLoadingUserData ? _c("div", {
12211    staticClass: "text-center py-4"
12212  }, [_vm._m(0), _vm._v(" "), _c("p", {
12213    staticClass: "mt-2 text-muted"
12214  }, [_vm._v("正在載入您的資料...")])]) : _c("form", {
12215    on: {
12216      submit: function submit($event) {
12217        $event.preventDefault();
12218        return _vm.submitForm.apply(null, arguments);
12219      }
12220    }
12221  }, [_c("div", {
12222    staticClass: "mb-3"
12223  }, [_vm._m(1), _vm._v(" "), _c("input", {
12224    directives: [{
12225      name: "model",
12226      rawName: "v-model",
12227      value: _vm.formData.phone,
12228      expression: "formData.phone"
12229    }],
12230    staticClass: "form-control",
12231    attrs: {
12232      type: "tel",
12233      id: "phone",
12234      placeholder: "請輸入您的聯絡電話",
12235      maxlength: "10",
12236      required: ""
12237    },
12238    domProps: {
12239      value: _vm.formData.phone
12240    },
12241    on: {
12242      input: function input($event) {
12243        if ($event.target.composing) return;
12244        _vm.$set(_vm.formData, "phone", $event.target.value);
12245      }
12246    }
12247  }), _vm._v(" "), _vm.errors.phone ? _c("div", {
12248    staticClass: "text-danger small"
12249  }, [_vm._v("\n              " + _vm._s(_vm.errors.phone) + "\n            ")]) : _vm._e()]), _vm._v(" "), _c("div", {
12250    staticClass: "mb-3"
12251  }, [_vm._m(2), _vm._v(" "), _c("select", {
12252    directives: [{
12253      name: "model",
12254      rawName: "v-model",
12255      value: _vm.formData.city_of_residence,
12256      expression: "formData.city_of_residence"
12257    }],
12258    staticClass: "form-select",
12259    attrs: {
12260      id: "city_of_residence",
12261      required: ""
12262    },
12263    on: {
12264      change: function change($event) {
12265        var $$selectedVal = Array.prototype.filter.call($event.target.options, function (o) {
12266          return o.selected;
12267        }).map(function (o) {
12268          var val = "_value" in o ? o._value : o.value;
12269          return val;
12270        });
12271        _vm.$set(_vm.formData, "city_of_residence", $event.target.multiple ? $$selectedVal : $$selectedVal[0]);
12272      }
12273    }
12274  }, [_c("option", {
12275    attrs: {
12276      value: ""
12277    }
12278  }, [_vm._v("請選擇居住地區")]), _vm._v(" "), _vm._l(_vm.cityData, function (city, key) {
12279    return _c("option", {
12280      key: key,
12281      domProps: {
12282        value: key
12283      }
12284    }, [_vm._v("\n                " + _vm._s(city) + "\n              ")]);
12285  })], 2), _vm._v(" "), _vm.errors.city_of_residence ? _c("div", {
12286    staticClass: "text-danger small"
12287  }, [_vm._v("\n              " + _vm._s(_vm.errors.city_of_residence) + "\n            ")]) : _vm._e()]), _vm._v(" "), _c("div", {
12288    staticClass: "mb-3"
12289  }, [_vm._m(3), _vm._v(" "), _c("input", {
12290    directives: [{
12291      name: "model",
12292      rawName: "v-model",
12293      value: _vm.formData.address,
12294      expression: "formData.address"
12295    }],
12296    staticClass: "form-control",
12297    attrs: {
12298      type: "text",
12299      id: "address",
12300      placeholder: "請輸入您的地址",
12301      required: ""
12302    },
12303    domProps: {
12304      value: _vm.formData.address
12305    },
12306    on: {
12307      input: function input($event) {
12308        if ($event.target.composing) return;
12309        _vm.$set(_vm.formData, "address", $event.target.value);
12310      }
12311    }
12312  }), _vm._v(" "), _vm.errors.address ? _c("div", {
12313    staticClass: "text-danger small"
12314  }, [_vm._v("\n              " + _vm._s(_vm.errors.address) + "\n            ")]) : _vm._e()])])]), _vm._v(" "), _c("div", {
12315    staticClass: "modal-footer"
12316  }, [_c("button", {
12317    staticClass: "btn btn-secondary",
12318    attrs: {
12319      type: "button",
12320      "data-dismiss": "modal"
12321    }
12322  }, [_vm._v("\n          取消\n        ")]), _vm._v(" "), _c("button", {
12323    staticClass: "btn btn-primary",
12324    attrs: {
12325      type: "button",
12326      disabled: _vm.isSubmitting
12327    },
12328    on: {
12329      click: _vm.submitForm
12330    }
12331  }, [_vm.isSubmitting ? _c("span", {
12332    staticClass: "spinner-border spinner-border-sm me-2",
12333    attrs: {
12334      role: "status"
12335    }
12336  }) : _vm._e(), _vm._v("\n          " + _vm._s(_vm.isSubmitting ? "更新中..." : "確認更新") + "\n        ")])])])])]);
12337};
12338var staticRenderFns = [function () {
12339  var _vm = this,
12340    _c = _vm._self._c;
12341  return _c("div", {
12342    staticClass: "spinner-border text-primary",
12343    attrs: {
12344      role: "status"
12345    }
12346  }, [_c("span", {
12347    staticClass: "sr-only"
12348  }, [_vm._v("載入中...")])]);
12349}, function () {
12350  var _vm = this,
12351    _c = _vm._self._c;
12352  return _c("label", {
12353    staticClass: "form-label",
12354    attrs: {
12355      "for": "phone"
12356    }
12357  }, [_vm._v("聯絡電話 "), _c("span", {
12358    staticClass: "text-danger"
12359  }, [_vm._v("*")])]);
12360}, function () {
12361  var _vm = this,
12362    _c = _vm._self._c;
12363  return _c("label", {
12364    staticClass: "form-label",
12365    attrs: {
12366      "for": "city_of_residence"
12367    }
12368  }, [_vm._v("居住地區 "), _c("span", {
12369    staticClass: "text-danger"
12370  }, [_vm._v("*")])]);
12371}, function () {
12372  var _vm = this,
12373    _c = _vm._self._c;
12374  return _c("label", {
12375    staticClass: "form-label",
12376    attrs: {
12377      "for": "address"
12378    }
12379  }, [_vm._v("地址 "), _c("span", {
12380    staticClass: "text-danger"
12381  }, [_vm._v("*")])]);
12382}];
12383render._withStripped = true;
12384
12385
12386/***/ }),
12387
12388/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ReportDetailModal.vue?vue&type=template&id=4c0c502d":
12389/*!**********************************************************************************************************************************************************************************************************************************************************************************************!*\
12390  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ReportDetailModal.vue?vue&type=template&id=4c0c502d ***!
12391  \**********************************************************************************************************************************************************************************************************************************************************************************************/
12392/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
12393
12394"use strict";
12395__webpack_require__.r(__webpack_exports__);
12396/* harmony export */ __webpack_require__.d(__webpack_exports__, {
12397/* harmony export */   render: () => (/* binding */ render),
12398/* harmony export */   staticRenderFns: () => (/* binding */ staticRenderFns)
12399/* harmony export */ });
12400var render = function render() {
12401  var _vm = this,
12402    _c = _vm._self._c;
12403  return _c("div", {
12404    ref: "modal",
12405    staticClass: "social-modal-min-full modal p-0 fade",
12406    attrs: {
12407      tabindex: "-1"
12408    }
12409  }, [_c("div", {
12410    staticClass: "modal-dialog modal-dialog-centered modal-block m-tb-0"
12411  }, [_c("div", {
12412    staticClass: "modal-content"
12413  }, [_c("div", {
12414    staticClass: "modal-header bg-dark-gray position-relative"
12415  }, [_c("button", {
12416    staticClass: "btn-social-back",
12417    on: {
12418      click: _vm.hide
12419    }
12420  }, [_c("img", {
12421    attrs: {
12422      src: "/img/back_outline_white.svg",
12423      alt: ""
12424    }
12425  })]), _vm._v(" "), _c("h4", {
12426    staticClass: "modal-title text-center w-100 white"
12427  }, [_vm._v("\n                    詳情瞭解\n                ")])]), _vm._v(" "), _vm.report ? _c("div", {
12428    staticClass: "modal-body bg-dark-gray flex-column p-0"
12429  }, [_c("div", {
12430    staticClass: "social-post-report-declare-block"
12431  }, [_c("div", {
12432    staticClass: "social-post-report-title"
12433  }, [_vm._v("審查結果")]), _vm._v(" "), _vm.report.item ? _c("div", {
12434    staticClass: "social-post-report-content white"
12435  }, [_vm._v("\n                        您的" + _vm._s(_vm.report.item) + "因涉及違反\n                        "), _c("a", {
12436    staticClass: "btn-social-post-report-term",
12437    attrs: {
12438      href: "/service",
12439      target: "_blank"
12440    }
12441  }, [_vm._v('"網站使用條款"')]), _vm._v("\n                        而遭檢舉,經審查後判定" + _vm._s(_vm.report.actions) + "\n                    ")]) : _c("div", {
12442    staticClass: "social-post-report-content white"
12443  }, [_vm._v("\n                        您的帳號因不當檢舉涉及違反\n                        "), _c("a", {
12444    staticClass: "btn-social-post-report-term",
12445    attrs: {
12446      href: "/service",
12447      target: "_blank"
12448    }
12449  }, [_vm._v('"網站使用條款"')]), _vm._v(",經審查後判定" + _vm._s(_vm.report.actions) + "\n                    ")])]), _vm._v(" "), _c("div", {
12450    staticClass: "social-post-report-declare-block"
12451  }, [_c("div", {
12452    staticClass: "social-post-report-title"
12453  }, [_vm._v("管理員訊息")]), _vm._v(" "), _c("div", {
12454    staticClass: "social-post-report-content white"
12455  }, [_vm._v("\n                        " + _vm._s(_vm.report.reason) + "\n                    ")])]), _vm._v(" "), _c("div", {
12456    staticClass: "social-notify-report-content-block"
12457  }, [_c("div", {
12458    staticClass: "social-post-report-title"
12459  }, [_vm._v("\n                        " + _vm._s(_vm.report.item) + "\n                    ")]), _vm._v(" "), _c("a", {
12460    staticClass: "social-post-report-content linkblue",
12461    attrs: {
12462      href: _vm.report.object.url,
12463      target: "_blank"
12464    }
12465  }, [_vm._v("\n                        連結\n                    ")]), _vm._v(" "), _vm.report.type == 1 ? _c("div", {
12466    staticClass: "bg-dark-gray flex-center"
12467  }, [_vm.report.object.medias[0].type === "video" ? _c("div", {
12468    staticClass: "video-social-preview-block social-notify-report-video-block social-notify-report-video flex-center"
12469  }, [_c("video", {
12470    ref: "video",
12471    staticClass: "video-social-preview-sizing object-fit-cover",
12472    attrs: {
12473      controls: "",
12474      playsinline: ""
12475    }
12476  }, [_c("source", {
12477    attrs: {
12478      src: _vm.report.object.medias[0].url
12479    }
12480  }), _vm._v("\n                                Sorry, your browser doesn't support embedded\n                                videos.\n                            ")])]) : _c("div", {
12481    staticClass: "social-notify-report-img-block"
12482  }, [_c("swiper", {
12483    staticClass: "social-notify-report-img social-notify-report-article-img-swiper flex-center swiper",
12484    attrs: {
12485      options: _vm.swiperOption
12486    }
12487  }, [_vm._l(_vm.report.object.medias, function (media, index) {
12488    return _c("swiper-slide", {
12489      key: index
12490    }, [_c("div", {
12491      staticClass: "bg-basic d-block",
12492      style: {
12493        backgroundImage: "url(" + media.url + ")",
12494        width: "100%",
12495        height: "auto",
12496        aspectRatio: _vm.ratio
12497      }
12498    })]);
12499  }), _vm._v(" "), _c("div", {
12500    staticClass: "social-notify-report-article-swiper-pagination"
12501  })], 2)], 1), _vm._v(" "), _vm.report.object.title ? _c("div", {
12502    staticClass: "social-post-title w-100 px-0"
12503  }, [_vm._v("\n                            " + _vm._s(_vm.report.object.title) + "\n                        ")]) : _vm._e(), _vm._v(" "), _vm.report.object.description ? _c("div", {
12504    staticClass: "social-post-content w-100 px-0",
12505    domProps: {
12506      innerHTML: _vm._s(_vm.nl2br(_vm.report.object.description))
12507    }
12508  }) : _vm._e()]) : _vm._e(), _vm._v(" "), _vm.report.type == 2 ? _c("div", {
12509    staticClass: "social-post-report-content white",
12510    domProps: {
12511      innerHTML: _vm._s(_vm.nl2br(_vm.report.object.content))
12512    }
12513  }) : _vm._e(), _vm._v(" "), _vm.report.type == 3 ? _c("div", [_c("img", {
12514    staticClass: "social-post-report-account-user-img",
12515    attrs: {
12516      src: _vm.report.object.profile_image
12517    }
12518  }), _vm._v(" "), _c("div", {
12519    staticClass: "social-post-report-account-user-name"
12520  }, [_vm._v("\n                            " + _vm._s(_vm.report.object.name) + "\n                        ")]), _vm._v(" "), _vm.report.object.introduction ? _c("div", {
12521    staticClass: "social-post-report-account-user-intro"
12522  }, [_vm._v("\n                            " + _vm._s(_vm.report.object.introduction) + "\n                        ")]) : _vm._e(), _vm._v(" "), _c("div", {
12523    staticClass: "social-index-grid social-report-index-grid"
12524  }, _vm._l(_vm.report.object.social_posts, function (socialPost) {
12525    return _c("div", {
12526      key: socialPost.id,
12527      staticClass: "social-index-grid-item social-post-report-grid-item"
12528    }, [_c("SocialPost", {
12529      attrs: {
12530        socialPost: socialPost
12531      }
12532    })], 1);
12533  }), 0)]) : _vm._e()])]) : _vm._e()])])]);
12534};
12535var staticRenderFns = [];
12536render._withStripped = true;
12537
12538
12539/***/ }),
12540
12541/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ReportModal.vue?vue&type=template&id=9bdf8784":
12542/*!****************************************************************************************************************************************************************************************************************************************************************************************!*\
12543  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ReportModal.vue?vue&type=template&id=9bdf8784 ***!
12544  \****************************************************************************************************************************************************************************************************************************************************************************************/
12545/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
12546
12547"use strict";
12548__webpack_require__.r(__webpack_exports__);
12549/* harmony export */ __webpack_require__.d(__webpack_exports__, {
12550/* harmony export */   render: () => (/* binding */ render),
12551/* harmony export */   staticRenderFns: () => (/* binding */ staticRenderFns)
12552/* harmony export */ });
12553var render = function render() {
12554  var _vm = this,
12555    _c = _vm._self._c;
12556  return _c("div", {
12557    ref: "modal",
12558    staticClass: "social-modal-min-full modal p-0 fade",
12559    attrs: {
12560      tabindex: "-1"
12561    }
12562  }, [_c("div", {
12563    staticClass: "modal-dialog modal-dialog-centered modal-block m-tb-0"
12564  }, [_c("div", {
12565    staticClass: "modal-content"
12566  }, [_c("div", {
12567    staticClass: "modal-header bg-dark-gray position-relative"
12568  }, [_c("button", {
12569    staticClass: "btn-social-back",
12570    attrs: {
12571      type: "button"
12572    },
12573    on: {
12574      click: _vm.back
12575    }
12576  }, [_c("img", {
12577    attrs: {
12578      src: "/img/back_outline_white.svg",
12579      alt: ""
12580    }
12581  })]), _vm._v(" "), _c("h4", {
12582    staticClass: "modal-title text-center w-100 white"
12583  }, [_vm._v("\n                    " + _vm._s(_vm.modalTitle) + "\n                ")])]), _vm._v(" "), !_vm.isReported && _vm.step == 0 ? _c("div", {
12584    staticClass: "modal-body bg-dark-gray flex-column p-0"
12585  }, [_c("div", {
12586    staticClass: "social-post-report-declare-block"
12587  }, [_c("div", {
12588    staticClass: "social-post-report-title"
12589  }, [_vm._v("\n                        " + _vm._s(_vm.title) + "\n                    ")]), _vm._v(" "), _c("div", {
12590    staticClass: "social-post-report-content"
12591  }, [_vm._v("\n                        檢舉將以匿名方式辦理(部分特殊情況例外,請參考Togayther社群使用條款)\n                    ")])]), _vm._v(" "), _c("div", {
12592    staticClass: "social-post-report-options-section"
12593  }, [_c("div", {
12594    staticClass: "social-post-report-options-block"
12595  }, [_c("div", {
12596    staticClass: "social-post-report-options",
12597    attrs: {
12598      type: "button"
12599    },
12600    on: {
12601      click: function click($event) {
12602        _vm.step++;
12603      }
12604    }
12605  }, [_c("div", {
12606    staticClass: "social-post-report-title"
12607  }, [_vm._v("\n                                發佈不應該出現在Togayther的內容\n                            ")]), _vm._v(" "), _c("div", {
12608    staticClass: "btn-social-post-report-next"
12609  }, [_vm._v(">")])]), _vm._v(" "), _c("div", {
12610    staticClass: "social-post-report-options",
12611    attrs: {
12612      type: "button"
12613    },
12614    on: {
12615      click: function click($event) {
12616        _vm.step = 3;
12617      }
12618    }
12619  }, [_c("div", {
12620    staticClass: "social-post-report-title"
12621  }, [_vm._v("\n                                假冒他人\n                            ")]), _vm._v(" "), _c("div", {
12622    staticClass: "btn-social-post-report-next"
12623  }, [_vm._v(">")])])]), _vm._v(" "), _c("div", {
12624    staticClass: "social-post-report-last-hr"
12625  })])]) : !_vm.isReported && _vm.step == 1 ? _c("div", {
12626    staticClass: "modal-body bg-dark-gray flex-column p-0"
12627  }, [_c("div", {
12628    staticClass: "social-post-report-declare-block"
12629  }, [_c("div", {
12630    staticClass: "social-post-report-title"
12631  }, [_vm._v("\n                        " + _vm._s(_vm.title) + "\n                    ")]), _vm._v(" "), _c("div", {
12632    staticClass: "social-post-report-content"
12633  }, [_vm._v("\n                        檢舉將以匿名方式辦理(部分特殊情況例外,請參考Togayther社群使用條款)\n                    ")])]), _vm._v(" "), _c("div", {
12634    staticClass: "social-post-report-options-section"
12635  }, [_c("div", {
12636    staticClass: "social-post-report-options-block"
12637  }, _vm._l(_vm.options, function (option, index) {
12638    return _c("div", {
12639      key: index,
12640      staticClass: "social-post-report-options",
12641      on: {
12642        click: function click($event) {
12643          return _vm.selectOption(option);
12644        }
12645      }
12646    }, [_c("div", {
12647      staticClass: "social-post-report-title"
12648    }, [_vm._v("\n                                " + _vm._s(option) + "\n                            ")]), _vm._v(" "), _c("div", {
12649      staticClass: "btn-social-post-report-next"
12650    }, [_vm._v(">")])]);
12651  }), 0), _vm._v(" "), _c("div", {
12652    staticClass: "social-post-report-last-hr"
12653  })])]) : !_vm.isReported && _vm.step == 2 ? _c("div", {
12654    staticClass: "modal-body bg-dark-gray flex-column p-0"
12655  }, [_c("div", {
12656    staticClass: "social-post-report-declare-block",
12657    staticStyle: {
12658      border: "none"
12659    }
12660  }, [_c("div", {
12661    staticClass: "social-post-report-title"
12662  }, [_vm._v(_vm._s(_vm.reason))]), _vm._v(" "), _c("div", {
12663    staticClass: "social-post-report-content"
12664  }, [_vm._v("\n                        請描述您檢舉的原因,以利我們調查並加速審核。\n                    ")])]), _vm._v(" "), _c("div", {
12665    staticClass: "social-post-report-options-section"
12666  }, [_c("div", {
12667    staticClass: "social-post-report-options-block"
12668  }, [_c("textarea", {
12669    directives: [{
12670      name: "model",
12671      rawName: "v-model",
12672      value: _vm.notes,
12673      expression: "notes"
12674    }],
12675    staticClass: "social-post-report-form edit-social-content w-100",
12676    attrs: {
12677      placeholder: "因為.....",
12678      rows: "5"
12679    },
12680    domProps: {
12681      value: _vm.notes
12682    },
12683    on: {
12684      input: function input($event) {
12685        if ($event.target.composing) return;
12686        _vm.notes = $event.target.value;
12687      }
12688    }
12689  })])]), _vm._v(" "), _c("div", {
12690    staticClass: "btn-social-post-report-block"
12691  }, [_c("input", {
12692    "class": {
12693      "btn-social-post-report": true,
12694      "btn-social-post-report-un-fill-in": _vm.notes == "",
12695      "btn-social-post-report-fill-in": _vm.notes != ""
12696    },
12697    attrs: {
12698      type: "button",
12699      disabled: _vm.notes == "",
12700      value: "提交"
12701    },
12702    on: {
12703      click: _vm.report
12704    }
12705  })])]) : !_vm.isReported && _vm.step == 3 ? _c("div", {
12706    staticClass: "modal-body bg-dark-gray flex-column p-0"
12707  }, [_vm._m(0), _vm._v(" "), _c("div", {
12708    staticClass: "social-post-report-options-section"
12709  }, [_c("div", {
12710    staticClass: "social-post-report-options-block"
12711  }, _vm._l(_vm.fakeTypes, function (fakeType, index) {
12712    return _c("div", {
12713      key: index,
12714      staticClass: "social-post-report-options",
12715      on: {
12716        click: function click($event) {
12717          return _vm.selectFakeType(fakeType);
12718        }
12719      }
12720    }, [_c("div", {
12721      staticClass: "social-post-report-title"
12722    }, [_vm._v("\n                                " + _vm._s(fakeType) + "\n                            ")]), _vm._v(" "), _c("div", {
12723      staticClass: "btn-social-post-report-next"
12724    }, [_vm._v(">")])]);
12725  }), 0), _vm._v(" "), _c("div", {
12726    staticClass: "social-post-report-last-hr"
12727  })])]) : !_vm.isReported && _vm.step == 4 ? _c("div", {
12728    staticClass: "modal-body bg-dark-gray flex-column p-0"
12729  }, [_c("div", {
12730    staticClass: "social-post-report-declare-block"
12731  }, [_c("div", {
12732    staticClass: "social-post-report-title"
12733  }, [_vm._v("\n                        這個假冒帳號的對象是誰?\n                    ")]), _vm._v(" "), _c("div", {
12734    staticClass: "social-post-report-content"
12735  }, [_vm._v("\n                        選擇他們假冒的" + _vm._s(_vm.selectedFakeType) + "。\n                    ")]), _vm._v(" "), _c("input", {
12736    directives: [{
12737      name: "model",
12738      rawName: "v-model",
12739      value: _vm.keyword,
12740      expression: "keyword"
12741    }],
12742    staticClass: "social-post-report-user-search w-100",
12743    attrs: {
12744      type: "text",
12745      placeholder: "搜尋"
12746    },
12747    domProps: {
12748      value: _vm.keyword
12749    },
12750    on: {
12751      input: function input($event) {
12752        if ($event.target.composing) return;
12753        _vm.keyword = $event.target.value;
12754      }
12755    }
12756  })]), _vm._v(" "), _c("div", {
12757    staticClass: "social-post-report-options-section"
12758  }, [_c("div", {
12759    staticClass: "social-post-report-options-block"
12760  }, _vm._l(_vm.showReportUsers, function (reportUser) {
12761    return _c("div", {
12762      key: reportUser.id,
12763      staticClass: "social-post-report-options",
12764      on: {
12765        click: function click($event) {
12766          _vm.selectedReportUser = reportUser;
12767        }
12768      }
12769    }, [_c("div", {
12770      staticClass: "social-post-report-user-data d-flex align-items-center"
12771    }, [_c("img", {
12772      staticClass: "social-post-report-user-img",
12773      attrs: {
12774        src: reportUser.profile_image
12775      }
12776    }), _vm._v(" "), _c("div", {
12777      staticClass: "social-post-report-user-name"
12778    }, [_vm._v("\n                                    " + _vm._s(reportUser.name) + "\n                                ")])]), _vm._v(" "), _c("input", {
12779      staticClass: "social-post-report-radio",
12780      attrs: {
12781        type: "radio"
12782      },
12783      domProps: {
12784        checked: _vm.selectedReportUser && _vm.selectedReportUser.id == reportUser.id
12785      }
12786    })]);
12787  }), 0), _vm._v(" "), _c("div", {
12788    staticClass: "social-post-report-last-hr"
12789  })]), _vm._v(" "), _c("div", {
12790    staticClass: "btn-social-post-report-block"
12791  }, [_vm.selectedReportUser ? _c("input", {
12792    staticClass: "btn-social-post-report btn-social-post-report-fill-in",
12793    attrs: {
12794      type: "button",
12795      value: "提交"
12796    },
12797    on: {
12798      click: _vm.report
12799    }
12800  }) : _c("input", {
12801    staticClass: "btn-social-post-report btn-social-post-report-un-fill-in",
12802    attrs: {
12803      type: "button",
12804      value: "提交",
12805      disabled: ""
12806    }
12807  })])]) : _c("div", {
12808    staticClass: "modal-body bg-dark-gray flex-center flex-column text-center py-40px"
12809  }, [_c("img", {
12810    staticClass: "social-modal-complete-img",
12811    attrs: {
12812      src: "/img/complete_outline_white.svg"
12813    }
12814  }), _vm._v(" "), _c("div", {
12815    staticClass: "social-modal-complete-text"
12816  }, [_vm._v("\n                    謝謝我們將會盡快審查\n                ")])])])])]);
12817};
12818var staticRenderFns = [function () {
12819  var _vm = this,
12820    _c = _vm._self._c;
12821  return _c("div", {
12822    staticClass: "social-post-report-declare-block"
12823  }, [_c("div", {
12824    staticClass: "social-post-report-title"
12825  }, [_vm._v("\n                        這個假冒帳號的對象是誰?\n                    ")])]);
12826}];
12827render._withStripped = true;
12828
12829
12830/***/ }),
12831
12832/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialCompleteModal.vue?vue&type=template&id=3235c8ec":
12833/*!************************************************************************************************************************************************************************************************************************************************************************************************!*\
12834  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialCompleteModal.vue?vue&type=template&id=3235c8ec ***!
12835  \************************************************************************************************************************************************************************************************************************************************************************************************/
12836/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
12837
12838"use strict";
12839__webpack_require__.r(__webpack_exports__);
12840/* harmony export */ __webpack_require__.d(__webpack_exports__, {
12841/* harmony export */   render: () => (/* binding */ render),
12842/* harmony export */   staticRenderFns: () => (/* binding */ staticRenderFns)
12843/* harmony export */ });
12844var render = function render() {
12845  var _vm = this,
12846    _c = _vm._self._c;
12847  return _c("div", {
12848    ref: "modal",
12849    staticClass: "social-modal modal fade",
12850    attrs: {
12851      tabindex: "-1"
12852    }
12853  }, [_c("div", {
12854    staticClass: "modal-dialog modal-dialog-centered flex-column justify-content-center"
12855  }, [_c("div", {
12856    staticClass: "modal-content"
12857  }, [_c("div", {
12858    staticClass: "modal-body bg-dark-gray flex-center social-modal-complete"
12859  }, [_vm.isSuccess ? _c("img", {
12860    staticClass: "social-modal-complete-img",
12861    attrs: {
12862      src: "/img/complete_outline_white.svg"
12863    }
12864  }) : _c("img", {
12865    staticClass: "social-modal-complete-img",
12866    attrs: {
12867      src: "/img/error_outline_white.svg"
12868    }
12869  }), _vm._v(" "), _c("div", {
12870    staticClass: "social-modal-complete-text"
12871  }, [_vm._v(_vm._s(_vm.message))])])])])]);
12872};
12873var staticRenderFns = [];
12874render._withStripped = true;
12875
12876
12877/***/ }),
12878
12879/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialConfirmModal.vue?vue&type=template&id=6b7b7885":
12880/*!***********************************************************************************************************************************************************************************************************************************************************************************************!*\
12881  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialConfirmModal.vue?vue&type=template&id=6b7b7885 ***!
12882  \***********************************************************************************************************************************************************************************************************************************************************************************************/
12883/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
12884
12885"use strict";
12886__webpack_require__.r(__webpack_exports__);
12887/* harmony export */ __webpack_require__.d(__webpack_exports__, {
12888/* harmony export */   render: () => (/* binding */ render),
12889/* harmony export */   staticRenderFns: () => (/* binding */ staticRenderFns)
12890/* harmony export */ });
12891var render = function render() {
12892  var _vm = this,
12893    _c = _vm._self._c;
12894  return _c("div", {
12895    ref: "modal",
12896    staticClass: "social-modal modal fade",
12897    attrs: {
12898      tabindex: "-1"
12899    }
12900  }, [_c("div", {
12901    staticClass: "modal-dialog modal-dialog-centered flex-column justify-content-center"
12902  }, [_c("div", {
12903    staticClass: "modal-content"
12904  }, [_c("div", {
12905    staticClass: "modal-body bg-dark-gray flex-center h-auto"
12906  }, [_c("h4", {
12907    staticClass: "modal-title text-center w-100 white"
12908  }, [_vm._v(_vm._s(_vm.title))]), _vm._v(" "), _c("p", {
12909    staticClass: "white text-center"
12910  }, [_vm._v(_vm._s(_vm.description))])]), _vm._v(" "), _c("button", {
12911    staticClass: "btn-social-action-sheets-content w-100 red",
12912    attrs: {
12913      type: "button"
12914    },
12915    on: {
12916      click: _vm.doAction
12917    }
12918  }, [_vm._v("\n        " + _vm._s(_vm.actionText) + "\n      ")])]), _vm._v(" "), _c("div", {
12919    staticClass: "modal-content",
12920    staticStyle: {
12921      "margin-top": "12px"
12922    }
12923  }, [_c("button", {
12924    staticClass: "btn-social-action-sheets-content w-100 w-mb-80vw",
12925    attrs: {
12926      type: "button"
12927    },
12928    on: {
12929      click: _vm.hide
12930    }
12931  }, [_vm._v("\n        取消\n      ")])])])]);
12932};
12933var staticRenderFns = [];
12934render._withStripped = true;
12935
12936
12937/***/ }),
12938
12939/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialContent.vue?vue&type=template&id=49d905f1":
12940/*!******************************************************************************************************************************************************************************************************************************************************************************************!*\
12941  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialContent.vue?vue&type=template&id=49d905f1 ***!
12942  \******************************************************************************************************************************************************************************************************************************************************************************************/
12943/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
12944
12945"use strict";
12946__webpack_require__.r(__webpack_exports__);
12947/* harmony export */ __webpack_require__.d(__webpack_exports__, {
12948/* harmony export */   render: () => (/* binding */ render),
12949/* harmony export */   staticRenderFns: () => (/* binding */ staticRenderFns)
12950/* harmony export */ });
12951var render = function render() {
12952  var _vm = this,
12953    _c = _vm._self._c;
12954  return _c(_vm.transformed, {
12955    tag: "component"
12956  });
12957};
12958var staticRenderFns = [];
12959render._withStripped = true;
12960
12961
12962/***/ }),
12963
12964/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialContentInput.vue?vue&type=template&id=d28fdcee":
12965/*!***********************************************************************************************************************************************************************************************************************************************************************************************!*\
12966  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialContentInput.vue?vue&type=template&id=d28fdcee ***!
12967  \***********************************************************************************************************************************************************************************************************************************************************************************************/
12968/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
12969
12970"use strict";
12971__webpack_require__.r(__webpack_exports__);
12972/* harmony export */ __webpack_require__.d(__webpack_exports__, {
12973/* harmony export */   render: () => (/* binding */ render),
12974/* harmony export */   staticRenderFns: () => (/* binding */ staticRenderFns)
12975/* harmony export */ });
12976var render = function render() {
12977  var _vm = this,
12978    _c = _vm._self._c;
12979  return this.multiple ? _c("textarea", {
12980    directives: [{
12981      name: "model",
12982      rawName: "v-model",
12983      value: _vm.content,
12984      expression: "content"
12985    }],
12986    ref: "content",
12987    domProps: {
12988      value: _vm.content
12989    },
12990    on: {
12991      input: function input($event) {
12992        if ($event.target.composing) return;
12993        _vm.content = $event.target.value;
12994      }
12995    }
12996  }) : _c("input", {
12997    directives: [{
12998      name: "model",
12999      rawName: "v-model",
13000      value: _vm.content,
13001      expression: "content"
13002    }],
13003    ref: "content",
13004    domProps: {
13005      value: _vm.content
13006    },
13007    on: {
13008      input: function input($event) {
13009        if ($event.target.composing) return;
13010        _vm.content = $event.target.value;
13011      }
13012    }
13013  });
13014};
13015var staticRenderFns = [];
13016render._withStripped = true;
13017
13018
13019/***/ }),
13020
13021/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialControlModal.vue?vue&type=template&id=08ed1a88":
13022/*!***********************************************************************************************************************************************************************************************************************************************************************************************!*\
13023  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialControlModal.vue?vue&type=template&id=08ed1a88 ***!
13024  \***********************************************************************************************************************************************************************************************************************************************************************************************/
13025/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
13026
13027"use strict";
13028__webpack_require__.r(__webpack_exports__);
13029/* harmony export */ __webpack_require__.d(__webpack_exports__, {
13030/* harmony export */   render: () => (/* binding */ render),
13031/* harmony export */   staticRenderFns: () => (/* binding */ staticRenderFns)
13032/* harmony export */ });
13033var render = function render() {
13034  var _vm = this,
13035    _c = _vm._self._c;
13036  return _c("div", {
13037    ref: "modal",
13038    staticClass: "social-modal modal fade",
13039    attrs: {
13040      tabindex: "-1"
13041    }
13042  }, [_c("div", {
13043    staticClass: "modal-dialog modal-dialog-centered flex-column justify-content-center"
13044  }, [_c("div", {
13045    staticClass: "modal-content"
13046  }, [_vm.title ? _c("div", {
13047    staticClass: "modal-body bg-dark-gray flex-center"
13048  }, [_c("h4", {
13049    staticClass: "modal-title text-center w-100 white"
13050  }, [_vm._v("\n          " + _vm._s(_vm.title) + "\n        ")]), _vm._v(" "), _vm.description ? _c("p", {
13051    staticClass: "white text-center"
13052  }, [_vm._v("\n          " + _vm._s(_vm.description) + "\n        ")]) : _vm._e()]) : _vm._e(), _vm._v(" "), _vm._l(_vm.controls, function (control, index) {
13053    return _c("button", {
13054      key: index,
13055      "class": "btn-social-action-sheets-content w-100 " + (control.danger ? "red" : ""),
13056      attrs: {
13057        type: "button"
13058      },
13059      on: {
13060        click: function click($event) {
13061          return _vm.doAction(control.action);
13062        }
13063      }
13064    }, [_vm._v("\n        " + _vm._s(control.text) + "\n      ")]);
13065  })], 2), _vm._v(" "), _c("div", {
13066    staticClass: "modal-content",
13067    staticStyle: {
13068      "margin-top": "12px"
13069    }
13070  }, [_c("button", {
13071    staticClass: "btn-social-action-sheets-content w-100 w-mb-80vw",
13072    attrs: {
13073      type: "button"
13074    },
13075    on: {
13076      click: _vm.hide
13077    }
13078  }, [_vm._v("\n        取消\n      ")])])])]);
13079};
13080var staticRenderFns = [];
13081render._withStripped = true;
13082
13083
13084/***/ }),
13085
13086/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialFileInput.vue?vue&type=template&id=6e6352b4":
13087/*!********************************************************************************************************************************************************************************************************************************************************************************************!*\
13088  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialFileInput.vue?vue&type=template&id=6e6352b4 ***!
13089  \********************************************************************************************************************************************************************************************************************************************************************************************/
13090/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
13091
13092"use strict";
13093__webpack_require__.r(__webpack_exports__);
13094/* harmony export */ __webpack_require__.d(__webpack_exports__, {
13095/* harmony export */   render: () => (/* binding */ render),
13096/* harmony export */   staticRenderFns: () => (/* binding */ staticRenderFns)
13097/* harmony export */ });
13098var render = function render() {
13099  var _vm = this,
13100    _c = _vm._self._c;
13101  return _c("input", {
13102    ref: "input",
13103    attrs: {
13104      type: "file",
13105      accept: _vm.fileTypes
13106    },
13107    on: {
13108      input: _vm.pickFile
13109    }
13110  });
13111};
13112var staticRenderFns = [];
13113render._withStripped = true;
13114
13115
13116/***/ }),
13117
13118/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialFirstModal.vue?vue&type=template&id=f244bad6":
13119/*!*********************************************************************************************************************************************************************************************************************************************************************************************!*\
13120  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialFirstModal.vue?vue&type=template&id=f244bad6 ***!
13121  \*********************************************************************************************************************************************************************************************************************************************************************************************/
13122/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
13123
13124"use strict";
13125__webpack_require__.r(__webpack_exports__);
13126/* harmony export */ __webpack_require__.d(__webpack_exports__, {
13127/* harmony export */   render: () => (/* binding */ render),
13128/* harmony export */   staticRenderFns: () => (/* binding */ staticRenderFns)
13129/* harmony export */ });
13130var render = function render() {
13131  var _vm = this,
13132    _c = _vm._self._c;
13133  return _c("div", {
13134    ref: "modal",
13135    staticClass: "social-modal-min-full modal p-0 fade",
13136    attrs: {
13137      tabindex: "-1"
13138    }
13139  }, [_c("div", {
13140    staticClass: "modal-dialog modal-dialog-centered modal-block m-tb-0"
13141  }, [_c("div", {
13142    staticClass: "modal-content"
13143  }, [_vm._m(0), _vm._v(" "), _c("div", {
13144    staticClass: "modal-body bg-dark-gray flex-column p-0"
13145  }, [_c("div", {
13146    staticClass: "social-post-report-declare-block social-message-search-block"
13147  }, [_c("div", {
13148    staticClass: "social-post-report-title"
13149  }, [_vm._v("設定用戶名稱")]), _vm._v(" "), _vm._m(1), _vm._v(" "), _c("input", {
13150    directives: [{
13151      name: "model",
13152      rawName: "v-model",
13153      value: _vm.aliasName,
13154      expression: "aliasName"
13155    }],
13156    staticClass: "social-post-report-user-search w-100",
13157    attrs: {
13158      type: "text",
13159      placeholder: "用戶名稱"
13160    },
13161    domProps: {
13162      value: _vm.aliasName
13163    },
13164    on: {
13165      input: function input($event) {
13166        if ($event.target.composing) return;
13167        _vm.aliasName = $event.target.value;
13168      }
13169    }
13170  }), _vm._v(" "), _vm.isAliasNameUsed ? _c("div", {
13171    staticClass: "red mt-8px fz-14"
13172  }, [_vm._v("\n            此用戶名稱已被使用\n          ")]) : _vm._e(), _vm._v(" "), _vm.isAliasNameInvalid ? _c("div", {
13173    staticClass: "red mt-8px fz-14"
13174  }, [_vm._v('\n            用戶名稱只限定"英文小寫"、"數字"、"底線"、"英文句點"\n          ')]) : _vm._e()]), _vm._v(" "), _c("div", {
13175    staticClass: "btn-social-post-report-block"
13176  }, [_c("input", {
13177    "class": {
13178      "btn-social-post-report": true,
13179      "btn-social-post-report-un-fill-in": !_vm.canSubmit,
13180      "btn-social-post-report-fill-in": _vm.canSubmit
13181    },
13182    attrs: {
13183      type: "button",
13184      disabled: !_vm.canSubmit,
13185      value: "確認"
13186    },
13187    on: {
13188      click: _vm.submit
13189    }
13190  })])])])])]);
13191};
13192var staticRenderFns = [function () {
13193  var _vm = this,
13194    _c = _vm._self._c;
13195  return _c("div", {
13196    staticClass: "modal-header bg-dark-gray position-relative"
13197  }, [_c("h4", {
13198    staticClass: "modal-title text-center w-100 white"
13199  }, [_vm._v("\n          歡迎使用 Togayther官方社群平台\n        ")])]);
13200}, function () {
13201  var _vm = this,
13202    _c = _vm._self._c;
13203  return _c("div", {
13204    staticClass: "social-post-report-content"
13205  }, [_vm._v("\n            請輸入您的用戶名稱,後續則"), _c("span", {
13206    staticClass: "red"
13207  }, [_vm._v("不可")]), _vm._v("進行更改\n          ")]);
13208}];
13209render._withStripped = true;
13210
13211
13212/***/ }),
13213
13214/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialMessagePage.vue?vue&type=template&id=0578f62e":
13215/*!**********************************************************************************************************************************************************************************************************************************************************************************************!*\
13216  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialMessagePage.vue?vue&type=template&id=0578f62e ***!
13217  \**********************************************************************************************************************************************************************************************************************************************************************************************/
13218/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
13219
13220"use strict";
13221__webpack_require__.r(__webpack_exports__);
13222/* harmony export */ __webpack_require__.d(__webpack_exports__, {
13223/* harmony export */   render: () => (/* binding */ render),
13224/* harmony export */   staticRenderFns: () => (/* binding */ staticRenderFns)
13225/* harmony export */ });
13226var render = function render() {
13227  var _vm = this,
13228    _c = _vm._self._c;
13229  return _c("div", [_c("div", {
13230    attrs: {
13231      id: "social-message"
13232    }
13233  }, [_c("div", {
13234    staticClass: "social-post-om-block mt-24px m-tb-0"
13235  }, [_c("div", {
13236    staticClass: "d-flex mx-0"
13237  }, [_c("div", {
13238    staticClass: "social-post-om-header bg-dark-gray position-relative d-inline-flex align-items-center social-message-header"
13239  }, [_c("button", {
13240    staticClass: "btn-social-back",
13241    on: {
13242      click: _vm.back
13243    }
13244  }, [_c("img", {
13245    attrs: {
13246      src: "/img/back_outline_white.svg",
13247      alt: ""
13248    }
13249  })]), _vm._v(" "), _c("h4", {
13250    staticClass: "social-post-om-title text-center w-100 white mx-32px"
13251  }, [_vm._v("\n                        聊天室\n                    ")]), _vm._v(" "), _c("div", {
13252    staticClass: "btn social-post-more social-personal-page-more",
13253    attrs: {
13254      type: "button"
13255    },
13256    on: {
13257      click: _vm.newMessage
13258    }
13259  }, [_c("img", {
13260    staticClass: "social-message-edit",
13261    attrs: {
13262      src: "/img/message_edit_outline_white.svg"
13263    }
13264  })])]), _vm._v(" "), _c("div", {
13265    staticClass: "social-post-om-header bg-dark-gray position-relative d-tb-inline-flex d-none align-items-center social-message-chat-header"
13266  }, [_c("h4", {
13267    staticClass: "social-post-om-title text-center w-100 white mx-32px"
13268  }, [_vm._v("\n                        " + _vm._s(_vm.chatRoomSetting ? "詳情" : _vm.chatRoom ? _vm.chatRoom.chat_with.name : "") + "\n                    ")]), _vm._v(" "), _vm.chatRoomSetting ? _c("div", {
13269    staticClass: "btn social-post-more social-personal-page-more",
13270    on: {
13271      click: _vm.closeChatRoomSetting
13272    }
13273  }, [_c("img", {
13274    staticClass: "w-20px",
13275    attrs: {
13276      src: "/img/close_outline_white.svg"
13277    }
13278  })]) : _vm.chatRoom ? _c("div", {
13279    staticClass: "btn social-post-more social-personal-page-more",
13280    on: {
13281      click: function click($event) {
13282        return _vm.openChatRoomSetting(_vm.chatRoom);
13283      }
13284    }
13285  }, [_vm._v("\n                        ...\n                    ")]) : _vm._e()]), _vm._v(" "), _vm.chatRoom && !_vm.chatRoomSetting ? _c("div", {
13286    staticClass: "social-post-om-header bg-dark-gray position-absolute d-tb-none d-inline-flex align-items-center social-message-chat-header w-100 t-0"
13287  }, [_c("button", {
13288    staticClass: "btn-social-back d-tb-none d-block",
13289    attrs: {
13290      type: "button"
13291    },
13292    on: {
13293      click: _vm.leaveChatRoom
13294    }
13295  }, [_c("img", {
13296    attrs: {
13297      src: "/img/back_outline_white.svg",
13298      alt: ""
13299    }
13300  })]), _vm._v(" "), _c("h4", {
13301    staticClass: "social-post-om-title text-center w-100 white mx-32px"
13302  }, [_vm._v("\n                        " + _vm._s(_vm.chatRoom.chat_with.name) + "\n                    ")]), _vm._v(" "), _c("div", {
13303    staticClass: "btn social-post-more social-personal-page-more",
13304    on: {
13305      click: function click($event) {
13306        return _vm.openChatRoomSetting(_vm.chatRoom);
13307      }
13308    }
13309  }, [_vm._v("\n                        ...\n                    ")])]) : _vm._e(), _vm._v(" "), _vm.chatRoomSetting ? _c("div", {
13310    staticClass: "social-post-om-header bg-dark-gray position-absolute d-tb-none d-inline-flex align-items-center social-message-chat-header w-100 t-0"
13311  }, [_c("button", {
13312    staticClass: "btn-social-back d-tb-none d-block",
13313    attrs: {
13314      type: "button"
13315    },
13316    on: {
13317      click: _vm.closeChatRoomSetting
13318    }
13319  }, [_c("img", {
13320    attrs: {
13321      src: "/img/back_outline_white.svg",
13322      alt: ""
13323    }
13324  })]), _vm._v(" "), _c("h4", {
13325    staticClass: "social-post-om-title text-center w-100 white mx-32px"
13326  }, [_vm._v("\n                        詳情\n                    ")])]) : _vm._e()])]), _vm._v(" "), _c("div", {
13327    staticClass: "social-post-om-block social-post-om-body bg-dark-gray flex-xl-row flex-1100-row flex-column"
13328  }, [_c("div", {
13329    staticClass: "d-flex mx-0 h-100"
13330  }, [_c("ChatRoomList", {
13331    ref: "chatRoomList",
13332    on: {
13333      select: _vm.selectChatRoom,
13334      set: _vm.openChatRoomSetting
13335    }
13336  }), _vm._v(" "), !_vm.chatRoom && !_vm.chatRoomSetting ? _c("div", {
13337    staticClass: "social-message-chat-block bg-dark-gray flex-center white d-tb-inline-flex d-none"
13338  }, [_c("img", {
13339    staticClass: "mb-16px social-no-message",
13340    attrs: {
13341      src: "/img/no_message_outline_white.svg"
13342    }
13343  }), _vm._v(" "), _c("div", {
13344    staticClass: "social-post-error-title"
13345  }, [_vm._v("你的訊息")]), _vm._v(" "), _c("div", {
13346    staticClass: "social-post-error-text"
13347  }, [_vm._v("\n                        私下傳送相片、影片和訊息給朋友。\n                    ")]), _vm._v(" "), _c("div", {
13348    staticClass: "btn-social-post-error",
13349    attrs: {
13350      type: "button"
13351    },
13352    on: {
13353      click: _vm.newMessage
13354    }
13355  }, [_vm._v("\n                        發送訊息\n                    ")])]) : _vm._e(), _vm._v(" "), _vm.chatRoom ? _c("ChatRoom", {
13356    directives: [{
13357      name: "show",
13358      rawName: "v-show",
13359      value: _vm.chatRoomSetting == null,
13360      expression: "chatRoomSetting == null"
13361    }],
13362    key: _vm.chatRoom.id,
13363    ref: "chatRoom",
13364    attrs: {
13365      chatRoom: _vm.chatRoom
13366    }
13367  }) : _vm._e(), _vm._v(" "), _vm.chatRoomSetting ? _c("ChatRoomSetting", {
13368    key: _vm.chatRoomSetting.id,
13369    attrs: {
13370      chatRoom: _vm.chatRoomSetting
13371    }
13372  }) : _vm._e()], 1)])]), _vm._v(" "), _c("ChatZoominModal", {
13373    ref: "chatZoominModal"
13374  }), _vm._v(" "), _c("ChatSelectUserModal", {
13375    ref: "newMessageModal",
13376    attrs: {
13377      title: "新訊息",
13378      textRequired: true
13379    },
13380    on: {
13381      submit: _vm.sendMessage
13382    }
13383  }), _vm._v(" "), _c("ChatSelectUserModal", {
13384    ref: "shareModal",
13385    attrs: {
13386      title: "分享",
13387      textRequired: false
13388    },
13389    on: {
13390      submit: _vm.shareMessage
13391    }
13392  }), _vm._v(" "), _c("ReportModal", {
13393    ref: "reportModal",
13394    attrs: {
13395      title: "您檢舉本帳號的原因為何?",
13396      type: "3"
13397    }
13398  }), _vm._v(" "), _c("SocialUpload", {
13399    ref: "socialUpload",
13400    attrs: {
13401      videoLength: "30",
13402      videoSize: "100",
13403      imageSize: "10"
13404    },
13405    on: {
13406      pick: _vm.pickFile
13407    }
13408  }), _vm._v(" "), _c("SocialConfirmModal", {
13409    ref: "destroyConfirmModal",
13410    attrs: {
13411      title: "確定要刪除聊天室嗎?",
13412      description: "刪除後聊天紀錄將無法復原",
13413      actionText: "刪除"
13414    },
13415    on: {
13416      action: _vm.destroyChatRoom
13417    }
13418  })], 1);
13419};
13420var staticRenderFns = [];
13421render._withStripped = true;
13422
13423
13424/***/ }),
13425
13426/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialNavbar.vue?vue&type=template&id=06f35748":
13427/*!*****************************************************************************************************************************************************************************************************************************************************************************************!*\
13428  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialNavbar.vue?vue&type=template&id=06f35748 ***!
13429  \*****************************************************************************************************************************************************************************************************************************************************************************************/
13430/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
13431
13432"use strict";
13433__webpack_require__.r(__webpack_exports__);
13434/* harmony export */ __webpack_require__.d(__webpack_exports__, {
13435/* harmony export */   render: () => (/* binding */ render),
13436/* harmony export */   staticRenderFns: () => (/* binding */ staticRenderFns)
13437/* harmony export */ });
13438var render = function render() {
13439  var _vm = this,
13440    _c = _vm._self._c;
13441  return _c("div", [_c("div", {
13442    staticClass: "bg-gray",
13443    attrs: {
13444      id: "navbar"
13445    }
13446  }, [_c("div", {
13447    staticClass: "container navbarcontainer"
13448  }, [_c("div", {
13449    staticClass: "row"
13450  }, [_vm._m(0), _vm._v(" "), _c("div", {
13451    staticClass: "col-md-6 col-5 iconBlock d-flex align-items-center"
13452  }, [_c("a", {
13453    staticClass: "mr-xl-4 mr-2",
13454    attrs: {
13455      href: "/"
13456    },
13457    on: {
13458      mouseover: function mouseover($event) {
13459        _vm.backIconHover = true;
13460      },
13461      mouseleave: function mouseleave($event) {
13462        _vm.backIconHover = false;
13463      }
13464    }
13465  }, [_c("img", {
13466    attrs: {
13467      id: "navbar-back-to-media-btn",
13468      src: "/img/navbar/" + (_vm.backIconHover ? "back_to_media_fill_white.svg" : "back_to_media_outline_white.svg")
13469    }
13470  })]), _vm._v(" "), _c("a", {
13471    staticClass: "mr-xl-4 mr-2 d-none d-lg-block",
13472    attrs: {
13473      href: "/social"
13474    },
13475    on: {
13476      mouseover: function mouseover($event) {
13477        _vm.homeIconHover = true;
13478      },
13479      mouseleave: function mouseleave($event) {
13480        return _vm.iconLeave("homeIconHover");
13481      }
13482    }
13483  }, [_c("img", {
13484    attrs: {
13485      src: "/img/navbar/" + (_vm.homeIconHover ? "home_fill_white.svg" : "home_outline_white.svg")
13486    }
13487  })]), _vm._v(" "), _c("a", {
13488    staticClass: "mr-xl-4 mr-2 d-none d-lg-block",
13489    attrs: {
13490      href: "#"
13491    },
13492    on: {
13493      click: function click($event) {
13494        $event.preventDefault();
13495        return _vm.$root.$refs.socialSearchModal.show();
13496      },
13497      mouseover: function mouseover($event) {
13498        _vm.searchIconHover = true;
13499      },
13500      mouseleave: function mouseleave($event) {
13501        return _vm.iconLeave("searchIconHover");
13502      }
13503    }
13504  }, [_c("img", {
13505    attrs: {
13506      src: "/img/navbar/" + (_vm.searchIconHover ? "search_fill_white.svg" : "search_outline_white.svg")
13507    }
13508  })]), _vm._v(" "), _vm.user && _vm.user.hasOwnProperty("alias_name") ? _c("a", {
13509    staticClass: "mr-xl-4 mr-2 position-relative",
13510    attrs: {
13511      href: "#"
13512    },
13513    on: {
13514      click: function click($event) {
13515        $event.preventDefault();
13516        return _vm.toMessagePage.apply(null, arguments);
13517      },
13518      mouseover: function mouseover($event) {
13519        _vm.messageIconHover = true;
13520      },
13521      mouseleave: function mouseleave($event) {
13522        return _vm.iconLeave("messageIconHover");
13523      }
13524    }
13525  }, [_vm.message_count > 0 && _vm.message_count <= 9 ? _c("div", {
13526    staticClass: "social-notify-count social-message-count"
13527  }, [_vm._v("\n                            " + _vm._s(_vm.message_count) + "\n                        ")]) : _vm._e(), _vm._v(" "), _vm.message_count > 9 ? _c("div", {
13528    staticClass: "social-notify-count social-notify-more social-message-count social-message-count-more"
13529  }, [_vm._v("\n                            " + _vm._s(_vm.message_count) + "+\n                        ")]) : _vm._e(), _vm._v(" "), _c("img", {
13530    attrs: {
13531      src: "/img/navbar/" + (_vm.messageIconHover ? "message_fill_white.svg" : "message_outline_white.svg")
13532    }
13533  })]) : _vm._e(), _vm._v(" "), _vm.user && _vm.user.hasOwnProperty("alias_name") ? _c("a", {
13534    staticClass: "mr-xl-4 mr-2 d-none d-lg-block",
13535    attrs: {
13536      href: "#"
13537    },
13538    on: {
13539      click: function click($event) {
13540        $event.preventDefault();
13541        return _vm.$root.$refs.socialPostEditModal.show();
13542      },
13543      mouseover: function mouseover($event) {
13544        _vm.postIconHover = true;
13545      },
13546      mouseleave: function mouseleave($event) {
13547        return _vm.iconLeave("postIconHover");
13548      }
13549    }
13550  }, [_c("img", {
13551    attrs: {
13552      src: "/img/navbar/" + (_vm.postIconHover ? "post_fill_white.svg" : "post_outline_white.svg")
13553    }
13554  })]) : _vm._e(), _vm._v(" "), _c("a", {
13555    staticClass: "mr-xl-4 mr-2 d-none d-lg-block position-relative",
13556    attrs: {
13557      href: "#"
13558    },
13559    on: {
13560      click: function click($event) {
13561        $event.preventDefault();
13562        return _vm.showNotifications.apply(null, arguments);
13563      },
13564      mouseover: function mouseover($event) {
13565        _vm.notifyIconHover = true;
13566      },
13567      mouseleave: function mouseleave($event) {
13568        return _vm.iconLeave("notifyIconHover");
13569      }
13570    }
13571  }, [_vm.unreadCount > 0 && _vm.unreadCount <= 9 ? _c("div", {
13572    staticClass: "social-notify-count"
13573  }, [_vm._v("\n                            " + _vm._s(_vm.unreadCount) + "\n                        ")]) : _vm._e(), _vm._v(" "), _vm.unreadCount > 9 ? _c("div", {
13574    staticClass: "social-notify-count social-notify-more"
13575  }, [_vm._v("\n                            " + _vm._s(_vm.unreadCount) + "+\n                        ")]) : _vm._e(), _vm._v(" "), _c("img", {
13576    attrs: {
13577      src: "/img/navbar/" + (_vm.notifyIconHover ? "notify_fill_white.svg" : "notify_outline_white.svg")
13578    }
13579  })]), _vm._v(" "), _vm.user && _vm.user.hasOwnProperty("alias_name") ? _c("router-link", {
13580    staticClass: "memberlogin d-none d-lg-block",
13581    attrs: {
13582      to: {
13583        name: "socialUser",
13584        params: {
13585          name: _vm.user.alias_name
13586        }
13587      }
13588    }
13589  }, [_c("img", {
13590    attrs: {
13591      src: _vm.user.profile_image
13592    }
13593  })]) : _c("a", {
13594    attrs: {
13595      href: "/login"
13596    }
13597  }, [_c("p", {
13598    staticClass: "btn btn-sm btn-secondary mt-3"
13599  }, [_vm._v("登入")])])], 1)])])]), _vm._v(" "), _c("div", {
13600    staticClass: "bg-gray d-flex d-lg-none align-items-center position-fixed w-100 bottom-0",
13601    attrs: {
13602      id: "navbar-lg-social"
13603    }
13604  }, [_c("div", {
13605    staticClass: "navbar-lg-icon d-flex justify-content-center"
13606  }, [_c("a", {
13607    attrs: {
13608      href: "/social"
13609    },
13610    on: {
13611      mouseover: function mouseover($event) {
13612        _vm.homeIconHover = true;
13613      },
13614      mouseleave: function mouseleave($event) {
13615        return _vm.iconLeave("homeIconHover");
13616      }
13617    }
13618  }, [_c("img", {
13619    staticClass: "icon",
13620    attrs: {
13621      src: "/img/navbar/" + (_vm.homeIconHover ? "home_fill_white.svg" : "home_outline_white.svg")
13622    }
13623  })])]), _vm._v(" "), _c("div", {
13624    staticClass: "navbar-lg-icon d-flex justify-content-center"
13625  }, [_c("a", {
13626    attrs: {
13627      href: "#"
13628    },
13629    on: {
13630      mouseover: function mouseover($event) {
13631        _vm.searchIconHover = true;
13632      },
13633      mouseleave: function mouseleave($event) {
13634        return _vm.iconLeave("searchIconHover");
13635      },
13636      click: function click($event) {
13637        $event.preventDefault();
13638        return _vm.$root.$refs.socialSearchModal.show();
13639      }
13640    }
13641  }, [_c("img", {
13642    staticClass: "icon",
13643    attrs: {
13644      src: "/img/navbar/" + (_vm.searchIconHover ? "search_fill_white.svg" : "search_outline_white.svg")
13645    }
13646  })])]), _vm._v(" "), _vm.user && _vm.user.hasOwnProperty("alias_name") ? _c("div", {
13647    staticClass: "navbar-lg-icon h-40px d-flex justify-content-center align-items-end"
13648  }, [_c("a", {
13649    attrs: {
13650      href: "#"
13651    },
13652    on: {
13653      mouseover: function mouseover($event) {
13654        _vm.postIconHover = true;
13655      },
13656      mouseleave: function mouseleave($event) {
13657        return _vm.iconLeave("postIconHover");
13658      },
13659      click: function click($event) {
13660        $event.preventDefault();
13661        return _vm.$root.$refs.socialPostEditModal.show();
13662      }
13663    }
13664  }, [_c("img", {
13665    staticClass: "h-60px icon",
13666    attrs: {
13667      src: "/img/navbar/post_fill_white.svg"
13668    }
13669  })])]) : _vm._e(), _vm._v(" "), _vm.user && _vm.user.hasOwnProperty("alias_name") ? _c("div", {
13670    staticClass: "navbar-lg-icon d-flex justify-content-center"
13671  }, [_c("a", {
13672    staticClass: "position-relative",
13673    attrs: {
13674      href: "#"
13675    },
13676    on: {
13677      mouseover: function mouseover($event) {
13678        _vm.notifyIconHover = true;
13679      },
13680      mouseleave: function mouseleave($event) {
13681        return _vm.iconLeave("notifyIconHover");
13682      },
13683      click: function click($event) {
13684        $event.preventDefault();
13685        return _vm.showNotifications.apply(null, arguments);
13686      }
13687    }
13688  }, [_vm.unreadCount > 0 && _vm.unreadCount <= 9 ? _c("div", {
13689    staticClass: "social-notify-count"
13690  }, [_vm._v("\n                    " + _vm._s(_vm.unreadCount) + "\n                ")]) : _vm._e(), _vm._v(" "), _vm.unreadCount > 9 ? _c("div", {
13691    staticClass: "social-notify-count social-notify-more"
13692  }, [_vm._v("\n                    " + _vm._s(_vm.unreadCount) + "+\n                ")]) : _vm._e(), _vm._v(" "), _c("img", {
13693    staticClass: "icon",
13694    attrs: {
13695      src: "/img/navbar/" + (_vm.notifyIconHover ? "notify_fill_white.svg" : "notify_outline_white.svg")
13696    }
13697  })])]) : _vm._e(), _vm._v(" "), _c("div", {
13698    staticClass: "navbar-lg-icon d-flex justify-content-center"
13699  }, [_c("router-link", {
13700    staticClass: "member memberlogin",
13701    attrs: {
13702      to: {
13703        name: "socialUser",
13704        params: {
13705          name: _vm.user.alias_name
13706        }
13707      }
13708    }
13709  }, [_c("img", {
13710    staticClass: "h-25px",
13711    attrs: {
13712      src: _vm.user.profile_image
13713    }
13714  })])], 1)])]);
13715};
13716var staticRenderFns = [function () {
13717  var _vm = this,
13718    _c = _vm._self._c;
13719  return _c("div", {
13720    staticClass: "col-md-6 col-7 d-flex align-items-center"
13721  }, [_c("div", {
13722    staticClass: "ml-mb-0",
13723    attrs: {
13724      id: "navbarBrandLogo"
13725    }
13726  }, [_c("a", {
13727    attrs: {
13728      href: "/social"
13729    }
13730  }, [_c("img", {
13731    attrs: {
13732      src: "/img/logo_social_test_white.svg"
13733    }
13734  })])])]);
13735}];
13736render._withStripped = true;
13737
13738
13739/***/ }),
13740
13741/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialNotification.vue?vue&type=template&id=12bbe6a3":
13742/*!***********************************************************************************************************************************************************************************************************************************************************************************************!*\
13743  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialNotification.vue?vue&type=template&id=12bbe6a3 ***!
13744  \***********************************************************************************************************************************************************************************************************************************************************************************************/
13745/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
13746
13747"use strict";
13748__webpack_require__.r(__webpack_exports__);
13749/* harmony export */ __webpack_require__.d(__webpack_exports__, {
13750/* harmony export */   render: () => (/* binding */ render),
13751/* harmony export */   staticRenderFns: () => (/* binding */ staticRenderFns)
13752/* harmony export */ });
13753var render = function render() {
13754  var _vm = this,
13755    _c = _vm._self._c;
13756  return _vm.notification.has_report ? _c("div", {
13757    staticClass: "social-notify-list"
13758  }, [_c("img", {
13759    staticClass: "social-index-user-img",
13760    attrs: {
13761      src: "/img/notify_report_full_white.svg"
13762    }
13763  }), _vm._v(" "), _c("div", {
13764    staticClass: "social-notify-content"
13765  }, [_c("div", {
13766    staticClass: "social-notify-text-block"
13767  }, [_c("div", {
13768    staticClass: "social-notify-text"
13769  }, [_vm._v("\n                " + _vm._s(_vm.notification.message) + "\n            ")]), _vm._v(" "), _c("div", {
13770    staticClass: "social-notify-time"
13771  }, [_c("TimeFormat", {
13772    attrs: {
13773      time: _vm.notification.created_at
13774    }
13775  })], 1)]), _vm._v(" "), _vm.notification.has_report ? _c("div", {
13776    staticClass: "btn social-post-unfollow btn-social-release position-relative social-notify-button",
13777    attrs: {
13778      type: "button"
13779    },
13780    on: {
13781      click: _vm.showReportInfo
13782    }
13783  }, [_vm._v("\n            詳情瞭解\n        ")]) : _vm._e()])]) : _c("a", {
13784    staticClass: "social-notify-list",
13785    attrs: {
13786      href: "#"
13787    },
13788    on: {
13789      click: function click($event) {
13790        $event.preventDefault();
13791        return _vm.open(_vm.notification.object.url);
13792      }
13793    }
13794  }, [_vm.notification.social_user ? _c("img", {
13795    staticClass: "social-index-user-img",
13796    attrs: {
13797      src: _vm.notification.social_user.profile_image
13798    }
13799  }) : _vm._e(), _vm._v(" "), _c("div", {
13800    staticClass: "social-notify-content"
13801  }, [_c("div", {
13802    staticClass: "social-notify-text-block"
13803  }, [_c("div", {
13804    staticClass: "social-notify-text"
13805  }, [_vm._v("\n                " + _vm._s(_vm.notification.message) + "\n            ")]), _vm._v(" "), _c("div", {
13806    staticClass: "social-notify-time"
13807  }, [_c("TimeFormat", {
13808    attrs: {
13809      time: _vm.notification.created_at
13810    }
13811  })], 1)]), _vm._v(" "), _vm.notification.object.cover ? _c("img", {
13812    staticClass: "social-notify-post-image",
13813    attrs: {
13814      src: _vm.notification.object.cover
13815    }
13816  }) : _vm._e(), _vm._v(" "), _vm.notification.has_follow ? _c("div", {
13817    directives: [{
13818      name: "show",
13819      rawName: "v-show",
13820      value: !_vm.isFollow,
13821      expression: "!isFollow"
13822    }],
13823    staticClass: "btn social-post-unfollow btn-social-release position-relative social-notify-button",
13824    on: {
13825      click: function click($event) {
13826        $event.preventDefault();
13827        return _vm.follow.apply(null, arguments);
13828      }
13829    }
13830  }, [_vm._v("\n            追蹤\n        ")]) : _vm._e(), _vm._v(" "), _vm.notification.has_follow ? _c("div", {
13831    directives: [{
13832      name: "show",
13833      rawName: "v-show",
13834      value: _vm.isFollow,
13835      expression: "isFollow"
13836    }],
13837    staticClass: "btn social-post-follow btn-social-release position-relative social-notify-button",
13838    on: {
13839      click: function click($event) {
13840        $event.preventDefault();
13841        return _vm.unfollow.apply(null, arguments);
13842      }
13843    }
13844  }, [_vm._v("\n            已追蹤\n        ")]) : _vm._e()])]);
13845};
13846var staticRenderFns = [];
13847render._withStripped = true;
13848
13849
13850/***/ }),
13851
13852/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialNotificationModal.vue?vue&type=template&id=d8136d0c":
13853/*!****************************************************************************************************************************************************************************************************************************************************************************************************!*\
13854  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialNotificationModal.vue?vue&type=template&id=d8136d0c ***!
13855  \****************************************************************************************************************************************************************************************************************************************************************************************************/
13856/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
13857
13858"use strict";
13859__webpack_require__.r(__webpack_exports__);
13860/* harmony export */ __webpack_require__.d(__webpack_exports__, {
13861/* harmony export */   render: () => (/* binding */ render),
13862/* harmony export */   staticRenderFns: () => (/* binding */ staticRenderFns)
13863/* harmony export */ });
13864var render = function render() {
13865  var _vm = this,
13866    _c = _vm._self._c;
13867  return _c("div", {
13868    ref: "modal",
13869    staticClass: "social-modal-min-full modal p-0 fade",
13870    attrs: {
13871      id: "social-notify-modal",
13872      tabindex: "-1"
13873    }
13874  }, [_c("div", {
13875    staticClass: "modal-dialog modal-block m-tb-0"
13876  }, [_c("div", {
13877    staticClass: "modal-content"
13878  }, [_c("div", {
13879    staticClass: "modal-header bg-dark-gray position-relative d-block d-tb-none"
13880  }, [_c("button", {
13881    staticClass: "btn-social-back",
13882    on: {
13883      click: _vm.hide
13884    }
13885  }, [_c("img", {
13886    attrs: {
13887      src: "/img/back_outline_white.svg",
13888      alt: ""
13889    }
13890  })]), _vm._v(" "), _c("h4", {
13891    staticClass: "modal-title text-center w-100 white"
13892  }, [_vm._v("通知")])]), _vm._v(" "), _c("div", {
13893    staticClass: "modal-body bg-dark-gray flex-column p-0"
13894  }, [_c("div", {
13895    staticClass: "social-notify-list-section"
13896  }, [_c("div", {
13897    staticClass: "social-notify-list-block"
13898  }, _vm._l(_vm.notifications, function (notification) {
13899    return _c("SocialNotification", {
13900      key: notification.id,
13901      attrs: {
13902        notification: notification
13903      },
13904      on: {
13905        click: _vm.hide,
13906        showReportInfo: _vm.showReportInfo
13907      }
13908    });
13909  }), 1)])])])])]);
13910};
13911var staticRenderFns = [];
13912render._withStripped = true;
13913
13914
13915/***/ }),
13916
13917/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPage.vue?vue&type=template&id=674a2372":
13918/*!***************************************************************************************************************************************************************************************************************************************************************************************!*\
13919  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPage.vue?vue&type=template&id=674a2372 ***!
13920  \***************************************************************************************************************************************************************************************************************************************************************************************/
13921/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
13922
13923"use strict";
13924__webpack_require__.r(__webpack_exports__);
13925/* harmony export */ __webpack_require__.d(__webpack_exports__, {
13926/* harmony export */   render: () => (/* binding */ render),
13927/* harmony export */   staticRenderFns: () => (/* binding */ staticRenderFns)
13928/* harmony export */ });
13929var render = function render() {
13930  var _vm = this,
13931    _c = _vm._self._c;
13932  return _c("div", {
13933    attrs: {
13934      id: "social-index"
13935    }
13936  }, [_c("div", {
13937    staticClass: "social-index-featured-member d-block d-lg-none",
13938    staticStyle: {
13939      "margin-left": "8px"
13940    }
13941  }, [_c("swiper", {
13942    staticClass: "swiper mySwiper social-index-featured-member-swiper",
13943    attrs: {
13944      options: _vm.swiperOption
13945    }
13946  }, _vm._l(_vm.specialUsers, function (specialUser) {
13947    return _c("swiper-slide", {
13948      key: specialUser.id,
13949      staticClass: "social-index-featured-member-block",
13950      staticStyle: {
13951        width: "107.4px",
13952        "margin-right": "16px"
13953      }
13954    }, [_c("router-link", {
13955      attrs: {
13956        to: {
13957          name: "socialUser",
13958          params: {
13959            name: specialUser.alias_name
13960          }
13961        }
13962      }
13963    }, [_c("img", {
13964      staticClass: "social-index-featured-member-img",
13965      attrs: {
13966        src: specialUser.profile_image
13967      }
13968    }), _vm._v(" "), _c("div", {
13969      staticClass: "social-index-featured-member-name"
13970    }, [_vm._v("\n                        " + _vm._s(specialUser.name) + "\n                    ")])])], 1);
13971  }), 1)], 1), _vm._v(" "), _c("div", {
13972    staticClass: "container"
13973  }, [_c("div", {
13974    staticClass: "row"
13975  }, [_c("div", {
13976    staticClass: "col-lg-9 col-md-12 px-mb-4px"
13977  }, [_vm._m(0), _vm._v(" "), _c("SocialPostList", {
13978    attrs: {
13979      apiUrl: "/api/social/post"
13980    }
13981  })], 1), _vm._v(" "), _c("div", {
13982    staticClass: "col-lg-3 d-lg-block d-none pl-0"
13983  }, [_vm.self && _vm.self.hasOwnProperty("alias_name") ? _c("router-link", {
13984    staticClass: "social-index-user-block",
13985    attrs: {
13986      to: {
13987        name: "socialUser",
13988        params: {
13989          name: _vm.self.alias_name
13990        }
13991      }
13992    }
13993  }, [_c("img", {
13994    staticClass: "social-index-user-img",
13995    attrs: {
13996      src: _vm.self.profile_image
13997    }
13998  }), _vm._v(" "), _c("div", {
13999    staticClass: "social-index-user-data"
14000  }, [_c("div", {
14001    staticClass: "social-index-user-name"
14002  }, [_vm._v("\n                            " + _vm._s(_vm.self.name) + "\n                        ")]), _vm._v(" "), _vm.self.birthday ? _c("div", {
14003    staticClass: "social-index-user-birthday"
14004  }, [_vm._v("\n                            " + _vm._s(_vm.self.birthday) + "\n                        ")]) : _vm._e()]), _vm._v(" "), _c("div", {
14005    staticClass: "btn-social-index-user-personal-page"
14006  }, [_vm._v("\n                        查看\n                    ")])]) : _vm._e(), _vm._v(" "), _c("div", {
14007    staticClass: "social-index-featured-member-block-title"
14008  }, [_vm._v("\n                    活躍用戶\n                ")]), _vm._v(" "), _vm._l(_vm.specialUsers, function (specialUser) {
14009    return _c("div", {
14010      key: specialUser.id,
14011      staticClass: "social-index-featured-member-block"
14012    }, [_c("router-link", {
14013      attrs: {
14014        to: {
14015          name: "socialUser",
14016          params: {
14017            name: specialUser.alias_name
14018          }
14019        }
14020      }
14021    }, [_c("img", {
14022      staticClass: "social-index-featured-member-img",
14023      attrs: {
14024        src: specialUser.profile_image
14025      }
14026    })]), _vm._v(" "), _c("div", {
14027      staticClass: "social-index-featured-member-data"
14028    }, [_c("router-link", {
14029      staticClass: "social-index-featured-member-name",
14030      attrs: {
14031        to: {
14032          name: "socialUser",
14033          params: {
14034            name: specialUser.alias_name
14035          }
14036        }
14037      }
14038    }, [_vm._v("\n                            " + _vm._s(specialUser.name) + "\n                        ")])], 1), _vm._v(" "), _vm.self.id != specialUser.id && specialUser.is_follow ? _c("a", {
14039      staticClass: "followUser btn-social-index-featured-member-follow",
14040      attrs: {
14041        href: "#"
14042      },
14043      on: {
14044        click: function click($event) {
14045          $event.preventDefault();
14046          return _vm.unfollow(specialUser);
14047        }
14048      }
14049    }, [_vm._v("\n                        已追蹤\n                    ")]) : _vm._e(), _vm._v(" "), _vm.self.id != specialUser.id && !specialUser.is_follow ? _c("a", {
14050      staticClass: "followUser btn-social-index-featured-member-unfollow",
14051      attrs: {
14052        href: "#"
14053      },
14054      on: {
14055        click: function click($event) {
14056          $event.preventDefault();
14057          return _vm.follow(specialUser);
14058        }
14059      }
14060    }, [_vm._v("\n                        追蹤\n                    ")]) : _vm._e()], 1);
14061  })], 2)])])]);
14062};
14063var staticRenderFns = [function () {
14064  var _vm = this,
14065    _c = _vm._self._c;
14066  return _c("div", {
14067    staticClass: "social-index-title-block"
14068  }, [_c("h2", {
14069    staticClass: "social-index-title"
14070  }, [_vm._v("社群")]), _vm._v(" "), _c("div", {
14071    staticClass: "social-index-title-line"
14072  }), _vm._v(" "), _c("h2", {
14073    staticClass: "social-index-title"
14074  }, [_vm._v("SOCIAL")]), _vm._v(" "), _c("div", {
14075    staticClass: "social-index-title-hr"
14076  })]);
14077}];
14078render._withStripped = true;
14079
14080
14081/***/ }),
14082
14083/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPlaceModal.vue?vue&type=template&id=03abce1e":
14084/*!*********************************************************************************************************************************************************************************************************************************************************************************************!*\
14085  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPlaceModal.vue?vue&type=template&id=03abce1e ***!
14086  \*********************************************************************************************************************************************************************************************************************************************************************************************/
14087/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
14088
14089"use strict";
14090__webpack_require__.r(__webpack_exports__);
14091/* harmony export */ __webpack_require__.d(__webpack_exports__, {
14092/* harmony export */   render: () => (/* binding */ render),
14093/* harmony export */   staticRenderFns: () => (/* binding */ staticRenderFns)
14094/* harmony export */ });
14095var render = function render() {
14096  var _vm = this,
14097    _c = _vm._self._c;
14098  return _c("div", {
14099    ref: "modal",
14100    staticClass: "social-modal-min-full modal p-0 fade",
14101    attrs: {
14102      tabindex: "-1"
14103    }
14104  }, [_c("div", {
14105    staticClass: "modal-dialog modal-dialog-centered modal-block m-tb-0"
14106  }, [_c("div", {
14107    staticClass: "modal-content"
14108  }, [_c("div", {
14109    staticClass: "modal-header bg-dark-gray position-relative"
14110  }, [_c("button", {
14111    staticClass: "btn-social-back",
14112    attrs: {
14113      type: "button"
14114    },
14115    on: {
14116      click: _vm.hide
14117    }
14118  }, [_c("img", {
14119    attrs: {
14120      src: "/img/back_outline_white.svg",
14121      alt: ""
14122    }
14123  })]), _vm._v(" "), _c("h4", {
14124    staticClass: "modal-title text-center w-100 white"
14125  }, [_vm._v("選擇地點")])]), _vm._v(" "), _c("div", {
14126    staticClass: "modal-body bg-dark-gray flex-column p-0"
14127  }, [_c("div", {
14128    staticClass: "social-post-report-declare-block"
14129  }, [_c("input", {
14130    directives: [{
14131      name: "model",
14132      rawName: "v-model",
14133      value: _vm.keyword,
14134      expression: "keyword"
14135    }],
14136    staticClass: "social-post-report-user-search w-100",
14137    attrs: {
14138      type: "text",
14139      placeholder: "搜尋地點"
14140    },
14141    domProps: {
14142      value: _vm.keyword
14143    },
14144    on: {
14145      input: function input($event) {
14146        if ($event.target.composing) return;
14147        _vm.keyword = $event.target.value;
14148      }
14149    }
14150  })]), _vm._v(" "), _c("div", {
14151    staticClass: "social-post-report-options-section edit-social-post-check-in-options-section"
14152  }, [_vm.places.length > 0 ? _c("div", {
14153    staticClass: "social-post-report-options-block"
14154  }, _vm._l(_vm.places, function (place) {
14155    return _c("div", {
14156      key: place.id,
14157      staticClass: "social-post-report-options",
14158      on: {
14159        click: function click($event) {
14160          return _vm.submit(place);
14161        }
14162      }
14163    }, [_c("div", {
14164      staticClass: "social-post-report-user-data d-flex flex-column"
14165    }, [_c("div", {
14166      staticClass: "social-search-check-in-name"
14167    }, [_vm._v("\n                  " + _vm._s(place.name) + "\n                ")]), _vm._v(" "), _c("div", {
14168      staticClass: "social-search-check-in-address"
14169    }, [_vm._v("\n                  " + _vm._s(place.address) + "\n                ")])])]);
14170  }), 0) : _vm._e(), _vm._v(" "), _c("div", {
14171    staticClass: "social-post-report-last-hr"
14172  }), _vm._v(" "), _vm.places.length == 0 ? _c("div", {
14173    staticClass: "social-message-list-search-not"
14174  }, [_vm._v("\n            查無搜尋結果\n          ")]) : _vm._e()])])])])]);
14175};
14176var staticRenderFns = [];
14177render._withStripped = true;
14178
14179
14180/***/ }),
14181
14182/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPlacePage.vue?vue&type=template&id=8901b1a4":
14183/*!********************************************************************************************************************************************************************************************************************************************************************************************!*\
14184  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPlacePage.vue?vue&type=template&id=8901b1a4 ***!
14185  \********************************************************************************************************************************************************************************************************************************************************************************************/
14186/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
14187
14188"use strict";
14189__webpack_require__.r(__webpack_exports__);
14190/* harmony export */ __webpack_require__.d(__webpack_exports__, {
14191/* harmony export */   render: () => (/* binding */ render),
14192/* harmony export */   staticRenderFns: () => (/* binding */ staticRenderFns)
14193/* harmony export */ });
14194var render = function render() {
14195  var _vm = this,
14196    _c = _vm._self._c;
14197  return _vm.place ? _c("div", [_c("div", {
14198    staticClass: "social-hashtag",
14199    attrs: {
14200      id: "social-personal-page"
14201    }
14202  }, [_c("div", {
14203    staticClass: "social-post-om-block m-tb-0 position-relative"
14204  }, [_c("div", {
14205    staticClass: "social-post-om-header bg-dark-gray position-relative d-flex d-tb-none align-items-center"
14206  }, [_c("button", {
14207    staticClass: "btn-social-back",
14208    on: {
14209      click: _vm.back
14210    }
14211  }, [_c("img", {
14212    attrs: {
14213      src: "/img/back_outline_white.svg",
14214      alt: ""
14215    }
14216  })]), _vm._v(" "), _c("h4", {
14217    staticClass: "social-post-om-title text-center w-100 white mx-32px"
14218  }, [_vm._v("\n          " + _vm._s(_vm.place.name) + "\n        ")])]), _vm._v(" "), _c("iframe", {
14219    staticClass: "social-check-in-iframe",
14220    attrs: {
14221      src: "https://maps.google.com/maps?q=" + _vm.place.latitude + "," + _vm.place.longitude + "&t=&z=13&ie=UTF8&iwloc=&output=embed",
14222      allowfullscreen: "",
14223      loading: "lazy",
14224      referrerpolicy: "no-referrer-when-downgrade"
14225    }
14226  }), _vm._v(" "), _c("div", {
14227    staticClass: "social-hashtag-block"
14228  }, [_c("div", {
14229    staticClass: "d-flex align-items-center"
14230  }, [_c("img", {
14231    staticClass: "social-hashtag-title-image",
14232    attrs: {
14233      src: "/img/check_in_fill_white_black_circle.svg"
14234    }
14235  }), _vm._v(" "), _c("div", {
14236    staticClass: "social-hashtag-content-block"
14237  }, [_c("div", {
14238    staticClass: "social-hashtag-content-title d-none d-tb-inline-block"
14239  }, [_vm._v("\n              " + _vm._s(_vm.place.name) + "\n            ")]), _vm._v(" "), _c("div", {
14240    staticClass: "social-hashtag-content-post-count"
14241  }, [_vm._v("\n              " + _vm._s(_vm.place.post_count) + "\n              "), _vm._v(" "), _c("span", {
14242    staticClass: "social-hashtag-content-post"
14243  }, [_vm._v("貼文")])])])])]), _vm._v(" "), _c("div", {
14244    staticClass: "social-personal-page-block"
14245  }, [_c("SocialPostList", {
14246    attrs: {
14247      apiUrl: "/api/social/post/place/" + _vm.place.id
14248    }
14249  }, [_c("div", {
14250    staticClass: "white mt-16px"
14251  }, [_vm._v("尚無貼文")])])], 1)])])]) : _vm._e();
14252};
14253var staticRenderFns = [];
14254render._withStripped = true;
14255
14256
14257/***/ }),
14258
14259/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPost.vue?vue&type=template&id=73809850":
14260/*!***************************************************************************************************************************************************************************************************************************************************************************************!*\
14261  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPost.vue?vue&type=template&id=73809850 ***!
14262  \***************************************************************************************************************************************************************************************************************************************************************************************/
14263/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
14264
14265"use strict";
14266__webpack_require__.r(__webpack_exports__);
14267/* harmony export */ __webpack_require__.d(__webpack_exports__, {
14268/* harmony export */   render: () => (/* binding */ render),
14269/* harmony export */   staticRenderFns: () => (/* binding */ staticRenderFns)
14270/* harmony export */ });
14271var render = function render() {
14272  var _vm = this,
14273    _c = _vm._self._c;
14274  return _c("div", {
14275    staticClass: "social-post-card"
14276  }, [_vm.socialPost.medias.length > 0 ? _c("div", {
14277    staticClass: "social-post-card-media",
14278    on: {
14279      click: function click($event) {
14280        return _vm.$emit("postClick", _vm.index);
14281      }
14282    }
14283  }, [_vm.socialPost.medias.length > 1 ? _c("img", {
14284    staticClass: "social-post-card-image-plural",
14285    attrs: {
14286      src: "/img/image_plural_fill_black_white.svg"
14287    }
14288  }) : _vm._e(), _vm._v(" "), _vm.socialPost.medias[0].type == "video" ? _c("img", {
14289    staticClass: "video_play_fill_black_white",
14290    attrs: {
14291      src: "/img/video_play_fill_black_white.svg"
14292    }
14293  }) : _vm._e(), _vm._v(" "), _c("img", {
14294    ref: "cover",
14295    staticClass: "social-post-card-image",
14296    attrs: {
14297      src: _vm.socialPost.medias[0].cover
14298    }
14299  })]) : _vm._e(), _vm._v(" "), _c("div", {
14300    staticClass: "socail-post-card-content"
14301  }, [_vm.socialPost.title ? _c("h3", {
14302    staticClass: "social-post-card-title",
14303    on: {
14304      click: function click($event) {
14305        return _vm.$emit("postClick", _vm.index);
14306      }
14307    }
14308  }, [_vm._v("\n            " + _vm._s(_vm.socialPost.title) + "\n        ")]) : _vm._e(), _vm._v(" "), _vm.socialPost.user ? _c("a", {
14309    staticClass: "social-post-card-author-block",
14310    attrs: {
14311      href: "#"
14312    },
14313    on: {
14314      click: function click($event) {
14315        $event.preventDefault();
14316        return _vm.$emit("userClick", _vm.socialPost.user.alias_name);
14317      }
14318    }
14319  }, [_c("img", {
14320    staticClass: "social-post-card-author-pic",
14321    attrs: {
14322      src: _vm.socialPost.user.profile_image
14323    }
14324  }), _vm._v(" "), _c("span", {
14325    staticClass: "social-post-card-author"
14326  }, [_vm._v(_vm._s(_vm.socialPost.user.name))])]) : _vm._e(), _vm._v(" "), _vm.socialPost.user && _vm.socialPost.is_like ? _c("div", {
14327    staticClass: "social-post-card-like",
14328    on: {
14329      click: function click($event) {
14330        $event.stopPropagation();
14331        return _vm.unlike.apply(null, arguments);
14332      }
14333    }
14334  }, [_c("div", {
14335    staticClass: "social-post-card-like-btn bg-basic"
14336  }), _vm._v(" "), _c("span", {
14337    staticClass: "social-post-card-like-count"
14338  }, [_vm._v(_vm._s(_vm.socialPost.like_count))])]) : _vm._e(), _vm._v(" "), _vm.socialPost.user && !_vm.socialPost.is_like ? _c("div", {
14339    staticClass: "social-post-card-like",
14340    on: {
14341      click: function click($event) {
14342        $event.stopPropagation();
14343        return _vm.like.apply(null, arguments);
14344      }
14345    }
14346  }, [_c("div", {
14347    staticClass: "social-post-card-unlike-btn bg-basic"
14348  }), _vm._v(" "), _vm.socialPost.like_count > 0 ? _c("span", {
14349    staticClass: "social-post-card-like-count"
14350  }, [_vm._v("\n                " + _vm._s(_vm.socialPost.like_count) + "\n            ")]) : _vm._e()]) : _vm._e()])]);
14351};
14352var staticRenderFns = [];
14353render._withStripped = true;
14354
14355
14356/***/ }),
14357
14358/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostComment.vue?vue&type=template&id=63e91817":
14359/*!**********************************************************************************************************************************************************************************************************************************************************************************************!*\
14360  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostComment.vue?vue&type=template&id=63e91817 ***!
14361  \**********************************************************************************************************************************************************************************************************************************************************************************************/
14362/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
14363
14364"use strict";
14365__webpack_require__.r(__webpack_exports__);
14366/* harmony export */ __webpack_require__.d(__webpack_exports__, {
14367/* harmony export */   render: () => (/* binding */ render),
14368/* harmony export */   staticRenderFns: () => (/* binding */ staticRenderFns)
14369/* harmony export */ });
14370var render = function render() {
14371  var _vm = this,
14372    _c = _vm._self._c;
14373  return _c("div", {
14374    staticClass: "social-post-comment-single"
14375  }, [_c("div", {
14376    staticClass: "d-flex flex-row"
14377  }, [_c("div", {
14378    staticClass: "social-post-comment-user-image bg-basic",
14379    style: {
14380      backgroundImage: "url(" + _vm.comment.user.profile_image + ")"
14381    }
14382  }), _vm._v(" "), _c("div", {
14383    staticClass: "social-post-comment-user-block"
14384  }, [_c("div", {
14385    staticClass: "social-post-comment-user-name"
14386  }, [_vm._v("\n        " + _vm._s(_vm.comment.user.name) + "\n        "), _c("span", {
14387    staticClass: "social-post-comment-edit",
14388    attrs: {
14389      type: "button"
14390    },
14391    on: {
14392      click: _vm.openControls
14393    }
14394  }, [_vm._v("...\n        ")])]), _vm._v(" "), _c("div", {
14395    staticClass: "social-post-comment-user-content"
14396  }, [_c("SocialContent", {
14397    attrs: {
14398      content: _vm.comment.content
14399    }
14400  })], 1), _vm._v(" "), _c("div", {
14401    staticClass: "social-post-comment-time"
14402  }, [_c("TimeFormat", {
14403    attrs: {
14404      time: _vm.comment.created_at
14405    }
14406  }), _vm._v(" "), _vm._t("up")], 2), _vm._v(" "), _vm._t("down"), _vm._v(" "), _c("div", {
14407    staticClass: "position-relative"
14408  }, [_vm.tags.length > 0 ? _c("div", {
14409    staticClass: "social-tag-block",
14410    staticStyle: {
14411      bottom: "50px",
14412      left: "0%"
14413    }
14414  }, _vm._l(_vm.tags, function (tag) {
14415    return _c("div", {
14416      key: tag.id,
14417      staticClass: "social-tag-list",
14418      on: {
14419        click: function click($event) {
14420          return _vm.addTag(tag);
14421        }
14422      }
14423    }, [_vm._v("\n            #" + _vm._s(tag.name) + "\n          ")]);
14424  }), 0) : _vm._e(), _vm._v(" "), _vm.users.length > 0 ? _c("div", {
14425    staticClass: "social-tag-block",
14426    staticStyle: {
14427      bottom: "50px",
14428      left: "0%"
14429    }
14430  }, _vm._l(_vm.users, function (user) {
14431    return _c("div", {
14432      key: user.id,
14433      staticClass: "social-tag-list",
14434      on: {
14435        click: function click($event) {
14436          return _vm.addUser(user);
14437        }
14438      }
14439    }, [_c("img", {
14440      staticClass: "social-tag-list-user-image",
14441      attrs: {
14442        src: user.profile_image
14443      }
14444    }), _vm._v(" "), _c("div", {
14445      staticClass: "d-flex flex-column"
14446    }, [_c("div", {
14447      staticClass: "social-tag-list-user-name"
14448    }, [_vm._v(_vm._s(user.name))]), _vm._v(" "), _c("div", {
14449      staticClass: "social-tag-list-user-name-id"
14450    }, [_vm._v("\n                @" + _vm._s(user.alias_name) + "\n              ")])])]);
14451  }), 0) : _vm._e(), _vm._v(" "), _c("div", {
14452    directives: [{
14453      name: "show",
14454      rawName: "v-show",
14455      value: _vm.comment.is_self && _vm.showEdit,
14456      expression: "comment.is_self && showEdit"
14457    }]
14458  }, [_c("div", {
14459    staticClass: "social-post-comment-input-block d-flex"
14460  }, [_c("SocialContentInput", {
14461    ref: "socialContentInput",
14462    staticClass: "social-post-comment-input",
14463    on: {
14464      showTags: _vm.showTags,
14465      showUsers: _vm.showUsers
14466    }
14467  }), _vm._v(" "), _c("button", {
14468    staticClass: "btn social-post-comment-submit",
14469    on: {
14470      click: _vm.save
14471    }
14472  }, [_vm._v("\n              儲存\n            ")])], 1)])])], 2)]), _vm._v(" "), _c("SocialConfirmModal", {
14473    ref: "deleteConfirmModal",
14474    attrs: {
14475      title: "刪除留言?",
14476      description: "確定要永久刪除此則留言?",
14477      actionText: "刪除"
14478    },
14479    on: {
14480      action: _vm.destroy
14481    }
14482  }), _vm._v(" "), _c("ReportModal", {
14483    ref: "reportModal",
14484    attrs: {
14485      title: "你檢舉這則留言的原因為何?",
14486      type: "2"
14487    }
14488  })], 1);
14489};
14490var staticRenderFns = [];
14491render._withStripped = true;
14492
14493
14494/***/ }),
14495
14496/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostCommentList.vue?vue&type=template&id=1513d655":
14497/*!**************************************************************************************************************************************************************************************************************************************************************************************************!*\
14498  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostCommentList.vue?vue&type=template&id=1513d655 ***!
14499  \**************************************************************************************************************************************************************************************************************************************************************************************************/
14500/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
14501
14502"use strict";
14503__webpack_require__.r(__webpack_exports__);
14504/* harmony export */ __webpack_require__.d(__webpack_exports__, {
14505/* harmony export */   render: () => (/* binding */ render),
14506/* harmony export */   staticRenderFns: () => (/* binding */ staticRenderFns)
14507/* harmony export */ });
14508var render = function render() {
14509  var _vm = this,
14510    _c = _vm._self._c;
14511  return _c("div", {
14512    staticClass: "social-post-comment-block"
14513  }, [_c("div", {
14514    staticClass: "position-relative"
14515  }, [_vm.tags.length > 0 ? _c("div", {
14516    staticClass: "social-tag-block d-tb-none d-block",
14517    staticStyle: {
14518      bottom: "50px",
14519      left: "0%"
14520    }
14521  }, _vm._l(_vm.tags, function (tag) {
14522    return _c("div", {
14523      key: tag.id,
14524      staticClass: "social-tag-list",
14525      on: {
14526        click: function click($event) {
14527          return _vm.addTag(tag);
14528        }
14529      }
14530    }, [_vm._v("\n                #" + _vm._s(tag.name) + "\n            ")]);
14531  }), 0) : _vm._e(), _vm._v(" "), _vm.users.length > 0 ? _c("div", {
14532    staticClass: "social-tag-block d-tb-none d-block",
14533    staticStyle: {
14534      bottom: "50px",
14535      left: "0%"
14536    }
14537  }, _vm._l(_vm.users, function (user) {
14538    return _c("div", {
14539      key: user.id,
14540      staticClass: "social-tag-list",
14541      on: {
14542        click: function click($event) {
14543          return _vm.addUser(user);
14544        }
14545      }
14546    }, [_c("img", {
14547      staticClass: "social-tag-list-user-image",
14548      attrs: {
14549        src: user.profile_image
14550      }
14551    }), _vm._v(" "), _c("div", {
14552      staticClass: "d-flex flex-column"
14553    }, [_c("div", {
14554      staticClass: "social-tag-list-user-name"
14555    }, [_vm._v("\n                        " + _vm._s(user.name) + "\n                    ")]), _vm._v(" "), _c("div", {
14556      staticClass: "social-tag-list-user-name-id"
14557    }, [_vm._v("\n                        @" + _vm._s(user.alias_name) + "\n                    ")])])]);
14558  }), 0) : _vm._e(), _vm._v(" "), _c("form", {
14559    staticClass: "social-post-comment-input-block d-flex d-tb-none",
14560    on: {
14561      submit: function submit($event) {
14562        $event.preventDefault();
14563        return _vm.create.apply(null, arguments);
14564      }
14565    }
14566  }, [_c("SocialContentInput", {
14567    ref: "socialContentInput",
14568    staticClass: "social-post-comment-input",
14569    attrs: {
14570      placeholder: "留言⋯"
14571    },
14572    on: {
14573      showTags: _vm.showTags,
14574      showUsers: _vm.showUsers
14575    }
14576  }), _vm._v(" "), _c("button", {
14577    staticClass: "btn social-post-comment-submit"
14578  }, [_vm._v("發佈")])], 1)]), _vm._v(" "), _c("div", {
14579    staticClass: "social-post-comment-all"
14580  }, _vm._l(_vm.comments, function (comment) {
14581    return _c("SocialPostComment", {
14582      key: comment.id,
14583      attrs: {
14584        comment: comment,
14585        isAdminLoggedIn: _vm.isAdminLoggedIn
14586      },
14587      on: {
14588        destroy: _vm.showDeleteSuccess
14589      },
14590      scopedSlots: _vm._u([{
14591        key: "up",
14592        fn: function fn() {
14593          return [_c("span", {
14594            staticClass: "social-post-comment-reply",
14595            on: {
14596              click: function click($event) {
14597                return _vm.startReply(comment);
14598              }
14599            }
14600          }, [_vm._v("回覆")])];
14601        },
14602        proxy: true
14603      }, {
14604        key: "down",
14605        fn: function fn() {
14606          return [_c("SocialPostReplyList", {
14607            ref: "replyList" + comment.id,
14608            refInFor: true,
14609            attrs: {
14610              comment: comment,
14611              showDeleteSuccess: _vm.showDeleteSuccess,
14612              isAdminLoggedIn: _vm.isAdminLoggedIn
14613            },
14614            on: {
14615              created: _vm.endReply
14616            }
14617          })];
14618        },
14619        proxy: true
14620      }], null, true)
14621    });
14622  }), 1), _vm._v(" "), _vm.comments.length < _vm.totalCount ? _c("h4", {
14623    directives: [{
14624      name: "show",
14625      rawName: "v-show",
14626      value: !_vm.isLoading,
14627      expression: "!isLoading"
14628    }],
14629    staticClass: "commentbtn social-post-comment-read-more",
14630    staticStyle: {
14631      "margin-top": "8px"
14632    },
14633    on: {
14634      click: function click($event) {
14635        $event.preventDefault();
14636        return _vm.load.apply(null, arguments);
14637      }
14638    }
14639  }, [_vm._v("\n        MORE\n    ")]) : _vm._e()]);
14640};
14641var staticRenderFns = [];
14642render._withStripped = true;
14643
14644
14645/***/ }),
14646
14647/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostEditModal.vue?vue&type=template&id=7a44027b":
14648/*!************************************************************************************************************************************************************************************************************************************************************************************************!*\
14649  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostEditModal.vue?vue&type=template&id=7a44027b ***!
14650  \************************************************************************************************************************************************************************************************************************************************************************************************/
14651/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
14652
14653"use strict";
14654__webpack_require__.r(__webpack_exports__);
14655/* harmony export */ __webpack_require__.d(__webpack_exports__, {
14656/* harmony export */   render: () => (/* binding */ render),
14657/* harmony export */   staticRenderFns: () => (/* binding */ staticRenderFns)
14658/* harmony export */ });
14659var render = function render() {
14660  var _vm = this,
14661    _c = _vm._self._c;
14662  return _c("div", [_c("SocialUpload", {
14663    ref: "socialUploadModal",
14664    attrs: {
14665      videoLengthStr: "15",
14666      videoLength: "30",
14667      videoSize: "50",
14668      imageSize: "10"
14669    },
14670    on: {
14671      pick: _vm.pickFile
14672    }
14673  }), _vm._v(" "), _c("div", {
14674    ref: "editModal",
14675    staticClass: "edit-social-post-modal modal fade",
14676    attrs: {
14677      tabindex: "-1"
14678    }
14679  }, [_c("button", {
14680    staticClass: "btn-edit-social-close close d-none d-lg-block",
14681    attrs: {
14682      type: "button"
14683    },
14684    on: {
14685      click: _vm.back
14686    }
14687  }, [_c("img", {
14688    attrs: {
14689      src: "/img/close_outline_white.svg"
14690    }
14691  })]), _vm._v(" "), _c("div", {
14692    staticClass: "modal-dialog modal-dialog-centered modal-block m-tb-0"
14693  }, [_c("div", {
14694    staticClass: "modal-content"
14695  }, [_c("div", {
14696    staticClass: "modal-header modal-header-fixed-top bg-dark-gray"
14697  }, [_c("button", {
14698    staticClass: "btn-social-back",
14699    on: {
14700      click: _vm.back
14701    }
14702  }, [_c("img", {
14703    attrs: {
14704      src: "/img/back_outline_white.svg"
14705    }
14706  })]), _vm._v(" "), _c("h4", {
14707    staticClass: "modal-title text-center w-100 white"
14708  }, [_vm._v("\n                        建立貼文\n                    ")]), _vm._v(" "), _c("button", {
14709    staticClass: "btn-social-release",
14710    attrs: {
14711      type: "button"
14712    },
14713    on: {
14714      click: _vm.save
14715    }
14716  }, [_vm._v("\n                        發佈\n                    ")])]), _vm._v(" "), _c("div", {
14717    staticClass: "modal-body modal-body-fixed-top bg-dark-gray flex-center flex-xl-row flex-1100-row flex-column p-0"
14718  }, [_c("div", {
14719    directives: [{
14720      name: "show",
14721      rawName: "v-show",
14722      value: _vm.socialPost.medias.length > 0 && _vm.socialPost.medias[0].type === "video",
14723      expression: "\n                            socialPost.medias.length > 0 &&\n                            socialPost.medias[0].type === 'video'\n                        "
14724    }],
14725    staticClass: "video-social-preview-block"
14726  }, [_c("div", {
14727    staticClass: "video-social-preview flex-center"
14728  }, [_vm.socialPost.medias.length > 0 ? _c("video", {
14729    ref: "video",
14730    staticClass: "video-social-preview-sizing object-fit-cover",
14731    attrs: {
14732      src: _vm.socialPost.medias[0].src,
14733      controls: ""
14734    }
14735  }) : _vm._e()])]), _vm._v(" "), _c("div", {
14736    directives: [{
14737      name: "show",
14738      rawName: "v-show",
14739      value: _vm.socialPost.medias.length > 0 && _vm.socialPost.medias[0].type === "image",
14740      expression: "\n                            socialPost.medias.length > 0 &&\n                            socialPost.medias[0].type === 'image'\n                        "
14741    }],
14742    staticClass: "img-social-preview-block"
14743  }, [_c("div", {
14744    ref: "swiper",
14745    staticClass: "img-social-preview flex-center swiper img-social-preview-swiper"
14746  }, [_c("div", {
14747    staticClass: "swiper-wrapper"
14748  }, _vm._l(_vm.socialPost.medias, function (media, index) {
14749    return _c("div", {
14750      key: index,
14751      staticClass: "swiper-slide"
14752    }, [_c("div", {
14753      staticClass: "bg-basic",
14754      style: {
14755        backgroundImage: "url(" + media.src + ")",
14756        width: _vm.ratio >= 1 ? "100%" : "auto",
14757        height: _vm.ratio < 1 ? "100%" : "auto",
14758        aspectRatio: _vm.ratio
14759      }
14760    })]);
14761  }), 0)]), _vm._v(" "), _c("div", {
14762    directives: [{
14763      name: "show",
14764      rawName: "v-show",
14765      value: _vm.socialPost.medias.length > 0 && _vm.socialPost.medias[0].type === "image",
14766      expression: "\n                                socialPost.medias.length > 0 &&\n                                socialPost.medias[0].type === 'image'\n                            "
14767    }],
14768    ref: "thumbsSwiper",
14769    staticClass: "img-social-preview-bar-swiper flex-center flex-row swiper"
14770  }, [_c("div", {
14771    staticClass: "swiper-wrapper d-flex align-items-center flex-row justify-content-start"
14772  }, [_vm._l(_vm.socialPost.medias, function (media, index) {
14773    return _c("div", {
14774      key: index,
14775      staticClass: "swiper-slide"
14776    }, [_c("img", {
14777      staticClass: "img-social-preview-bar-image",
14778      attrs: {
14779        src: media.src
14780      }
14781    }), _vm._v(" "), _vm.socialPost.medias.length > 1 ? _c("div", {
14782      staticClass: "btn-delete-social-image",
14783      on: {
14784        click: function click($event) {
14785          return _vm.removeMedia(index);
14786        }
14787      }
14788    }) : _vm._e()]);
14789  }), _vm._v(" "), _vm.socialPost.medias.length > 0 && _vm.socialPost.medias[0].type === "image" && _vm.socialPost.medias.length < _vm.imageMaxLength ? _c("div", {
14790    staticClass: "swiper-slide"
14791  }, [_c("img", {
14792    staticClass: "img-social-preview-add",
14793    attrs: {
14794      src: "/img/add_image_outline_808080.svg"
14795    }
14796  }), _vm._v(" "), _c("SocialFileInput", {
14797    staticClass: "img-social-preview-add",
14798    attrs: {
14799      videoLength: 30,
14800      videoSize: 50,
14801      imageSize: 10
14802    },
14803    on: {
14804      pick: _vm.addFile
14805    }
14806  })], 1) : _vm._e()], 2)])]), _vm._v(" "), _c("div", {
14807    staticClass: "edit-social-block"
14808  }, [_c("input", {
14809    directives: [{
14810      name: "model",
14811      rawName: "v-model",
14812      value: _vm.socialPost.title,
14813      expression: "socialPost.title"
14814    }],
14815    staticClass: "edit-social-title w-100",
14816    attrs: {
14817      type: "text",
14818      placeholder: "填寫標題"
14819    },
14820    domProps: {
14821      value: _vm.socialPost.title
14822    },
14823    on: {
14824      input: function input($event) {
14825        if ($event.target.composing) return;
14826        _vm.$set(_vm.socialPost, "title", $event.target.value);
14827      }
14828    }
14829  }), _vm._v(" "), _c("SocialContentInput", {
14830    ref: "socialContentInput",
14831    staticClass: "edit-social-content w-100",
14832    attrs: {
14833      placeholder: "加上解說...",
14834      rows: "10",
14835      multiple: true
14836    },
14837    on: {
14838      showTags: _vm.showTags,
14839      showUsers: _vm.showUsers
14840    }
14841  }), _vm._v(" "), _vm.tags.length > 0 ? _c("div", {
14842    staticClass: "social-tag-block edit-social-tag-block"
14843  }, _vm._l(_vm.tags, function (tag) {
14844    return _c("div", {
14845      key: tag.id,
14846      staticClass: "social-tag-list",
14847      on: {
14848        click: function click($event) {
14849          return _vm.addTag(tag);
14850        }
14851      }
14852    }, [_vm._v("\n                                #" + _vm._s(tag.name) + "\n                            ")]);
14853  }), 0) : _vm._e(), _vm._v(" "), _vm.users.length > 0 ? _c("div", {
14854    staticClass: "social-tag-block edit-social-tag-block"
14855  }, _vm._l(_vm.users, function (user) {
14856    return _c("div", {
14857      key: user.id,
14858      staticClass: "social-tag-list",
14859      on: {
14860        click: function click($event) {
14861          return _vm.addUser(user);
14862        }
14863      }
14864    }, [_c("img", {
14865      staticClass: "social-tag-list-user-image",
14866      attrs: {
14867        src: user.profile_image
14868      }
14869    }), _vm._v(" "), _c("div", {
14870      staticClass: "d-flex flex-column"
14871    }, [_c("div", {
14872      staticClass: "social-tag-list-user-name"
14873    }, [_vm._v("\n                                        " + _vm._s(user.name) + "\n                                    ")]), _vm._v(" "), _c("div", {
14874      staticClass: "social-tag-list-user-name-id"
14875    }, [_vm._v("\n                                        @" + _vm._s(user.alias_name) + "\n                                    ")])])]);
14876  }), 0) : _vm._e(), _vm._v(" "), _c("div", {
14877    staticClass: "edit-social-friend",
14878    attrs: {
14879      type: "button"
14880    },
14881    on: {
14882      click: _vm.editTagFriends
14883    }
14884  }, [_vm.socialPost.friends.length > 0 ? _c("div", {
14885    staticClass: "edit-social-friend-select-block"
14886  }, _vm._l(_vm.socialPost.friends, function (friend) {
14887    return _c("div", {
14888      key: friend.id,
14889      staticClass: "social-message-select-user",
14890      on: {
14891        click: function click($event) {
14892          $event.stopPropagation();
14893          return _vm.removeTagFriend(friend);
14894        }
14895      }
14896    }, [_vm._v("\n                                    " + _vm._s(friend.name) + "\n                                ")]);
14897  }), 0) : _c("div", [_vm._v("標註朋友")]), _vm._v(" "), _c("img", {
14898    attrs: {
14899      src: "/img/back_outline_white.svg"
14900    }
14901  })])], 1)])])])]), _vm._v(" "), _c("SocialSelectUserModal", {
14902    ref: "tagUserModal",
14903    attrs: {
14904      title: "標註朋友"
14905    },
14906    on: {
14907      submit: _vm.tagFriends
14908    }
14909  })], 1);
14910};
14911var staticRenderFns = [];
14912render._withStripped = true;
14913
14914
14915/***/ }),
14916
14917/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostError.vue?vue&type=template&id=588b2740":
14918/*!********************************************************************************************************************************************************************************************************************************************************************************************!*\
14919  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostError.vue?vue&type=template&id=588b2740 ***!
14920  \********************************************************************************************************************************************************************************************************************************************************************************************/
14921/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
14922
14923"use strict";
14924__webpack_require__.r(__webpack_exports__);
14925/* harmony export */ __webpack_require__.d(__webpack_exports__, {
14926/* harmony export */   render: () => (/* binding */ render),
14927/* harmony export */   staticRenderFns: () => (/* binding */ staticRenderFns)
14928/* harmony export */ });
14929var render = function render() {
14930  var _vm = this,
14931    _c = _vm._self._c;
14932  return _vm._m(0);
14933};
14934var staticRenderFns = [function () {
14935  var _vm = this,
14936    _c = _vm._self._c;
14937  return _c("div", {
14938    staticClass: "social-post"
14939  }, [_c("div", {
14940    staticClass: "m-tb-0 mt-24px"
14941  }, [_c("div", {
14942    staticClass: "bg-dark-gray position-relative d-block d-tb-none"
14943  }, [_c("button", {
14944    staticClass: "btn-social-back",
14945    attrs: {
14946      "data-bs-toggle": "modal",
14947      "data-bs-target": "#edit-social-release"
14948    }
14949  }, [_c("img", {
14950    attrs: {
14951      src: "/img/back_outline_white.svg",
14952      alt: ""
14953    }
14954  })]), _vm._v(" "), _c("h4", {
14955    staticClass: "text-center w-100 white"
14956  }, [_vm._v("找不到內容")])])]), _vm._v(" "), _c("div", {
14957    staticClass: "social-post-error-block flex-center"
14958  }, [_c("img", {
14959    staticClass: "social-post-error-img",
14960    attrs: {
14961      src: "/img/error_outline_white.svg"
14962    }
14963  }), _vm._v(" "), _c("div", {
14964    staticClass: "social-post-error-title"
14965  }, [_vm._v("目前無法查看此內容")]), _vm._v(" "), _c("div", {
14966    staticClass: "social-post-error-text"
14967  }, [_vm._v("\n      會發生此情況,通常是因為擁有者變更了分享對象或是刪除了內容\n    ")]), _vm._v(" "), _c("a", {
14968    staticClass: "btn-social-post-error",
14969    attrs: {
14970      href: "/social"
14971    }
14972  }, [_vm._v("回到動態主頁")]), _vm._v(" "), _c("a", {
14973    staticClass: "btn-social-post-error-text",
14974    attrs: {
14975      href: ""
14976    }
14977  }, [_vm._v("返回")])])]);
14978}];
14979render._withStripped = true;
14980
14981
14982/***/ }),
14983
14984/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostList.vue?vue&type=template&id=2176acd4":
14985/*!*******************************************************************************************************************************************************************************************************************************************************************************************!*\
14986  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostList.vue?vue&type=template&id=2176acd4 ***!
14987  \*******************************************************************************************************************************************************************************************************************************************************************************************/
14988/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
14989
14990"use strict";
14991__webpack_require__.r(__webpack_exports__);
14992/* harmony export */ __webpack_require__.d(__webpack_exports__, {
14993/* harmony export */   render: () => (/* binding */ render),
14994/* harmony export */   staticRenderFns: () => (/* binding */ staticRenderFns)
14995/* harmony export */ });
14996var render = function render() {
14997  var _vm = this,
14998    _c = _vm._self._c;
14999  return _c("div", [_vm.socialPosts.length > 0 ? _c("div", [_c("div", {
15000    staticClass: "social-index-grid"
15001  }, _vm._l(_vm.socialPosts, function (socialPost, index) {
15002    return _c("div", {
15003      key: index,
15004      staticClass: "social-index-grid-item"
15005    }, [socialPost.profile_image ? _c("NewUser", {
15006      attrs: {
15007        "social-post": socialPost,
15008        index: index
15009      },
15010      on: {
15011        userClick: _vm.showUser,
15012        loaded: function loaded($event) {
15013          _vm.msnry && _vm.msnry.layout();
15014        }
15015      }
15016    }) : _c("SocialPost", {
15017      attrs: {
15018        "social-post": socialPost,
15019        index: index
15020      },
15021      on: {
15022        postClick: _vm.showPost,
15023        userClick: _vm.showUser,
15024        loaded: function loaded($event) {
15025          _vm.msnry && _vm.msnry.layout();
15026        }
15027      }
15028    })], 1);
15029  }), 0), _vm._v(" "), _c("div", {
15030    ref: "bottom",
15031    staticClass: "social-index-title-block justify-content-center mt-8px"
15032  }, [_c("div", {
15033    staticClass: "social-post-bottom-hr"
15034  }), _vm._v(" "), _c("p", {
15035    staticClass: "social-post-bottom"
15036  }, [_vm._v("已滑到底部")]), _vm._v(" "), _c("div", {
15037    staticClass: "social-post-bottom-hr"
15038  })])]) : _c("div", {
15039    staticClass: "social-personal-page-block social-personal-page-no-articles-block flex-center"
15040  }, [_c("img", {
15041    attrs: {
15042      src: "/img/post_upload_image.svg"
15043    }
15044  }), _vm._v(" "), _vm._t("default")], 2)]);
15045};
15046var staticRenderFns = [];
15047render._withStripped = true;
15048
15049
15050/***/ }),
15051
15052/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostPage.vue?vue&type=template&id=5b6c09f2":
15053/*!*******************************************************************************************************************************************************************************************************************************************************************************************!*\
15054  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostPage.vue?vue&type=template&id=5b6c09f2 ***!
15055  \*******************************************************************************************************************************************************************************************************************************************************************************************/
15056/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
15057
15058"use strict";
15059__webpack_require__.r(__webpack_exports__);
15060/* harmony export */ __webpack_require__.d(__webpack_exports__, {
15061/* harmony export */   render: () => (/* binding */ render),
15062/* harmony export */   staticRenderFns: () => (/* binding */ staticRenderFns)
15063/* harmony export */ });
15064var render = function render() {
15065  var _this = this;
15066  var _vm = this,
15067    _c = _vm._self._c;
15068  return _c("div", {
15069    directives: [{
15070      name: "show",
15071      rawName: "v-show",
15072      value: _vm.isLoaded,
15073      expression: "isLoaded"
15074    }]
15075  }, [_c("div", {
15076    staticClass: "social-post"
15077  }, [_vm.socialPost ? _c("div", {
15078    staticClass: "social-post-om-block mt-24px m-tb-0"
15079  }, [_c("div", {
15080    staticClass: "social-post-om-header bg-dark-gray position-relative"
15081  }, [_c("button", {
15082    staticClass: "btn-social-back",
15083    on: {
15084      click: _vm.back
15085    }
15086  }, [_c("img", {
15087    attrs: {
15088      src: "/img/back_outline_white.svg"
15089    }
15090  })]), _vm._v(" "), _c("h4", {
15091    staticClass: "social-post-om-title text-center w-100 white"
15092  }, [_vm._v("\n                    貼文\n                ")])]), _vm._v(" "), _c("div", {
15093    staticClass: "social-post-om-header bg-dark-gray position-relative d-flex d-tb-none social-post-header"
15094  }, [_c("div", {
15095    staticClass: "d-flex align-items-center"
15096  }, [_c("router-link", {
15097    staticClass: "social-post-author-block",
15098    attrs: {
15099      to: {
15100        name: "socialUser",
15101        params: {
15102          name: _vm.socialPost.user.alias_name
15103        }
15104      }
15105    }
15106  }, [_c("img", {
15107    staticClass: "social-post-author-img h-35px",
15108    attrs: {
15109      src: _vm.socialPost.user.profile_image
15110    }
15111  })]), _vm._v(" "), _c("div", {
15112    staticClass: "d-flex flex-column"
15113  }, [_c("router-link", {
15114    staticClass: "social-post-author-block",
15115    attrs: {
15116      to: {
15117        name: "socialUser",
15118        params: {
15119          name: _vm.socialPost.user.alias_name
15120        }
15121      }
15122    }
15123  }, [_c("div", {
15124    staticClass: "social-post-author-name"
15125  }, [_vm._v("\n                                " + _vm._s(_vm.socialPost.user.name) + "\n                            ")])]), _vm._v(" "), _vm.socialPost.places.length > 0 ? _c("router-link", {
15126    staticClass: "social-post-check-in",
15127    attrs: {
15128      to: {
15129        name: "socialPlace",
15130        params: {
15131          id: _vm.socialPost.places[0].id
15132        }
15133      }
15134    }
15135  }, [_vm._v("\n                            " + _vm._s(_vm.socialPost.places[0].name) + "\n                        ")]) : _vm._e()], 1)], 1), _vm._v(" "), _c("div", {
15136    staticClass: "social-post-other-block"
15137  }, [!_vm.socialPost.user.is_self && !_vm.socialPost.user.is_follow ? _c("div", {
15138    staticClass: "btn social-post-unfollow btn-social-release position-relative",
15139    on: {
15140      click: _vm.follow
15141    }
15142  }, [_vm._v("\n                        追蹤\n                    ")]) : _vm._e(), _vm._v(" "), !_vm.socialPost.user.is_self && _vm.socialPost.user.is_follow ? _c("div", {
15143    staticClass: "btn social-post-follow btn-social-release position-relative",
15144    on: {
15145      click: _vm.unfollow
15146    }
15147  }, [_vm._v("\n                        已追蹤\n                    ")]) : _vm._e(), _vm._v(" "), _c("div", {
15148    staticClass: "btn social-post-more",
15149    attrs: {
15150      type: "button"
15151    },
15152    on: {
15153      click: _vm.openControls
15154    }
15155  }, [_vm._v("\n                        ...\n                    ")])])]), _vm._v(" "), _c("div", {
15156    staticClass: "social-post-om-body bg-dark-gray flex-center flex-xl-row flex-1100-row flex-column"
15157  }, [_vm.socialPost.medias[0].type === "video" ? _c("div", {
15158    staticClass: "social-post-video-block"
15159  }, [_c("video", {
15160    ref: "video",
15161    staticClass: "social-post-video",
15162    attrs: {
15163      controls: "",
15164      playsinline: ""
15165    }
15166  }, [_c("source", {
15167    attrs: {
15168      src: _vm.socialPost.medias[0].url
15169    }
15170  }), _vm._v("\n                        Sorry, your browser doesn't support embedded videos.\n                    ")])]) : _c("div", {
15171    staticClass: "social-post-img-block"
15172  }, [_c("swiper", {
15173    staticClass: "social-post-img social-post-img-swiper flex-center swiper",
15174    attrs: {
15175      options: _vm.swiperOption
15176    }
15177  }, _vm._l(_vm.socialPost.medias, function (media, index) {
15178    return _c("swiper-slide", {
15179      key: index
15180    }, [_c("img", {
15181      staticClass: "d-block",
15182      staticStyle: {
15183        width: "100%",
15184        height: "calc(var(--vh, 1vh) * 80)",
15185        "object-fit": "contain"
15186      },
15187      attrs: {
15188        src: media.url
15189      }
15190    }), _vm._v(" "), _c("div", {
15191      staticClass: "social-post-swiper-pagination",
15192      attrs: {
15193        slot: "pagination"
15194      },
15195      slot: "pagination"
15196    })]);
15197  }), 1)], 1), _vm._v(" "), _c("div", {
15198    staticClass: "social-post-content-block position-relative"
15199  }, [_c("div", {
15200    staticClass: "social-post-header d-none d-tb-flex"
15201  }, [_c("div", {
15202    staticClass: "d-flex align-items-center"
15203  }, [_c("router-link", {
15204    staticClass: "social-post-author-block",
15205    attrs: {
15206      to: {
15207        name: "socialUser",
15208        params: {
15209          name: _vm.socialPost.user.alias_name
15210        }
15211      }
15212    }
15213  }, [_c("img", {
15214    staticClass: "social-post-author-img",
15215    attrs: {
15216      src: _vm.socialPost.user.profile_image
15217    }
15218  })]), _vm._v(" "), _c("div", {
15219    staticClass: "d-flex flex-column"
15220  }, [_c("router-link", {
15221    staticClass: "social-post-author-block",
15222    attrs: {
15223      to: {
15224        name: "socialUser",
15225        params: {
15226          name: _vm.socialPost.user.alias_name
15227        }
15228      }
15229    }
15230  }, [_c("div", {
15231    staticClass: "social-post-author-name"
15232  }, [_vm._v("\n                                        " + _vm._s(_vm.socialPost.user.name) + "\n                                    ")])]), _vm._v(" "), _vm.socialPost.places.length > 0 ? _c("router-link", {
15233    staticClass: "social-post-check-in",
15234    attrs: {
15235      to: {
15236        name: "socialPlace",
15237        params: {
15238          id: _vm.socialPost.places[0].id
15239        }
15240      }
15241    }
15242  }, [_vm._v("\n                                    " + _vm._s(_vm.socialPost.places[0].name) + "\n                                ")]) : _vm._e()], 1)], 1), _vm._v(" "), _c("div", {
15243    staticClass: "social-post-other-block"
15244  }, [!_vm.socialPost.user.is_self && !_vm.socialPost.user.is_follow ? _c("div", {
15245    staticClass: "btn social-post-unfollow btn-social-release position-relative",
15246    on: {
15247      click: _vm.follow
15248    }
15249  }, [_vm._v("\n                                追蹤\n                            ")]) : _vm._e(), _vm._v(" "), !_vm.socialPost.user.is_self && _vm.socialPost.user.is_follow ? _c("div", {
15250    staticClass: "btn social-post-follow btn-social-release position-relative",
15251    on: {
15252      click: _vm.unfollow
15253    }
15254  }, [_vm._v("\n                                已追蹤\n                            ")]) : _vm._e(), _vm._v(" "), _c("div", {
15255    staticClass: "btn social-post-more",
15256    attrs: {
15257      type: "button"
15258    },
15259    on: {
15260      click: _vm.openControls
15261    }
15262  }, [_vm._v("\n                                ...\n                            ")])])]), _vm._v(" "), _c("div", {
15263    staticClass: "social-post-body"
15264  }, [_c("div", {
15265    staticClass: "social-post-interaction-block d-block d-tb-none"
15266  }, [_c("div", {
15267    staticClass: "social-post-interaction"
15268  }, [_c("div", {
15269    staticClass: "social-post-card-like social-post-like",
15270    on: {
15271      click: _vm.doLike
15272    }
15273  }, [_c("div", {
15274    "class": _vm.likeClassList
15275  })]), _vm._v(" "), _c("a", {
15276    staticClass: "btn social-post-comment-btn bg-basic",
15277    attrs: {
15278      href: "#"
15279    },
15280    on: {
15281      click: function click($event) {
15282        $event.preventDefault();
15283        return _vm.$refs.commentList.startCommentWithMobile();
15284      }
15285    }
15286  }), _vm._v(" "), _c("div", {
15287    staticClass: "btn social-post-share-btn bg-basic",
15288    attrs: {
15289      type: "button"
15290    },
15291    on: {
15292      click: _vm.startShare
15293    }
15294  }), _vm._v(" "), _c("div", {
15295    staticClass: "social-post-like-number"
15296  }, [_vm._v("\n                                    " + _vm._s(_vm.socialPost.like_count) + "個讚\n                                ")])])]), _vm._v(" "), _c("div", {
15297    staticClass: "social-post-body-user d-flex d-tb-none"
15298  }, [_c("div", {
15299    staticClass: "social-post-author-block w-100"
15300  }, [_c("img", {
15301    staticClass: "social-post-author-img h-20px w-20px",
15302    attrs: {
15303      src: _vm.socialPost.user.profile_image
15304    }
15305  }), _vm._v(" "), _c("span", {
15306    staticClass: "social-post-author-name fz-14"
15307  }, [_vm._v(_vm._s(_vm.socialPost.user.name))])])]), _vm._v(" "), _vm.socialPost.title ? _c("div", {
15308    staticClass: "social-post-title w-100"
15309  }, [_vm._v("\n                            " + _vm._s(_vm.socialPost.title) + "\n                        ")]) : _vm._e(), _vm._v(" "), _vm.socialPost.description ? _c("div", {
15310    staticClass: "social-post-content w-100"
15311  }, [_c("SocialContent", {
15312    attrs: {
15313      content: _vm.socialPost.description
15314    }
15315  })], 1) : _vm._e(), _vm._v(" "), _c("div", {
15316    staticClass: "social-post-meta"
15317  }, [_c("div", {
15318    staticClass: "social-post-date d-inline-block"
15319  }, [_c("TimeFormat", {
15320    attrs: {
15321      time: _vm.socialPost.created_at
15322    }
15323  })], 1), _vm._v(" "), _vm.socialPost.friends.length > 0 ? _c("div", {
15324    staticClass: "social-post-tag-friend",
15325    attrs: {
15326      type: "button"
15327    },
15328    on: {
15329      click: _vm.showFriends
15330    }
15331  }, [_vm._v("\n                                標註好友\n                            ")]) : _vm._e()]), _vm._v(" "), _vm.socialPost.comment_count > 0 ? _c("div", {
15332    staticClass: "social-post-comment-count"
15333  }, [_vm._v("\n                            共" + _vm._s(_vm.socialPost.comment_count) + "則留言\n                        ")]) : _vm._e(), _vm._v(" "), _c("SocialPostCommentList", {
15334    ref: "commentList",
15335    attrs: {
15336      socialPost: _vm.socialPost,
15337      commentId: _vm.$route.params.commentId,
15338      isAdminLoggedIn: _vm.isAdminLoggedIn
15339    },
15340    on: {
15341      "hook:mounted": function hookMounted($event) {
15342        _vm.commentListMounted = true;
15343      },
15344      "hook:destroyed": function hookDestroyed($event) {
15345        _vm.commentListMounted = false;
15346      }
15347    },
15348    scopedSlots: _vm._u([{
15349      key: "like",
15350      fn: function fn() {
15351        return [_c("div", {
15352          staticClass: "social-post-card-like social-post-like",
15353          on: {
15354            click: _vm.doLike
15355          }
15356        }, [_c("div", {
15357          "class": _vm.likeClassList
15358        })])];
15359      },
15360      proxy: true
15361    }], null, false, 1588297847)
15362  })], 1), _vm._v(" "), _vm.commentListMounted ? _c("div", {
15363    staticClass: "social-post-interaction-block d-none d-tb-block"
15364  }, [_c("div", {
15365    staticClass: "position-relative"
15366  }, [_vm.tags.length > 0 ? _c("div", {
15367    staticClass: "social-tag-block d-tb-block d-none",
15368    staticStyle: {
15369      bottom: "0px",
15370      left: "0%"
15371    }
15372  }, _vm._l(_vm.tags, function (tag) {
15373    return _c("div", {
15374      key: tag.id,
15375      staticClass: "social-tag-list",
15376      on: {
15377        click: function click($event) {
15378          return _vm.addTag(tag);
15379        }
15380      }
15381    }, [_vm._v("\n                                    #" + _vm._s(tag.name) + "\n                                ")]);
15382  }), 0) : _vm._e(), _vm._v(" "), _vm.users.length > 0 ? _c("div", {
15383    staticClass: "social-tag-block d-tb-block d-none",
15384    staticStyle: {
15385      bottom: "0px",
15386      left: "0%"
15387    }
15388  }, _vm._l(_vm.users, function (user) {
15389    return _c("div", {
15390      key: user.id,
15391      staticClass: "social-tag-list",
15392      on: {
15393        click: function click($event) {
15394          return _vm.addUser(user);
15395        }
15396      }
15397    }, [_c("img", {
15398      staticClass: "social-tag-list-user-image",
15399      attrs: {
15400        src: user.profile_image
15401      }
15402    }), _vm._v(" "), _c("div", {
15403      staticClass: "d-flex flex-column"
15404    }, [_c("div", {
15405      staticClass: "social-tag-list-user-name"
15406    }, [_vm._v("\n                                            " + _vm._s(user.name) + "\n                                        ")]), _vm._v(" "), _c("div", {
15407      staticClass: "social-tag-list-user-name-id"
15408    }, [_vm._v("\n                                            @" + _vm._s(user.alias_name) + "\n                                        ")])])]);
15409  }), 0) : _vm._e()]), _vm._v(" "), _c("div", {
15410    directives: [{
15411      name: "show",
15412      rawName: "v-show",
15413      value: _vm.$refs.commentList.isReply,
15414      expression: "$refs.commentList.isReply"
15415    }],
15416    staticClass: "social-post-comment-reply-remind"
15417  }, [_vm._v("\n                            您正在回覆\n                            "), _c("span", {
15418    staticClass: "social-post-comment-reply-remind-user"
15419  }, [_vm._v("\n                                " + _vm._s(_vm.$refs.commentList.replyUser) + " ")]), _vm._v("的留言\n                            "), _c("img", {
15420    staticClass: "social-post-comment-reply-remind-close",
15421    attrs: {
15422      src: "/img/close_outline_white.svg"
15423    },
15424    on: {
15425      click: _vm.$refs.commentList.endReply
15426    }
15427  })]), _vm._v(" "), _c("div", {
15428    staticClass: "social-post-interaction"
15429  }, [_c("div", {
15430    staticClass: "social-post-card-like social-post-like",
15431    on: {
15432      click: _vm.doLike
15433    }
15434  }, [_c("div", {
15435    "class": _vm.likeClassList
15436  })]), _vm._v(" "), _c("div", {
15437    staticClass: "btn social-post-comment-btn bg-basic",
15438    on: {
15439      click: _vm.startComment
15440    }
15441  }), _vm._v(" "), _c("div", {
15442    staticClass: "btn social-post-share-btn bg-basic",
15443    attrs: {
15444      type: "button"
15445    },
15446    on: {
15447      click: _vm.startShare
15448    }
15449  }), _vm._v(" "), _c("div", {
15450    staticClass: "social-post-like-number"
15451  }, [_vm._v("\n                                " + _vm._s(_vm.socialPost.like_count) + "個讚\n                            ")]), _vm._v(" "), _c("div", {
15452    staticClass: "position-relative mt-8px h-37px"
15453  }, [_c("form", {
15454    staticClass: "social-post-comment-input-block position-absolute w-100 mt-0",
15455    on: {
15456      submit: function submit($event) {
15457        $event.preventDefault();
15458        return _vm.createComment.apply(null, arguments);
15459      }
15460    }
15461  }, [_c("SocialContentInput", {
15462    ref: "socialContentInput",
15463    staticClass: "social-post-comment-input",
15464    attrs: {
15465      placeholder: "留言⋯"
15466    },
15467    on: {
15468      change: _vm.onCommentInputChange,
15469      showTags: _vm.showTags,
15470      showUsers: _vm.showUsers
15471    }
15472  }), _vm._v(" "), _c("button", {
15473    staticClass: "btn social-post-comment-submit"
15474  }, [_vm._v("\n                                        發佈\n                                    ")])], 1), _vm._v(" "), _c("form", {
15475    directives: [{
15476      name: "show",
15477      rawName: "v-show",
15478      value: _vm.$refs.commentList.isReply,
15479      expression: "$refs.commentList.isReply"
15480    }],
15481    staticClass: "social-post-comment-input-block position-absolute w-100 mt-0",
15482    on: {
15483      submit: function submit($event) {
15484        $event.preventDefault();
15485        return _vm.createReply.apply(null, arguments);
15486      }
15487    }
15488  }, [_c("SocialContentInput", {
15489    ref: "replySocialContentInput",
15490    staticClass: "social-post-comment-input",
15491    attrs: {
15492      placeholder: "留言⋯"
15493    },
15494    on: {
15495      change: _vm.onReplyInputChange,
15496      showTags: _vm.showTags,
15497      showUsers: _vm.showUsers
15498    }
15499  }), _vm._v(" "), _c("button", {
15500    staticClass: "btn social-post-comment-submit"
15501  }, [_vm._v("\n                                        發佈\n                                    ")])], 1)])])]) : _vm._e()])])]) : _vm._e(), _vm._v(" "), !_vm.socialPost ? _c("div", {
15502    staticClass: "social-post-om-block mt-24px m-tb-0"
15503  }, [_c("div", {
15504    staticClass: "social-post-om-header bg-dark-gray position-relative d-block d-tb-none"
15505  }, [_c("button", {
15506    staticClass: "btn-social-back",
15507    on: {
15508      click: _vm.back
15509    }
15510  }, [_c("img", {
15511    attrs: {
15512      src: "/img/back_outline_white.svg"
15513    }
15514  })]), _vm._v(" "), _c("h4", {
15515    staticClass: "social-post-om-title text-center w-100 white"
15516  }, [_vm._v("\n                    找不到內容\n                ")])])]) : _vm._e(), _vm._v(" "), !_vm.socialPost ? _c("div", {
15517    staticClass: "social-post-error-block flex-center"
15518  }, [_c("img", {
15519    staticClass: "social-post-error-img",
15520    attrs: {
15521      src: "/img/error_outline_white.svg"
15522    }
15523  }), _vm._v(" "), _c("div", {
15524    staticClass: "social-post-error-title"
15525  }, [_vm._v("目前無法查看此內容")]), _vm._v(" "), _c("div", {
15526    staticClass: "social-post-error-text"
15527  }, [_vm._v("\n                會發生此情況,通常是因為擁有者變更了分享對象或是刪除了內容\n            ")]), _vm._v(" "), _c("button", {
15528    staticClass: "btn-social-post-error",
15529    on: {
15530      click: function click() {
15531        _this.$router.push({
15532          name: "social"
15533        });
15534      }
15535    }
15536  }, [_vm._v("\n                回到動態主頁\n            ")]), _vm._v(" "), _c("a", {
15537    staticClass: "btn-social-post-error-text",
15538    attrs: {
15539      href: "#"
15540    },
15541    on: {
15542      click: _vm.back
15543    }
15544  }, [_vm._v("返回")])]) : _vm._e()]), _vm._v(" "), _c("SocialPostEditModal", {
15545    ref: "editModal",
15546    on: {
15547      saved: _vm.updated
15548    }
15549  }), _vm._v(" "), _c("SocialShareModal", {
15550    ref: "shareModal",
15551    attrs: {
15552      title: "Share This Post !",
15553      copyTitle: "複製文章連結"
15554    },
15555    on: {
15556      share: _vm.share
15557    }
15558  }), _vm._v(" "), _c("SocialConfirmModal", {
15559    ref: "deleteConfirmModal",
15560    attrs: {
15561      title: "刪除貼文?",
15562      description: "確定要永久刪除此篇貼文?",
15563      actionText: "刪除"
15564    },
15565    on: {
15566      action: _vm.destroy
15567    }
15568  }), _vm._v(" "), _c("ReportModal", {
15569    ref: "reportModal",
15570    attrs: {
15571      title: "您檢舉本篇貼文的原因為何?",
15572      type: "1"
15573    }
15574  }), _vm._v(" "), _vm.socialPost ? _c("SocialUserModal", {
15575    ref: "friendModal",
15576    attrs: {
15577      title: "標註好友",
15578      users: _vm.socialPost.friends
15579    }
15580  }) : _vm._e()], 1);
15581};
15582var staticRenderFns = [];
15583render._withStripped = true;
15584
15585
15586/***/ }),
15587
15588/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostReplyList.vue?vue&type=template&id=7e3367e0":
15589/*!************************************************************************************************************************************************************************************************************************************************************************************************!*\
15590  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostReplyList.vue?vue&type=template&id=7e3367e0 ***!
15591  \************************************************************************************************************************************************************************************************************************************************************************************************/
15592/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
15593
15594"use strict";
15595__webpack_require__.r(__webpack_exports__);
15596/* harmony export */ __webpack_require__.d(__webpack_exports__, {
15597/* harmony export */   render: () => (/* binding */ render),
15598/* harmony export */   staticRenderFns: () => (/* binding */ staticRenderFns)
15599/* harmony export */ });
15600var render = function render() {
15601  var _vm = this,
15602    _c = _vm._self._c;
15603  return _c("div", [_c("div", {
15604    staticClass: "social-post-comment-reply-all"
15605  }, _vm._l(_vm.replies, function (reply) {
15606    return _c("SocialPostComment", {
15607      key: reply.id,
15608      attrs: {
15609        comment: reply,
15610        showDeleteSuccess: _vm.showDeleteSuccess,
15611        isAdminLoggedIn: _vm.isAdminLoggedIn
15612      }
15613    });
15614  }), 1), _vm._v(" "), _vm.replies.length < _vm.totalCount ? _c("h4", {
15615    directives: [{
15616      name: "show",
15617      rawName: "v-show",
15618      value: !_vm.isLoading,
15619      expression: "!isLoading"
15620    }],
15621    staticClass: "commentbtn social-post-comment-read-more",
15622    on: {
15623      click: function click($event) {
15624        $event.preventDefault();
15625        return _vm.load.apply(null, arguments);
15626      }
15627    }
15628  }, [_vm._v("\n        MORE\n    ")]) : _vm._e(), _vm._v(" "), _c("div", {
15629    directives: [{
15630      name: "show",
15631      rawName: "v-show",
15632      value: _vm.showReply,
15633      expression: "showReply"
15634    }],
15635    staticClass: "position-relative"
15636  }, [_vm.tags.length > 0 ? _c("div", {
15637    staticClass: "social-tag-block",
15638    staticStyle: {
15639      bottom: "50px",
15640      left: "0%"
15641    }
15642  }, _vm._l(_vm.tags, function (tag) {
15643    return _c("div", {
15644      key: tag.id,
15645      staticClass: "social-tag-list",
15646      on: {
15647        click: function click($event) {
15648          return _vm.addTag(tag);
15649        }
15650      }
15651    }, [_vm._v("\n                #" + _vm._s(tag.name) + "\n            ")]);
15652  }), 0) : _vm._e(), _vm._v(" "), _vm.users.length > 0 ? _c("div", {
15653    staticClass: "social-tag-block",
15654    staticStyle: {
15655      bottom: "50px",
15656      left: "0%"
15657    }
15658  }, _vm._l(_vm.users, function (user) {
15659    return _c("div", {
15660      key: user.id,
15661      staticClass: "social-tag-list",
15662      on: {
15663        click: function click($event) {
15664          return _vm.addUser(user);
15665        }
15666      }
15667    }, [_c("img", {
15668      staticClass: "social-tag-list-user-image",
15669      attrs: {
15670        src: user.profile_image
15671      }
15672    }), _vm._v(" "), _c("div", {
15673      staticClass: "d-flex flex-column"
15674    }, [_c("div", {
15675      staticClass: "social-tag-list-user-name"
15676    }, [_vm._v("\n                        " + _vm._s(user.name) + "\n                    ")]), _vm._v(" "), _c("div", {
15677      staticClass: "social-tag-list-user-name-id"
15678    }, [_vm._v("\n                        @" + _vm._s(user.alias_name) + "\n                    ")])])]);
15679  }), 0) : _vm._e(), _vm._v(" "), _c("form", {
15680    staticClass: "social-post-comment-input-block d-flex d-tb-none",
15681    on: {
15682      submit: function submit($event) {
15683        $event.preventDefault();
15684        return _vm.create.apply(null, arguments);
15685      }
15686    }
15687  }, [_c("SocialContentInput", {
15688    ref: "socialContentInput",
15689    staticClass: "social-post-comment-input",
15690    attrs: {
15691      placeholder: "留言⋯"
15692    },
15693    on: {
15694      showTags: _vm.showTags,
15695      showUsers: _vm.showUsers
15696    }
15697  }), _vm._v(" "), _c("button", {
15698    staticClass: "btn social-post-comment-submit"
15699  }, [_vm._v("發佈")])], 1)])]);
15700};
15701var staticRenderFns = [];
15702render._withStripped = true;
15703
15704
15705/***/ }),
15706
15707/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialSearchModal.vue?vue&type=template&id=970b0d46":
15708/*!**********************************************************************************************************************************************************************************************************************************************************************************************!*\
15709  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialSearchModal.vue?vue&type=template&id=970b0d46 ***!
15710  \**********************************************************************************************************************************************************************************************************************************************************************************************/
15711/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
15712
15713"use strict";
15714__webpack_require__.r(__webpack_exports__);
15715/* harmony export */ __webpack_require__.d(__webpack_exports__, {
15716/* harmony export */   render: () => (/* binding */ render),
15717/* harmony export */   staticRenderFns: () => (/* binding */ staticRenderFns)
15718/* harmony export */ });
15719var render = function render() {
15720  var _vm = this,
15721    _c = _vm._self._c;
15722  return _c("div", [_c("div", {
15723    ref: "modal",
15724    staticClass: "social-modal-min-full modal p-0 fade",
15725    attrs: {
15726      tabindex: "-1"
15727    }
15728  }, [_c("div", {
15729    staticClass: "modal-dialog modal-dialog-centered modal-block m-tb-0"
15730  }, [_c("div", {
15731    staticClass: "modal-content"
15732  }, [_c("div", {
15733    staticClass: "modal-header bg-dark-gray position-relative"
15734  }, [_c("button", {
15735    staticClass: "btn-social-back",
15736    attrs: {
15737      type: "button"
15738    },
15739    on: {
15740      click: _vm.hide
15741    }
15742  }, [_c("img", {
15743    attrs: {
15744      src: "/img/back_outline_white.svg",
15745      alt: ""
15746    }
15747  })]), _vm._v(" "), _c("h4", {
15748    staticClass: "modal-title text-center w-100 white"
15749  }, [_vm._v("\n                        搜尋\n                    ")])]), _vm._v(" "), _c("div", {
15750    staticClass: "modal-body bg-dark-gray flex-column p-0"
15751  }, [_c("div", {
15752    staticClass: "social-post-report-declare-block social-message-search-block"
15753  }, [_c("input", {
15754    directives: [{
15755      name: "model",
15756      rawName: "v-model",
15757      value: _vm.keyword,
15758      expression: "keyword"
15759    }],
15760    staticClass: "social-post-report-user-search w-100",
15761    attrs: {
15762      type: "text",
15763      placeholder: "搜尋"
15764    },
15765    domProps: {
15766      value: _vm.keyword
15767    },
15768    on: {
15769      input: function input($event) {
15770        if ($event.target.composing) return;
15771        _vm.keyword = $event.target.value;
15772      }
15773    }
15774  })]), _vm._v(" "), _vm.keyword == "" && _vm.result.length > 0 ? _c("div", {
15775    staticClass: "social-search-list-block"
15776  }, [_c("div", {
15777    staticClass: "social-search-list-title white"
15778  }, [_vm._v("\n                            最近\n                        ")]), _vm._v(" "), _c("div", {
15779    staticClass: "btn social-search-clear-btn red p-0",
15780    on: {
15781      click: function click($event) {
15782        return _vm.startDelete();
15783      }
15784    }
15785  }, [_vm._v("\n                            全部清除\n                        ")])]) : _vm._e(), _vm._v(" "), _c("div", {
15786    staticClass: "social-post-report-options-section social-search-options-section"
15787  }, [_c("div", {
15788    staticClass: "social-post-report-options-block"
15789  }, _vm._l(_vm.result, function (object, index) {
15790    return _c("div", {
15791      key: index,
15792      staticClass: "social-post-report-options"
15793    }, [object.search_tag ? _c("div", {
15794      staticClass: "social-post-report-user-data d-flex align-items-center",
15795      on: {
15796        click: function click($event) {
15797          return _vm.toTagPage(object.search_tag);
15798        }
15799      }
15800    }, [_c("img", {
15801      staticClass: "social-post-report-user-img",
15802      attrs: {
15803        src: "/img/hashtag_fill_white_black_circle.svg"
15804      }
15805    }), _vm._v(" "), _c("div", {
15806      staticClass: "social-search-hashtag-name"
15807    }, [_vm._v("\n                                        #" + _vm._s(object.search_tag.name) + "\n                                    ")])]) : object.search_user ? _c("div", {
15808      staticClass: "social-post-report-user-data d-flex align-items-center",
15809      on: {
15810        click: function click($event) {
15811          return _vm.toUserPage(object.search_user);
15812        }
15813      }
15814    }, [_c("img", {
15815      staticClass: "social-post-report-user-img",
15816      attrs: {
15817        src: object.search_user.profile_image
15818      }
15819    }), _vm._v(" "), _c("div", {
15820      staticClass: "social-post-report-user-name"
15821    }, [_vm._v("\n                                        " + _vm._s(object.search_user.name) + "\n                                    ")])]) : object.search_place ? _c("div", {
15822      staticClass: "social-post-report-user-data d-flex align-items-center",
15823      on: {
15824        click: function click($event) {
15825          return _vm.toPlacePage(object.search_place);
15826        }
15827      }
15828    }, [_c("img", {
15829      staticClass: "social-post-report-user-img",
15830      attrs: {
15831        src: "/img/check_in_fill_white_black_circle.svg"
15832      }
15833    }), _vm._v(" "), _c("div", {
15834      staticClass: "social-search-check-in-block"
15835    }, [_c("div", {
15836      staticClass: "social-search-check-in-name"
15837    }, [_vm._v("\n                                            " + _vm._s(object.search_place.name) + "\n                                        ")]), _vm._v(" "), object.search_place.address ? _c("div", {
15838      staticClass: "social-search-check-in-address"
15839    }, [_vm._v("\n                                            " + _vm._s(object.search_place.address) + "\n                                        ")]) : _vm._e()])]) : _vm._e(), _vm._v(" "), _vm.keyword == "" ? _c("div", {
15840      staticClass: "btn social-search-list-delete-btn bg-basic",
15841      on: {
15842        click: function click($event) {
15843          return _vm.destroy(object.id);
15844        }
15845      }
15846    }) : _vm._e()]);
15847  }), 0), _vm._v(" "), _vm.result.length > 0 ? _c("div", {
15848    staticClass: "social-post-report-last-hr"
15849  }) : _vm._e(), _vm._v(" "), _vm.keyword != "" && _vm.result.length == 0 ? _c("div", {
15850    staticClass: "social-message-list-search-not"
15851  }, [_vm._v("\n                            查無搜尋結果\n                        ")]) : _vm._e()])])])])]), _vm._v(" "), _c("SocialConfirmModal", {
15852    ref: "deleteConfirmModal",
15853    attrs: {
15854      title: "清除搜尋紀錄?",
15855      description: "清除後搜尋紀錄將無法復原",
15856      actionText: "清除"
15857    },
15858    on: {
15859      action: _vm.destroy
15860    }
15861  })], 1);
15862};
15863var staticRenderFns = [];
15864render._withStripped = true;
15865
15866
15867/***/ }),
15868
15869/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialSelectUserModal.vue?vue&type=template&id=21ad6efe":
15870/*!**************************************************************************************************************************************************************************************************************************************************************************************************!*\
15871  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialSelectUserModal.vue?vue&type=template&id=21ad6efe ***!
15872  \**************************************************************************************************************************************************************************************************************************************************************************************************/
15873/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
15874
15875"use strict";
15876__webpack_require__.r(__webpack_exports__);
15877/* harmony export */ __webpack_require__.d(__webpack_exports__, {
15878/* harmony export */   render: () => (/* binding */ render),
15879/* harmony export */   staticRenderFns: () => (/* binding */ staticRenderFns)
15880/* harmony export */ });
15881var render = function render() {
15882  var _vm = this,
15883    _c = _vm._self._c;
15884  return _c("div", {
15885    ref: "modal",
15886    staticClass: "social-modal-min-full modal p-0 fade",
15887    attrs: {
15888      tabindex: "-1"
15889    }
15890  }, [_c("div", {
15891    staticClass: "modal-dialog modal-dialog-centered modal-block m-tb-0"
15892  }, [_c("div", {
15893    staticClass: "modal-content"
15894  }, [_c("div", {
15895    staticClass: "modal-header bg-dark-gray position-relative"
15896  }, [_c("button", {
15897    staticClass: "btn-social-back",
15898    attrs: {
15899      type: "button"
15900    },
15901    on: {
15902      click: _vm.hide
15903    }
15904  }, [_c("img", {
15905    attrs: {
15906      src: "/img/back_outline_white.svg",
15907      alt: ""
15908    }
15909  })]), _vm._v(" "), _c("h4", {
15910    staticClass: "modal-title text-center w-100 white"
15911  }, [_vm._v("\n          " + _vm._s(_vm.title) + "\n        ")])]), _vm._v(" "), _c("div", {
15912    staticClass: "modal-body bg-dark-gray flex-column p-0"
15913  }, [_c("div", {
15914    staticClass: "social-post-report-declare-block social-message-search-block"
15915  }, [_c("input", {
15916    directives: [{
15917      name: "model",
15918      rawName: "v-model",
15919      value: _vm.keyword,
15920      expression: "keyword"
15921    }],
15922    staticClass: "social-post-report-user-search w-100",
15923    attrs: {
15924      type: "text",
15925      placeholder: "搜尋朋友"
15926    },
15927    domProps: {
15928      value: _vm.keyword
15929    },
15930    on: {
15931      input: function input($event) {
15932        if ($event.target.composing) return;
15933        _vm.keyword = $event.target.value;
15934      }
15935    }
15936  })]), _vm._v(" "), _c("div", {
15937    staticClass: "social-message-select-user-block"
15938  }, _vm._l(_vm.selectedUsers, function (user) {
15939    return _c("div", {
15940      key: user.id,
15941      staticClass: "social-message-select-user",
15942      on: {
15943        click: function click($event) {
15944          return _vm.removeUser(user);
15945        }
15946      }
15947    }, [_vm._v("\n            " + _vm._s(user.name) + "\n          ")]);
15948  }), 0), _vm._v(" "), _c("div", {
15949    staticClass: "social-post-report-options-section"
15950  }, [_c("div", {
15951    staticClass: "social-post-report-options-block"
15952  }, _vm._l(_vm.users, function (user) {
15953    return _c("div", {
15954      key: user.id,
15955      staticClass: "social-post-report-options",
15956      on: {
15957        click: function click($event) {
15958          return _vm.selectUser(user);
15959        }
15960      }
15961    }, [_c("div", {
15962      staticClass: "social-post-report-user-data d-flex align-items-center"
15963    }, [_c("img", {
15964      staticClass: "social-post-report-user-img",
15965      attrs: {
15966        src: user.profile_image
15967      }
15968    }), _vm._v(" "), _c("div", {
15969      staticClass: "social-post-report-user-name"
15970    }, [_vm._v("\n                  " + _vm._s(user.name) + "\n                ")])]), _vm._v(" "), _c("input", {
15971      staticClass: "social-post-report-radio",
15972      attrs: {
15973        type: "checkbox"
15974      },
15975      domProps: {
15976        checked: _vm.getIsChecked(user)
15977      }
15978    })]);
15979  }), 0), _vm._v(" "), _c("div", {
15980    staticClass: "social-post-report-last-hr"
15981  }), _vm._v(" "), _c("div", {
15982    directives: [{
15983      name: "show",
15984      rawName: "v-show",
15985      value: _vm.users.length == 0,
15986      expression: "users.length == 0"
15987    }],
15988    staticClass: "social-message-list-search-not"
15989  }, [_vm._v("\n            查無搜尋結果\n          ")])]), _vm._v(" "), _c("div", {
15990    staticClass: "btn-social-post-report-block"
15991  }, [_c("input", {
15992    "class": {
15993      "btn-social-post-report": true,
15994      "btn-social-post-report-fill-in": _vm.canSubmit,
15995      "btn-social-post-report-un-fill-in": !_vm.canSubmit
15996    },
15997    attrs: {
15998      type: "button",
15999      disabled: !_vm.canSubmit,
16000      value: "提交"
16001    },
16002    on: {
16003      click: _vm.submit
16004    }
16005  })])])])])]);
16006};
16007var staticRenderFns = [];
16008render._withStripped = true;
16009
16010
16011/***/ }),
16012
16013/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialShareModal.vue?vue&type=template&id=aec0eb74":
16014/*!*********************************************************************************************************************************************************************************************************************************************************************************************!*\
16015  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialShareModal.vue?vue&type=template&id=aec0eb74 ***!
16016  \*********************************************************************************************************************************************************************************************************************************************************************************************/
16017/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
16018
16019"use strict";
16020__webpack_require__.r(__webpack_exports__);
16021/* harmony export */ __webpack_require__.d(__webpack_exports__, {
16022/* harmony export */   render: () => (/* binding */ render),
16023/* harmony export */   staticRenderFns: () => (/* binding */ staticRenderFns)
16024/* harmony export */ });
16025var render = function render() {
16026  var _vm = this,
16027    _c = _vm._self._c;
16028  return _c("div", [_c("div", {
16029    ref: "modal",
16030    staticClass: "shareModal social-modal modal fade",
16031    attrs: {
16032      id: "social-post-share",
16033      tabindex: "-1"
16034    }
16035  }, [_c("div", {
16036    staticClass: "modal-dialog modal-dialog-centered modal-block flex-column justify-content-center"
16037  }, [_c("div", {
16038    staticClass: "modal-content social-post-share-modal-cotent"
16039  }, [_c("div", {
16040    staticClass: "modal-body bg-dark-gray flex-center"
16041  }, [_c("h2", {
16042    staticClass: "modal-title social-post-share-modal-title"
16043  }, [_vm._v("\n            " + _vm._s(_vm.title) + "\n          ")]), _vm._v(" "), _c("button", {
16044    staticClass: "btn-close close btn-social-post-share-close",
16045    attrs: {
16046      type: "button"
16047    },
16048    on: {
16049      click: _vm.hide
16050    }
16051  }, [_c("img", {
16052    attrs: {
16053      src: "/img/close_outline_white.svg",
16054      alt: ""
16055    }
16056  })])]), _vm._v(" "), _c("div", {
16057    staticClass: "modal-body"
16058  }, [_c("div", {
16059    staticClass: "social-post-share-modal-sub-title"
16060  }, [_vm._v("分享到社群平台")]), _vm._v(" "), _c("div", {
16061    staticClass: "facebookShareBtn social-message-share-btn",
16062    on: {
16063      click: _vm.startShare
16064    }
16065  }), _vm._v(" "), _c("a", {
16066    staticClass: "facebookShareBtn",
16067    attrs: {
16068      href: "https://www.facebook.com/sharer/sharer.php?u=" + _vm.url,
16069      target: "_blank"
16070    }
16071  }), _vm._v(" "), _c("div", {
16072    staticClass: "social-post-share-modal-sub-title"
16073  }, [_vm._v(_vm._s(_vm.copyTitle))]), _vm._v(" "), _c("div", {
16074    staticClass: "field d-flex align-items-center justify-content-between"
16075  }), _vm._v(" "), _c("input", {
16076    directives: [{
16077      name: "model",
16078      rawName: "v-model",
16079      value: _vm.url,
16080      expression: "url"
16081    }],
16082    staticClass: "social-post-share-copy-link",
16083    attrs: {
16084      type: "text"
16085    },
16086    domProps: {
16087      value: _vm.url
16088    },
16089    on: {
16090      input: function input($event) {
16091        if ($event.target.composing) return;
16092        _vm.url = $event.target.value;
16093      }
16094    }
16095  }), _vm._v(" "), _c("button", {
16096    staticClass: "btn-social-release position-relative btn-social-post-share-copy-link",
16097    attrs: {
16098      type: "button"
16099    },
16100    on: {
16101      click: function click($event) {
16102        $event.preventDefault();
16103        return _vm.copy.apply(null, arguments);
16104      }
16105    }
16106  }, [_vm._v("\n            複製\n          ")])])])])]), _vm._v(" "), _c("ChatSelectUserModal", {
16107    ref: "chatSelectUserModal",
16108    attrs: {
16109      title: "分享",
16110      textRequired: false
16111    },
16112    on: {
16113      submit: _vm.share
16114    }
16115  })], 1);
16116};
16117var staticRenderFns = [];
16118render._withStripped = true;
16119
16120
16121/***/ }),
16122
16123/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialTagPage.vue?vue&type=template&id=471d22c1":
16124/*!******************************************************************************************************************************************************************************************************************************************************************************************!*\
16125  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialTagPage.vue?vue&type=template&id=471d22c1 ***!
16126  \******************************************************************************************************************************************************************************************************************************************************************************************/
16127/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
16128
16129"use strict";
16130__webpack_require__.r(__webpack_exports__);
16131/* harmony export */ __webpack_require__.d(__webpack_exports__, {
16132/* harmony export */   render: () => (/* binding */ render),
16133/* harmony export */   staticRenderFns: () => (/* binding */ staticRenderFns)
16134/* harmony export */ });
16135var render = function render() {
16136  var _vm = this,
16137    _c = _vm._self._c;
16138  return _vm.tag ? _c("div", [_c("div", {
16139    staticClass: "social-hashtag",
16140    attrs: {
16141      id: "social-personal-page"
16142    }
16143  }, [_c("div", {
16144    staticClass: "social-post-om-block m-tb-0 position-relative"
16145  }, [_c("div", {
16146    staticClass: "social-post-om-header bg-dark-gray position-relative d-flex d-tb-none align-items-center"
16147  }, [_c("button", {
16148    staticClass: "btn-social-back",
16149    on: {
16150      click: _vm.back
16151    }
16152  }, [_c("img", {
16153    attrs: {
16154      src: "/img/back_outline_white.svg",
16155      alt: ""
16156    }
16157  })]), _vm._v(" "), _c("h4", {
16158    staticClass: "social-post-om-title text-center w-100 white mx-32px"
16159  }, [_vm._v("\n          #" + _vm._s(_vm.tag.name) + "\n        ")])]), _vm._v(" "), _c("div", {
16160    staticClass: "social-hashtag-block"
16161  }, [_c("div", {
16162    staticClass: "d-flex align-items-center"
16163  }, [_c("img", {
16164    staticClass: "social-hashtag-title-image",
16165    attrs: {
16166      src: "/img/hashtag_fill_white_black_circle.svg"
16167    }
16168  }), _vm._v(" "), _c("div", {
16169    staticClass: "social-hashtag-content-block"
16170  }, [_c("div", {
16171    staticClass: "social-hashtag-content-title d-none d-tb-inline-block"
16172  }, [_vm._v("\n              #" + _vm._s(_vm.tag.name) + "\n            ")]), _vm._v(" "), _c("div", {
16173    staticClass: "social-hashtag-content-post-count"
16174  }, [_vm._v("\n              " + _vm._s(_vm.tag.post_count) + "\n              "), _vm._v(" "), _c("span", {
16175    staticClass: "social-hashtag-content-post"
16176  }, [_vm._v("貼文")])])])])]), _vm._v(" "), _c("div", {
16177    staticClass: "social-personal-page-block"
16178  }, [_c("SocialPostList", {
16179    attrs: {
16180      apiUrl: "/api/social/post/tag/" + _vm.tag.id
16181    }
16182  }, [_c("div", {
16183    staticClass: "white mt-16px"
16184  }, [_vm._v("尚無貼文")])])], 1)])])]) : _vm._e();
16185};
16186var staticRenderFns = [];
16187render._withStripped = true;
16188
16189
16190/***/ }),
16191
16192/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialUpload.vue?vue&type=template&id=0517e8b9":
16193/*!*****************************************************************************************************************************************************************************************************************************************************************************************!*\
16194  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialUpload.vue?vue&type=template&id=0517e8b9 ***!
16195  \*****************************************************************************************************************************************************************************************************************************************************************************************/
16196/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
16197
16198"use strict";
16199__webpack_require__.r(__webpack_exports__);
16200/* harmony export */ __webpack_require__.d(__webpack_exports__, {
16201/* harmony export */   render: () => (/* binding */ render),
16202/* harmony export */   staticRenderFns: () => (/* binding */ staticRenderFns)
16203/* harmony export */ });
16204var render = function render() {
16205  var _vm = this,
16206    _c = _vm._self._c;
16207  return _c("div", {
16208    ref: "modal",
16209    staticClass: "edit-social-post-modal modal fade",
16210    attrs: {
16211      id: "edit-social-upload",
16212      tabindex: "-1"
16213    }
16214  }, [_c("button", {
16215    staticClass: "btn-edit-social-close close d-none d-lg-block",
16216    attrs: {
16217      type: "button"
16218    },
16219    on: {
16220      click: _vm.hide
16221    }
16222  }, [_c("img", {
16223    attrs: {
16224      src: "/img/close_outline_white.svg",
16225      alt: ""
16226    }
16227  })]), _vm._v(" "), _c("div", {
16228    staticClass: "modal-dialog modal-dialog-centered modal-block flex-column justify-content-center"
16229  }, [_c("div", {
16230    staticClass: "modal-content"
16231  }, [_c("div", {
16232    staticClass: "modal-header bg-dark-gray position-relative"
16233  }, [_c("button", {
16234    staticClass: "btn-social-back",
16235    on: {
16236      click: _vm.hide
16237    }
16238  }, [_c("img", {
16239    attrs: {
16240      src: "/img/back_outline_white.svg",
16241      alt: ""
16242    }
16243  })]), _vm._v(" "), _c("h4", {
16244    staticClass: "modal-title text-center w-100 white"
16245  }, [_vm._v("\n                    建立貼文\n                ")])]), _vm._v(" "), _c("div", {
16246    staticClass: "modal-body bg-dark-gray flex-center"
16247  }, [_c("img", {
16248    staticClass: "mb-16px",
16249    attrs: {
16250      src: "/img/post_upload_image.svg",
16251      alt: ""
16252    }
16253  }), _vm._v(" "), _c("p", {
16254    staticClass: "white text-center"
16255  }, [_vm._v("\n                    請上傳圖片或影片檔案格式\n                    "), _c("br"), _vm._v(" "), _c("span", {
16256    staticClass: "fz-14"
16257  }, [_vm._v("*圖片大小限制" + _vm._s(this.imageSize) + "MB")]), _vm._v(" "), _c("br"), _vm._v(" "), _c("span", {
16258    staticClass: "fz-14"
16259  }, [_vm._v("\n                        *影片長度限制" + _vm._s(this.videoLengthStr) + "秒內,大小限制" + _vm._s(this.videoSize) + "MB\n                    ")])]), _vm._v(" "), _c("label", {
16260    staticClass: "btn-social-upload"
16261  }, [_vm._v("\n                    上傳檔案\n                    "), _c("SocialFileInput", {
16262    attrs: {
16263      videoLength: _vm.videoLength,
16264      videoSize: _vm.videoSize,
16265      imageSize: _vm.imageSize
16266    },
16267    on: {
16268      pick: _vm.pick
16269    }
16270  })], 1)])]), _vm._v(" "), _c("button", {
16271    staticClass: "btn-edit-social-close-bottom d-block d-lg-none w-100",
16272    attrs: {
16273      type: "button"
16274    },
16275    on: {
16276      click: _vm.hide
16277    }
16278  }, [_vm._v("\n            取消\n        ")])])]);
16279};
16280var staticRenderFns = [];
16281render._withStripped = true;
16282
16283
16284/***/ }),
16285
16286/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialUploadFailModal.vue?vue&type=template&id=43154826":
16287/*!**************************************************************************************************************************************************************************************************************************************************************************************************!*\
16288  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialUploadFailModal.vue?vue&type=template&id=43154826 ***!
16289  \**************************************************************************************************************************************************************************************************************************************************************************************************/
16290/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
16291
16292"use strict";
16293__webpack_require__.r(__webpack_exports__);
16294/* harmony export */ __webpack_require__.d(__webpack_exports__, {
16295/* harmony export */   render: () => (/* binding */ render),
16296/* harmony export */   staticRenderFns: () => (/* binding */ staticRenderFns)
16297/* harmony export */ });
16298var render = function render() {
16299  var _vm = this,
16300    _c = _vm._self._c;
16301  return _c("div", {
16302    ref: "modal",
16303    staticClass: "social-modal modal fade",
16304    attrs: {
16305      tabindex: "-1"
16306    }
16307  }, [_c("div", {
16308    staticClass: "modal-dialog modal-dialog-centered flex-column justify-content-center"
16309  }, [_c("div", {
16310    staticClass: "modal-content"
16311  }, [_c("div", {
16312    staticClass: "modal-body bg-dark-gray flex-center"
16313  }, [_c("h4", {
16314    staticClass: "modal-title text-center w-100 white"
16315  }, [_vm._v("\n          上傳檔案時發生錯誤\n        ")]), _vm._v(" "), _c("p", {
16316    staticClass: "white text-center"
16317  }, [_vm._v("\n          請確認檔案是否為圖片或影片格式,或是檔案大小超過限制。"), _c("br"), _vm._v(" "), _c("span", {
16318    staticClass: "fz-14"
16319  }, [_vm._v("*影片大小限制" + _vm._s(this.videoSize) + "MB")]), _c("br"), _vm._v(" "), _c("span", {
16320    staticClass: "fz-14"
16321  }, [_vm._v("*圖片大小限制" + _vm._s(this.imageSize) + "MB")])])]), _vm._v(" "), _c("button", {
16322    staticClass: "btn-social-close-alerts w-100",
16323    attrs: {
16324      type: "button"
16325    },
16326    on: {
16327      click: _vm.hide
16328    }
16329  }, [_vm._v("\n        我知道了\n      ")])])])]);
16330};
16331var staticRenderFns = [];
16332render._withStripped = true;
16333
16334
16335/***/ }),
16336
16337/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialUploadingModal.vue?vue&type=template&id=64a15a24":
16338/*!*************************************************************************************************************************************************************************************************************************************************************************************************!*\
16339  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialUploadingModal.vue?vue&type=template&id=64a15a24 ***!
16340  \*************************************************************************************************************************************************************************************************************************************************************************************************/
16341/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
16342
16343"use strict";
16344__webpack_require__.r(__webpack_exports__);
16345/* harmony export */ __webpack_require__.d(__webpack_exports__, {
16346/* harmony export */   render: () => (/* binding */ render),
16347/* harmony export */   staticRenderFns: () => (/* binding */ staticRenderFns)
16348/* harmony export */ });
16349var render = function render() {
16350  var _vm = this,
16351    _c = _vm._self._c;
16352  return _c("div", {
16353    ref: "modal",
16354    staticClass: "social-modal modal",
16355    attrs: {
16356      tabindex: "-1"
16357    }
16358  }, [_vm._m(0)]);
16359};
16360var staticRenderFns = [function () {
16361  var _vm = this,
16362    _c = _vm._self._c;
16363  return _c("div", {
16364    staticClass: "modal-dialog modal-dialog-centered flex-column justify-content-center"
16365  }, [_c("div", {
16366    staticClass: "modal-content"
16367  }, [_c("div", {
16368    staticClass: "progress",
16369    staticStyle: {
16370      height: "2px",
16371      "background-color": "#808080"
16372    }
16373  }, [_c("div", {
16374    staticClass: "progress-bar edit-social-post-progress-bar",
16375    staticStyle: {
16376      width: "0",
16377      "background-color": "#ffdc00"
16378    },
16379    attrs: {
16380      role: "progressbar",
16381      "aria-valuenow": "100",
16382      "aria-valuemin": "0",
16383      "aria-valuemax": "100"
16384    }
16385  })]), _vm._v(" "), _c("div", {
16386    staticClass: "modal-body bg-dark-gray flex-center h-200px h-mb-250px"
16387  }, [_c("div", {
16388    staticClass: "edit-social-post-uploading-animation"
16389  }, [_c("div")]), _vm._v(" "), _c("h4", {
16390    staticClass: "modal-title text-center w-100 white"
16391  }, [_vm._v("\n                    上傳中,請稍後\n                ")])])])]);
16392}];
16393render._withStripped = true;
16394
16395
16396/***/ }),
16397
16398/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialUserModal.vue?vue&type=template&id=ff06facc":
16399/*!********************************************************************************************************************************************************************************************************************************************************************************************!*\
16400  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialUserModal.vue?vue&type=template&id=ff06facc ***!
16401  \********************************************************************************************************************************************************************************************************************************************************************************************/
16402/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
16403
16404"use strict";
16405__webpack_require__.r(__webpack_exports__);
16406/* harmony export */ __webpack_require__.d(__webpack_exports__, {
16407/* harmony export */   render: () => (/* binding */ render),
16408/* harmony export */   staticRenderFns: () => (/* binding */ staticRenderFns)
16409/* harmony export */ });
16410var render = function render() {
16411  var _vm = this,
16412    _c = _vm._self._c;
16413  return _c("div", {
16414    ref: "modal",
16415    staticClass: "social-modal-personal-page modal p-0 fade show",
16416    attrs: {
16417      tabindex: "-1"
16418    }
16419  }, [_c("div", {
16420    staticClass: "modal-dialog modal-dialog-centered modal-block m-tb-0"
16421  }, [_c("div", {
16422    staticClass: "modal-content"
16423  }, [_c("div", {
16424    staticClass: "modal-header bg-dark-gray position-relative"
16425  }, [_c("button", {
16426    staticClass: "btn-social-back",
16427    on: {
16428      click: _vm.hide
16429    }
16430  }, [_c("img", {
16431    attrs: {
16432      src: "/img/back_outline_white.svg",
16433      alt: ""
16434    }
16435  })]), _vm._v(" "), _c("h4", {
16436    staticClass: "modal-title text-center w-100 white"
16437  }, [_vm._v(_vm._s(_vm.title))])]), _vm._v(" "), _c("div", {
16438    staticClass: "modal-body bg-dark-gray flex-column p-0"
16439  }, [_c("div", {
16440    staticClass: "social-post-report-options-section social-modal-user-options-section"
16441  }, [_c("div", {
16442    staticClass: "social-post-report-options-block"
16443  }, _vm._l(_vm.users, function (user) {
16444    return _c("div", {
16445      key: user.id,
16446      staticClass: "social-post-report-options"
16447    }, [_c("div", {
16448      staticClass: "social-modal-user-block",
16449      on: {
16450        click: function click() {
16451          _vm.hide();
16452          _vm.showUser(user.alias_name);
16453        }
16454      }
16455    }, [_c("img", {
16456      staticClass: "social-index-user-img mr-8px",
16457      attrs: {
16458        src: user.profile_image
16459      }
16460    }), _vm._v(" "), _c("div", {
16461      staticClass: "social-post-report-title"
16462    }, [_vm._v("\n                  " + _vm._s(user.name) + "\n                ")])]), _vm._v(" "), _c("div", {
16463      staticClass: "social-modal-follow-block"
16464    }, [!user.is_self ? _c("div", {
16465      directives: [{
16466        name: "show",
16467        rawName: "v-show",
16468        value: !user.is_follow,
16469        expression: "!user.is_follow"
16470      }],
16471      staticClass: "btn social-post-unfollow btn-social-release position-relative r-0",
16472      on: {
16473        click: function click($event) {
16474          return _vm.follow(user);
16475        }
16476      }
16477    }, [_vm._v("\n                  追蹤\n                ")]) : _vm._e(), _vm._v(" "), !user.is_self ? _c("div", {
16478      directives: [{
16479        name: "show",
16480        rawName: "v-show",
16481        value: user.is_follow,
16482        expression: "user.is_follow"
16483      }],
16484      staticClass: "btn social-post-follow btn-social-release position-relative r-0",
16485      on: {
16486        click: function click($event) {
16487          return _vm.unfollow(user);
16488        }
16489      }
16490    }, [_vm._v("\n                  已追蹤\n                ")]) : _vm._e()])]);
16491  }), 0)])])])])]);
16492};
16493var staticRenderFns = [];
16494render._withStripped = true;
16495
16496
16497/***/ }),
16498
16499/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialUserPage.vue?vue&type=template&id=7070199c":
16500/*!*******************************************************************************************************************************************************************************************************************************************************************************************!*\
16501  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialUserPage.vue?vue&type=template&id=7070199c ***!
16502  \*******************************************************************************************************************************************************************************************************************************************************************************************/
16503/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
16504
16505"use strict";
16506__webpack_require__.r(__webpack_exports__);
16507/* harmony export */ __webpack_require__.d(__webpack_exports__, {
16508/* harmony export */   render: () => (/* binding */ render),
16509/* harmony export */   staticRenderFns: () => (/* binding */ staticRenderFns)
16510/* harmony export */ });
16511var render = function render() {
16512  var _vm = this,
16513    _c = _vm._self._c;
16514  return _vm.user ? _c("div", [_c("div", {
16515    attrs: {
16516      id: "social-personal-page"
16517    }
16518  }, [_c("div", {
16519    staticClass: "social-post-om-block m-tb-0 position-relative"
16520  }, [_c("div", {
16521    staticClass: "button btn-social-back t-8px cursor-pointer",
16522    on: {
16523      click: _vm.back
16524    }
16525  }, [_c("img", {
16526    attrs: {
16527      src: "/img/back_outline_white.svg",
16528      alt: ""
16529    }
16530  })]), _vm._v(" "), _c("div", {
16531    staticClass: "social-post-om-header bg-dark-gray position-relative d-flex d-tb-none align-items-center"
16532  }, [_c("button", {
16533    staticClass: "btn-social-back",
16534    on: {
16535      click: _vm.back
16536    }
16537  }, [_c("img", {
16538    attrs: {
16539      src: "/img/back_outline_white.svg",
16540      alt: ""
16541    }
16542  })]), _vm._v(" "), _c("h4", {
16543    staticClass: "social-post-om-title text-center w-100 white mx-32px"
16544  }, [_vm._v("\n          " + _vm._s(_vm.user.name) + "\n        ")]), _vm._v(" "), _c("div", {
16545    staticClass: "btn social-post-more social-personal-page-more",
16546    attrs: {
16547      type: "button"
16548    },
16549    on: {
16550      click: _vm.openSettings
16551    }
16552  }, [_vm._v("\n          ...\n        ")])]), _vm._v(" "), _c("div", {
16553    staticClass: "social-personal-page-block d-none d-tb-block",
16554    staticStyle: {
16555      "max-width": "800px",
16556      margin: "auto"
16557    }
16558  }, [_c("div", {
16559    staticClass: "social-personal-page-user-traffic-block"
16560  }, [_c("img", {
16561    staticClass: "social-post-report-account-user-img social-personal-page-user-img",
16562    attrs: {
16563      src: _vm.user.profile_image
16564    }
16565  }), _vm._v(" "), _c("div", {
16566    staticClass: "social-personal-page-interaction-block mt-16px flex-column w-100"
16567  }, [_c("div", {
16568    staticClass: "social-personal-page-user-data-block"
16569  }, [_c("div", {
16570    staticClass: "social-personal-page-user-name"
16571  }, [_vm._v("\n                " + _vm._s(_vm.user.name) + "\n              ")]), _vm._v(" "), _c("div", {
16572    staticClass: "social-personal-page-interaction-section d-flex"
16573  }, [!_vm.user.is_self && !_vm.user.is_lock ? _c("div", {
16574    staticClass: "social-personal-page-interaction-block"
16575  }, [!_vm.user.is_follow ? _c("div", {
16576    staticClass: "btn social-post-unfollow btn-social-release btn-social-personal-page-interaction position-relative",
16577    on: {
16578      click: function click($event) {
16579        return _vm.follow(_vm.user);
16580      }
16581    }
16582  }, [_vm._v("\n                    追蹤\n                  ")]) : _vm._e(), _vm._v(" "), _vm.user.is_follow ? _c("div", {
16583    staticClass: "btn social-post-follow btn-social-release btn-social-personal-page-interaction position-relative",
16584    on: {
16585      click: function click($event) {
16586        return _vm.unfollow(_vm.user);
16587      }
16588    }
16589  }, [_vm._v("\n                    已追蹤\n                  ")]) : _vm._e(), _vm._v(" "), _c("button", {
16590    staticClass: "btn social-post-follow btn-social-release btn-social-personal-page-interaction position-relative",
16591    attrs: {
16592      type: "button"
16593    },
16594    on: {
16595      click: _vm.openGift
16596    }
16597  }, [_vm._v("\n                    贈送點數\n                  ")]), _vm._v(" "), _c("div", {
16598    staticClass: "btn social-post-follow btn-social-release btn-social-personal-page-interaction position-relative",
16599    on: {
16600      click: _vm.toMessagePage
16601    }
16602  }, [_vm._v("\n                    傳送訊息\n                  ")])]) : _vm._e(), _vm._v(" "), !_vm.user.is_self && _vm.user.is_lock ? _c("div", {
16603    staticClass: "social-personal-page-interaction-block"
16604  }, [_c("div", {
16605    staticClass: "btn btn-social-release btn-social-personal-page-interaction position-relative",
16606    on: {
16607      click: function click($event) {
16608        return _vm.unlock(_vm.user);
16609      }
16610    }
16611  }, [_vm._v("\n                    解除封鎖\n                  ")]), _vm._v(" "), _c("div", {
16612    staticClass: "btn social-post-follow btn-social-release btn-social-personal-page-interaction position-relative",
16613    on: {
16614      click: _vm.toMessagePage
16615    }
16616  }, [_vm._v("\n                    傳送訊息\n                  ")])]) : _vm._e(), _vm._v(" "), _c("div", {
16617    staticClass: "social-personal-page-interaction-block"
16618  }, [_vm.user.is_self ? _c("div", {
16619    staticClass: "btn social-post-follow btn-social-release btn-social-personal-page-interaction position-relative",
16620    on: {
16621      click: _vm.startEdit
16622    }
16623  }, [_vm._v("\n                    編輯個人檔案\n                  ")]) : _vm._e()]), _vm._v(" "), _c("div", {
16624    staticClass: "btn social-post-more social-personal-page-more",
16625    attrs: {
16626      type: "button"
16627    },
16628    on: {
16629      click: _vm.openSettings
16630    }
16631  }, [_vm._v("\n                  ...\n                ")])])]), _vm._v(" "), _c("div", {
16632    staticClass: "social-personal-page-user-traffic"
16633  }, [_c("div", {
16634    staticClass: "social-personal-page-traffic-number-block"
16635  }, [_c("div", {
16636    staticClass: "social-personal-page-traffic-number-block"
16637  }, [_vm._v("\n                  " + _vm._s(_vm.user.liked_count)), _c("span", {
16638    staticClass: "social-personal-page-traffic-name"
16639  }, [_vm._v("獲讚")])])]), _vm._v(" "), _c("div", {
16640    staticClass: "social-personal-page-traffic-number-block",
16641    on: {
16642      click: _vm.openFollowMes
16643    }
16644  }, [_c("div", {
16645    staticClass: "social-personal-page-traffic-number-block"
16646  }, [_vm._v("\n                  " + _vm._s(_vm.user.follow_me_users.length) + "\n                  "), _c("span", {
16647    staticClass: "social-personal-page-traffic-name"
16648  }, [_vm._v("粉絲")])])]), _vm._v(" "), _c("div", {
16649    staticClass: "social-personal-page-traffic-number-block",
16650    on: {
16651      click: _vm.openFollows
16652    }
16653  }, [_c("div", {
16654    staticClass: "social-personal-page-traffic-number-block"
16655  }, [_vm._v("\n                  " + _vm._s(_vm.user.follow_users.filter(function (user) {
16656    return user.is_follow;
16657  }).length) + "\n                  "), _c("span", {
16658    staticClass: "social-personal-page-traffic-name"
16659  }, [_vm._v("追蹤中")])])])]), _vm._v(" "), _vm.user.introduction ? _c("div", {
16660    directives: [{
16661      name: "show",
16662      rawName: "v-show",
16663      value: !_vm.isEditMode,
16664      expression: "!isEditMode"
16665    }],
16666    staticClass: "social-personal-page-user-intro edit-social-personal-page-user-data-hidden"
16667  }, [_vm._v("\n              " + _vm._s(_vm.user.introduction) + "\n            ")]) : _vm._e(), _vm._v(" "), _c("div", {
16668    directives: [{
16669      name: "show",
16670      rawName: "v-show",
16671      value: _vm.isEditMode,
16672      expression: "isEditMode"
16673    }],
16674    staticClass: "edit-social-personal-page-user-data-block"
16675  }, [_c("input", {
16676    directives: [{
16677      name: "model",
16678      rawName: "v-model",
16679      value: _vm.name,
16680      expression: "name"
16681    }],
16682    staticClass: "edit-social-personal-page-name w-100",
16683    attrs: {
16684      type: "text",
16685      placeholder: "請輸入您的暱稱"
16686    },
16687    domProps: {
16688      value: _vm.name
16689    },
16690    on: {
16691      input: function input($event) {
16692        if ($event.target.composing) return;
16693        _vm.name = $event.target.value;
16694      }
16695    }
16696  }), _vm._v(" "), _c("textarea", {
16697    directives: [{
16698      name: "model",
16699      rawName: "v-model",
16700      value: _vm.introduction,
16701      expression: "introduction"
16702    }],
16703    staticClass: "edit-social-personal-page-intro w-100",
16704    attrs: {
16705      rows: "3",
16706      placeholder: "請輸入您的個人簡介"
16707    },
16708    domProps: {
16709      value: _vm.introduction
16710    },
16711    on: {
16712      input: function input($event) {
16713        if ($event.target.composing) return;
16714        _vm.introduction = $event.target.value;
16715      }
16716    }
16717  }), _vm._v(" "), _c("button", {
16718    staticClass: "btn social-post-follow btn-social-release btn-social-personal-page-interaction position-relative w-100",
16719    attrs: {
16720      type: "button"
16721    },
16722    on: {
16723      click: _vm.update
16724    }
16725  }, [_vm._v("\n                儲存\n              ")])])])])]), _vm._v(" "), _c("div", {
16726    staticClass: "social-personal-page-block d-block d-tb-none"
16727  }, [_c("div", {
16728    staticClass: "social-personal-page-user-traffic-block"
16729  }, [_c("img", {
16730    staticClass: "social-post-report-account-user-img",
16731    attrs: {
16732      src: _vm.user.profile_image
16733    }
16734  }), _vm._v(" "), _c("div", {
16735    staticClass: "social-personal-page-user-traffic"
16736  }, [_c("div", {
16737    staticClass: "social-personal-page-traffic-number-block"
16738  }, [_c("div", {
16739    staticClass: "social-personal-page-traffic-number-block"
16740  }, [_vm._v("\n                " + _vm._s(_vm.user.liked_count) + "\n              ")]), _vm._v(" "), _c("div", {
16741    staticClass: "social-personal-page-traffic-name"
16742  }, [_vm._v("獲讚")])]), _vm._v(" "), _c("div", {
16743    staticClass: "social-personal-page-traffic-number-block",
16744    attrs: {
16745      type: "button"
16746    },
16747    on: {
16748      click: _vm.openFollowMes
16749    }
16750  }, [_c("div", {
16751    staticClass: "social-personal-page-traffic-number-block"
16752  }, [_vm._v("\n                " + _vm._s(_vm.user.follow_me_users.length) + "\n              ")]), _vm._v(" "), _c("div", {
16753    staticClass: "social-personal-page-traffic-name"
16754  }, [_vm._v("粉絲")])]), _vm._v(" "), _c("div", {
16755    staticClass: "social-personal-page-traffic-number-block",
16756    attrs: {
16757      type: "button"
16758    },
16759    on: {
16760      click: _vm.openFollows
16761    }
16762  }, [_c("div", {
16763    staticClass: "social-personal-page-traffic-number-block"
16764  }, [_vm._v("\n                " + _vm._s(_vm.user.follow_users.filter(function (user) {
16765    return user.is_follow;
16766  }).length) + "\n              ")]), _vm._v(" "), _c("div", {
16767    staticClass: "social-personal-page-traffic-name"
16768  }, [_vm._v("追蹤中")])])])]), _vm._v(" "), _c("div", {
16769    directives: [{
16770      name: "show",
16771      rawName: "v-show",
16772      value: !_vm.isEditMode,
16773      expression: "!isEditMode"
16774    }],
16775    staticClass: "social-personal-page-user-data-block edit-social-personal-page-user-data-hidden"
16776  }, [_c("div", {
16777    staticClass: "social-personal-page-user-name"
16778  }, [_vm._v(_vm._s(_vm.user.name))]), _vm._v(" "), _vm.user.introduction ? _c("div", {
16779    staticClass: "social-personal-page-user-intro"
16780  }, [_vm._v("\n            " + _vm._s(_vm.user.introduction) + "\n          ")]) : _vm._e()]), _vm._v(" "), _c("div", {
16781    directives: [{
16782      name: "show",
16783      rawName: "v-show",
16784      value: _vm.isEditMode,
16785      expression: "isEditMode"
16786    }],
16787    staticClass: "edit-social-personal-page-user-data-block"
16788  }, [_c("input", {
16789    directives: [{
16790      name: "model",
16791      rawName: "v-model",
16792      value: _vm.name,
16793      expression: "name"
16794    }],
16795    staticClass: "edit-social-personal-page-name w-100",
16796    attrs: {
16797      type: "text",
16798      placeholder: "請輸入您的暱稱"
16799    },
16800    domProps: {
16801      value: _vm.name
16802    },
16803    on: {
16804      input: function input($event) {
16805        if ($event.target.composing) return;
16806        _vm.name = $event.target.value;
16807      }
16808    }
16809  }), _vm._v(" "), _c("textarea", {
16810    directives: [{
16811      name: "model",
16812      rawName: "v-model",
16813      value: _vm.introduction,
16814      expression: "introduction"
16815    }],
16816    staticClass: "edit-social-personal-page-intro w-100",
16817    attrs: {
16818      rows: "3",
16819      placeholder: "請輸入您的個人簡介"
16820    },
16821    domProps: {
16822      value: _vm.introduction
16823    },
16824    on: {
16825      input: function input($event) {
16826        if ($event.target.composing) return;
16827        _vm.introduction = $event.target.value;
16828      }
16829    }
16830  }), _vm._v(" "), _c("button", {
16831    staticClass: "btn social-post-follow btn-social-release btn-social-personal-page-interaction position-relative w-100",
16832    attrs: {
16833      type: "button"
16834    },
16835    on: {
16836      click: _vm.update
16837    }
16838  }, [_vm._v("\n            儲存\n          ")])]), _vm._v(" "), !_vm.user.is_self && !_vm.user.is_lock ? _c("div", {
16839    staticClass: "social-personal-page-interaction-block"
16840  }, [!_vm.user.is_follow ? _c("div", {
16841    staticClass: "btn social-post-unfollow btn-social-release btn-social-personal-page-interaction position-relative",
16842    on: {
16843      click: function click($event) {
16844        return _vm.follow(_vm.user);
16845      }
16846    }
16847  }, [_vm._v("\n            追蹤\n          ")]) : _vm._e(), _vm._v(" "), _vm.user.is_follow ? _c("div", {
16848    staticClass: "btn social-post-follow btn-social-release btn-social-personal-page-interaction position-relative",
16849    on: {
16850      click: function click($event) {
16851        return _vm.unfollow(_vm.user);
16852      }
16853    }
16854  }, [_vm._v("\n            已追蹤\n          ")]) : _vm._e(), _vm._v(" "), _c("div", {
16855    staticClass: "btn social-post-follow btn-social-release btn-social-personal-page-interaction position-relative",
16856    on: {
16857      click: _vm.openGift
16858    }
16859  }, [_vm._v("\n            贈送點數\n          ")]), _vm._v(" "), _c("div", {
16860    staticClass: "btn social-post-follow btn-social-release btn-social-personal-page-interaction position-relative",
16861    on: {
16862      click: _vm.toMessagePage
16863    }
16864  }, [_vm._v("\n            傳送訊息\n          ")])]) : _vm._e(), _vm._v(" "), !_vm.user.is_self && _vm.user.is_lock ? _c("div", {
16865    staticClass: "social-personal-page-interaction-block"
16866  }, [_c("div", {
16867    staticClass: "btn btn-social-release btn-social-personal-page-interaction position-relative w-50",
16868    on: {
16869      click: function click($event) {
16870        return _vm.unlock(_vm.user);
16871      }
16872    }
16873  }, [_vm._v("\n            解除封鎖\n          ")]), _vm._v(" "), _c("div", {
16874    staticClass: "btn social-post-follow btn-social-release btn-social-personal-page-interaction position-relative w-50",
16875    on: {
16876      click: _vm.toMessagePage
16877    }
16878  }, [_vm._v("\n            傳送訊息\n          ")])]) : _vm._e(), _vm._v(" "), _c("div", {
16879    staticClass: "social-personal-page-interaction-block"
16880  }, [_vm.user.is_self ? _c("div", {
16881    staticClass: "btn social-post-follow btn-social-release btn-social-personal-page-interaction position-relative w-100",
16882    on: {
16883      click: _vm.startEdit
16884    }
16885  }, [_vm._v("\n            編輯個人檔案\n          ")]) : _vm._e()])]), _vm._v(" "), _c("div", {
16886    staticClass: "social-personal-page-block"
16887  }, [_c("SocialPostList", {
16888    attrs: {
16889      apiUrl: "/api/social/post/user/" + _vm.user.id
16890    }
16891  }, [_vm.user.is_lock_me ? _c("div", [_c("div", [_c("router-link", {
16892    staticClass: "btn btn-social-release btn-social-personal-page-interaction position-relative mt-16px w-100",
16893    attrs: {
16894      to: {
16895        name: "social"
16896      }
16897    }
16898  }, [_vm._v("\n                回到動態主頁\n              ")])], 1), _vm._v(" "), _c("div", {
16899    staticClass: "text-center"
16900  }, [_c("a", {
16901    staticClass: "btn white",
16902    attrs: {
16903      href: "#"
16904    },
16905    on: {
16906      click: function click($event) {
16907        $event.preventDefault();
16908        return _vm.back.apply(null, arguments);
16909      }
16910    }
16911  }, [_vm._v("返回")])])]) : !_vm.user.is_lock ? _c("div", {
16912    staticClass: "white mt-16px"
16913  }, [_vm._v("尚無貼文")]) : _vm._e()])], 1)])]), _vm._v(" "), _c("div", {
16914    ref: "followModal",
16915    staticClass: "social-modal-personal-page modal p-0 fade show",
16916    attrs: {
16917      tabindex: "-1"
16918    }
16919  }, [_c("div", {
16920    staticClass: "modal-dialog modal-dialog-centered modal-block m-tb-0"
16921  }, [_c("div", {
16922    staticClass: "modal-content"
16923  }, [_c("div", {
16924    staticClass: "modal-header bg-dark-gray position-relative"
16925  }, [_c("button", {
16926    staticClass: "btn-social-back",
16927    on: {
16928      click: _vm.closeFollows
16929    }
16930  }, [_c("img", {
16931    attrs: {
16932      src: "/img/back_outline_white.svg",
16933      alt: ""
16934    }
16935  })]), _vm._v(" "), _c("h4", {
16936    staticClass: "modal-title text-center w-100 white"
16937  }, [_vm._v("追蹤中")])]), _vm._v(" "), _c("div", {
16938    staticClass: "modal-body bg-dark-gray flex-column p-0"
16939  }, [_c("div", {
16940    staticClass: "social-post-report-options-section social-modal-user-options-section"
16941  }, [_c("div", {
16942    staticClass: "social-post-report-options-block"
16943  }, _vm._l(_vm.user.follow_users, function (followUser) {
16944    return _c("div", {
16945      key: followUser.id,
16946      staticClass: "social-post-report-options"
16947    }, [_c("div", {
16948      staticClass: "social-modal-user-block",
16949      on: {
16950        click: function click() {
16951          _vm.closeFollows();
16952          _vm.toUserPage(followUser);
16953        }
16954      }
16955    }, [_c("img", {
16956      staticClass: "social-index-user-img mr-8px",
16957      attrs: {
16958        src: followUser.profile_image
16959      }
16960    }), _vm._v(" "), _c("div", {
16961      staticClass: "social-post-report-title"
16962    }, [_vm._v("\n                    " + _vm._s(followUser.name) + "\n                  ")])]), _vm._v(" "), _c("div", {
16963      staticClass: "social-modal-follow-block"
16964    }, [!followUser.is_self ? _c("div", {
16965      directives: [{
16966        name: "show",
16967        rawName: "v-show",
16968        value: !followUser.is_follow,
16969        expression: "!followUser.is_follow"
16970      }],
16971      staticClass: "btn social-post-unfollow btn-social-release position-relative r-0",
16972      on: {
16973        click: function click($event) {
16974          return _vm.follow(followUser);
16975        }
16976      }
16977    }, [_vm._v("\n                    追蹤\n                  ")]) : _vm._e(), _vm._v(" "), !followUser.is_self ? _c("div", {
16978      directives: [{
16979        name: "show",
16980        rawName: "v-show",
16981        value: followUser.is_follow,
16982        expression: "followUser.is_follow"
16983      }],
16984      staticClass: "btn social-post-follow btn-social-release position-relative r-0",
16985      on: {
16986        click: function click($event) {
16987          return _vm.unfollow(followUser);
16988        }
16989      }
16990    }, [_vm._v("\n                    已追蹤\n                  ")]) : _vm._e()])]);
16991  }), 0)])])])])]), _vm._v(" "), _c("div", {
16992    ref: "followMeModal",
16993    staticClass: "social-modal-personal-page modal p-0 fade show",
16994    attrs: {
16995      tabindex: "-1"
16996    }
16997  }, [_c("div", {
16998    staticClass: "modal-dialog modal-dialog-centered modal-block m-tb-0"
16999  }, [_c("div", {
17000    staticClass: "modal-content"
17001  }, [_c("div", {
17002    staticClass: "modal-header bg-dark-gray position-relative"
17003  }, [_c("button", {
17004    staticClass: "btn-social-back",
17005    on: {
17006      click: _vm.closeFollowMes
17007    }
17008  }, [_c("img", {
17009    attrs: {
17010      src: "/img/back_outline_white.svg",
17011      alt: ""
17012    }
17013  })]), _vm._v(" "), _c("h4", {
17014    staticClass: "modal-title text-center w-100 white"
17015  }, [_vm._v("粉絲")])]), _vm._v(" "), _c("div", {
17016    staticClass: "modal-body bg-dark-gray flex-column p-0"
17017  }, [_c("div", {
17018    staticClass: "social-post-report-options-section social-modal-user-options-section"
17019  }, [_c("div", {
17020    staticClass: "social-post-report-options-block"
17021  }, _vm._l(_vm.user.follow_me_users, function (followMeUser) {
17022    return _c("div", {
17023      key: followMeUser.id,
17024      staticClass: "social-post-report-options"
17025    }, [_c("div", {
17026      staticClass: "social-modal-user-block",
17027      on: {
17028        click: function click() {
17029          _vm.closeFollowMes();
17030          _vm.toUserPage(followMeUser);
17031        }
17032      }
17033    }, [_c("img", {
17034      staticClass: "social-index-user-img mr-8px",
17035      attrs: {
17036        src: followMeUser.profile_image
17037      }
17038    }), _vm._v(" "), _c("div", {
17039      staticClass: "social-post-report-title"
17040    }, [_vm._v("\n                    " + _vm._s(followMeUser.name) + "\n                  ")])]), _vm._v(" "), _c("div", {
17041      staticClass: "social-modal-follow-block"
17042    }, [!followMeUser.is_self ? _c("div", {
17043      directives: [{
17044        name: "show",
17045        rawName: "v-show",
17046        value: !followMeUser.is_follow,
17047        expression: "!followMeUser.is_follow"
17048      }],
17049      staticClass: "btn social-post-unfollow btn-social-release position-relative r-0",
17050      on: {
17051        click: function click($event) {
17052          return _vm.follow(followMeUser);
17053        }
17054      }
17055    }, [_vm._v("\n                    追蹤\n                  ")]) : _vm._e(), _vm._v(" "), !followMeUser.is_self ? _c("div", {
17056      directives: [{
17057        name: "show",
17058        rawName: "v-show",
17059        value: followMeUser.is_follow,
17060        expression: "followMeUser.is_follow"
17061      }],
17062      staticClass: "btn social-post-follow btn-social-release position-relative r-0",
17063      on: {
17064        click: function click($event) {
17065          return _vm.unfollow(followMeUser);
17066        }
17067      }
17068    }, [_vm._v("\n                    已追蹤\n                  ")]) : _vm._e()])]);
17069  }), 0)])])])])]), _vm._v(" "), _c("div", {
17070    ref: "settingModal",
17071    staticClass: "social-modal-personal-page modal p-0 fade",
17072    attrs: {
17073      tabindex: "-1"
17074    }
17075  }, [_c("div", {
17076    staticClass: "modal-dialog modal-dialog-centered modal-block m-tb-0"
17077  }, [_c("div", {
17078    staticClass: "modal-content"
17079  }, [_c("div", {
17080    staticClass: "modal-header bg-dark-gray position-relative"
17081  }, [_c("button", {
17082    staticClass: "btn-social-back",
17083    on: {
17084      click: _vm.closeSettings
17085    }
17086  }, [_c("img", {
17087    attrs: {
17088      src: "/img/back_outline_white.svg",
17089      alt: ""
17090    }
17091  })]), _vm._v(" "), _c("h4", {
17092    staticClass: "modal-title text-center w-100 white"
17093  }, [_vm._v("設定")])]), _vm._v(" "), _c("div", {
17094    staticClass: "modal-body bg-dark-gray flex-column p-0"
17095  }, [_c("div", {
17096    staticClass: "social-post-report-options-section social-modal-user-options-section"
17097  }, [_c("div", {
17098    staticClass: "social-post-report-options-block"
17099  }, _vm._l(_vm.settings, function (setting, index) {
17100    return _c("div", {
17101      directives: [{
17102        name: "show",
17103        rawName: "v-show",
17104        value: setting.active,
17105        expression: "setting.active"
17106      }],
17107      key: index,
17108      staticClass: "social-post-report-options",
17109      attrs: {
17110        type: "button"
17111      },
17112      on: {
17113        click: setting.action
17114      }
17115    }, [_c("div", {
17116      staticClass: "social-post-report-title"
17117    }, [_vm._v("\n                  " + _vm._s(setting.text) + "\n                ")]), _vm._v(" "), _c("div", {
17118      staticClass: "btn-social-post-report-next"
17119    }, [_vm._v(">")])]);
17120  }), 0), _vm._v(" "), _c("div", {
17121    staticClass: "social-post-report-last-hr mb-0"
17122  }), _vm._v(" "), _vm.user.is_self ? _c("div", {
17123    staticClass: "social-post-report-options-block"
17124  }, [_c("div", {
17125    staticClass: "social-post-report-options",
17126    on: {
17127      click: _vm.logout
17128    }
17129  }, [_c("div", {
17130    staticClass: "social-post-report-title"
17131  }, [_vm._v("登出")])])]) : _vm._e()])])])])]), _vm._v(" "), _c("div", {
17132    ref: "giftModal",
17133    staticClass: "social-modal-personal-page modal p-0 fade",
17134    attrs: {
17135      tabindex: "-1"
17136    }
17137  }, [_c("div", {
17138    staticClass: "modal-dialog modal-dialog-centered modal-block m-tb-0"
17139  }, [_c("div", {
17140    staticClass: "modal-content"
17141  }, [_c("div", {
17142    staticClass: "modal-header bg-dark-gray position-relative"
17143  }, [_c("button", {
17144    staticClass: "btn-social-back",
17145    on: {
17146      click: _vm.closeGift
17147    }
17148  }, [_c("img", {
17149    attrs: {
17150      src: "/img/back_outline_white.svg",
17151      alt: ""
17152    }
17153  })]), _vm._v(" "), _c("h4", {
17154    staticClass: "modal-title text-center w-100 white"
17155  }, [_vm._v("贈送點數")])]), _vm._v(" "), _c("div", {
17156    staticClass: "modal-body bg-dark-gray flex-column p-0"
17157  }, [_c("div", {
17158    staticClass: "social-post-report-declare-block",
17159    staticStyle: {
17160      border: "none"
17161    }
17162  }, [_c("div", {
17163    staticClass: "social-post-report-title"
17164  }, [_vm._v("贈送點數說明")]), _vm._v(" "), _c("div", {
17165    staticClass: "social-post-report-content"
17166  }, [_vm._v("\n              每日可分送\n              "), _c("span", {
17167    staticClass: "social-personal-page-gift-points-count"
17168  }, [_vm._v(_vm._s(_vm.user.send_gift_times))]), _vm._v("\n              次免費點數給好友!\n            ")])]), _vm._v(" "), _c("div", {
17169    staticClass: "btn-social-post-report-block"
17170  }, [_c("button", {
17171    "class": {
17172      "btn-social-post-report": true,
17173      "btn-social-post-report-un-fill-in": !_vm.user.can_send_gift
17174    },
17175    attrs: {
17176      type: "button",
17177      disabled: !_vm.user.can_send_gift
17178    },
17179    on: {
17180      click: _vm.startSendPointGift
17181    }
17182  }, [_vm._v("\n              贈送\n            ")])])])])])]), _vm._v(" "), _c("div", {
17183    ref: "lockModal",
17184    staticClass: "social-modal-personal-page modal p-0 fade",
17185    attrs: {
17186      tabindex: "-1"
17187    }
17188  }, [_c("div", {
17189    staticClass: "modal-dialog modal-dialog-centered modal-block m-tb-0"
17190  }, [_c("div", {
17191    staticClass: "modal-content"
17192  }, [_c("div", {
17193    staticClass: "modal-header bg-dark-gray position-relative"
17194  }, [_c("button", {
17195    staticClass: "btn-social-back",
17196    on: {
17197      click: _vm.closeLocks
17198    }
17199  }, [_c("img", {
17200    attrs: {
17201      src: "/img/back_outline_white.svg",
17202      alt: ""
17203    }
17204  })]), _vm._v(" "), _c("h4", {
17205    staticClass: "modal-title text-center w-100 white"
17206  }, [_vm._v("已封鎖帳號")])]), _vm._v(" "), _c("div", {
17207    staticClass: "modal-body bg-dark-gray flex-column p-0"
17208  }, [_c("div", {
17209    staticClass: "social-post-report-options-section social-modal-user-options-section"
17210  }, [_c("div", {
17211    staticClass: "social-post-report-options-block"
17212  }, _vm._l(_vm.user.lock_users, function (lockUser) {
17213    return _c("div", {
17214      key: lockUser.id,
17215      staticClass: "social-post-report-options"
17216    }, [_c("div", {
17217      staticClass: "social-modal-user-block"
17218    }, [_c("img", {
17219      staticClass: "social-index-user-img mr-8px",
17220      attrs: {
17221        src: lockUser.profile_image
17222      }
17223    }), _vm._v(" "), _c("div", {
17224      staticClass: "social-post-report-title"
17225    }, [_vm._v("\n                    " + _vm._s(lockUser.name) + "\n                  ")])]), _vm._v(" "), _c("div", {
17226      staticClass: "social-modal-follow-block"
17227    }, [!lockUser.is_lock ? _c("div", {
17228      staticClass: "btn social-post-follow btn-social-release position-relative r-0",
17229      on: {
17230        click: function click($event) {
17231          return _vm.lock(lockUser);
17232        }
17233      }
17234    }, [_vm._v("\n                    封鎖\n                  ")]) : _c("div", {
17235      staticClass: "btn btn-social-release position-relative r-0",
17236      on: {
17237        click: function click($event) {
17238          return _vm.unlock(lockUser);
17239        }
17240      }
17241    }, [_vm._v("\n                    解除封鎖\n                  ")])])]);
17242  }), 0)])])])])]), _vm._v(" "), _c("SocialShareModal", {
17243    ref: "shareModal",
17244    attrs: {
17245      title: _vm.user.is_self ? "分享個人頁面" : "分享這個商業檔案",
17246      copyTitle: _vm.user.is_self ? "複製個人頁面網址" : "複製這個商業檔案連結"
17247    },
17248    on: {
17249      share: _vm.share
17250    }
17251  }), _vm._v(" "), _c("SocialConfirmModal", {
17252    ref: "unfollowMeConfirmModal",
17253    attrs: {
17254      title: "確定要移除粉絲嗎?",
17255      description: "移除後該使用者將不再追蹤你",
17256      actionText: "確定"
17257    },
17258    on: {
17259      action: _vm.unfollowMe
17260    }
17261  }), _vm._v(" "), _c("SocialConfirmModal", {
17262    ref: "sendPointGiftConfirmModal",
17263    attrs: {
17264      title: "確定要贈送點數嗎?",
17265      description: "點數贈送後將無法取回",
17266      actionText: "確定"
17267    },
17268    on: {
17269      action: _vm.sendPointGift
17270    }
17271  }), _vm._v(" "), _c("ReportModal", {
17272    ref: "reportModal",
17273    attrs: {
17274      title: "您檢舉本帳號的原因為何?",
17275      type: "3"
17276    }
17277  })], 1) : _vm._e();
17278};
17279var staticRenderFns = [];
17280render._withStripped = true;
17281
17282
17283/***/ }),
17284
17285/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/TimeFormat.vue?vue&type=template&id=46dba3cf":
17286/*!***************************************************************************************************************************************************************************************************************************************************************************************!*\
17287  !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/TimeFormat.vue?vue&type=template&id=46dba3cf ***!
17288  \***************************************************************************************************************************************************************************************************************************************************************************************/
17289/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
17290
17291"use strict";
17292__webpack_require__.r(__webpack_exports__);
17293/* harmony export */ __webpack_require__.d(__webpack_exports__, {
17294/* harmony export */   render: () => (/* binding */ render),
17295/* harmony export */   staticRenderFns: () => (/* binding */ staticRenderFns)
17296/* harmony export */ });
17297var render = function render() {
17298  var _vm = this,
17299    _c = _vm._self._c;
17300  return _c("span", [_vm._v("\n    " + _vm._s(_vm.displayText) + "\n")]);
17301};
17302var staticRenderFns = [];
17303render._withStripped = true;
17304
17305
17306/***/ }),
17307
17308/***/ "./resources/js/bootstrap.js":
17309/*!***********************************!*\
17310  !*** ./resources/js/bootstrap.js ***!
17311  \***********************************/
17312/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
17313
17314"use strict";
17315__webpack_require__.r(__webpack_exports__);
17316/* harmony import */ var laravel_echo__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! laravel-echo */ "./node_modules/laravel-echo/dist/echo.js");
17317window._ = __webpack_require__(/*! lodash */ "./node_modules/lodash/lodash.js");
17318try {
17319  __webpack_require__(/*! bootstrap */ "./node_modules/bootstrap/dist/js/bootstrap.esm.js");
17320} catch (e) {}
17321
17322/**
17323 * We'll load the axios HTTP library which allows us to easily issue requests
17324 * to our Laravel back-end. This library automatically handles sending the
17325 * CSRF token as a header based on the value of the "XSRF" token cookie.
17326 */
17327
17328window.axios = __webpack_require__(/*! axios */ "./node_modules/axios/index.js");
17329window.axios.defaults.headers.common["X-Requested-With"] = "XMLHttpRequest";
17330
17331/**
17332 * Echo exposes an expressive API for subscribing to channels and listening
17333 * for events that are broadcast by Laravel. Echo and event broadcasting
17334 * allows your team to easily build robust real-time web applications.
17335 */
17336
17337
17338window.Pusher = __webpack_require__(/*! pusher-js */ "./node_modules/pusher-js/dist/web/pusher.js");
17339window.Echo = new laravel_echo__WEBPACK_IMPORTED_MODULE_0__["default"]({
17340  broadcaster: "pusher",
17341  key: "eea482b308340110302f",
17342  cluster: "ap3",
17343  forceTLS: true
17344});
17345
17346/***/ }),
17347
vendor: 140,165 bytes, lines 17348-21846
17348/***/ "./node_modules/bootstrap/dist/js/bootstrap.esm.js":
17349/*!*********************************************************!*\
17350  !*** ./node_modules/bootstrap/dist/js/bootstrap.esm.js ***!
17351  \*********************************************************/
17352/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
17353
17354"use strict";
17355__webpack_require__.r(__webpack_exports__);
17356/* harmony export */ __webpack_require__.d(__webpack_exports__, {
17357/* harmony export */   Alert: () => (/* binding */ Alert),
17358/* harmony export */   Button: () => (/* binding */ Button),
17359/* harmony export */   Carousel: () => (/* binding */ Carousel),
17360/* harmony export */   Collapse: () => (/* binding */ Collapse),
17361/* harmony export */   Dropdown: () => (/* binding */ Dropdown),
17362/* harmony export */   Modal: () => (/* binding */ Modal),
17363/* harmony export */   Offcanvas: () => (/* binding */ Offcanvas),
17364/* harmony export */   Popover: () => (/* binding */ Popover),
17365/* harmony export */   ScrollSpy: () => (/* binding */ ScrollSpy),
17366/* harmony export */   Tab: () => (/* binding */ Tab),
17367/* harmony export */   Toast: () => (/* binding */ Toast),
17368/* harmony export */   Tooltip: () => (/* binding */ Tooltip)
17369/* harmony export */ });
17370/* harmony import */ var _popperjs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @popperjs/core */ "./node_modules/@popperjs/core/lib/index.js");
17371/* harmony import */ var _popperjs_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @popperjs/core */ "./node_modules/@popperjs/core/lib/popper.js");
17372/*!
17373  * Bootstrap v5.3.3 (https://getbootstrap.com/)
17374  * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
17375  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
17376  */
17377
17378
17379/**
17380 * --------------------------------------------------------------------------
17381 * Bootstrap dom/data.js
17382 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
17383 * --------------------------------------------------------------------------
17384 */
17385
17386/**
17387 * Constants
17388 */
17389
17390const elementMap = new Map();
17391const Data = {
17392  set(element, key, instance) {
17393    if (!elementMap.has(element)) {
17394      elementMap.set(element, new Map());
17395    }
17396    const instanceMap = elementMap.get(element);
17397
17398    // make it clear we only want one instance per element
17399    // can be removed later when multiple key/instances are fine to be used
17400    if (!instanceMap.has(key) && instanceMap.size !== 0) {
17401      // eslint-disable-next-line no-console
17402      console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`);
17403      return;
17404    }
17405    instanceMap.set(key, instance);
17406  },
17407  get(element, key) {
17408    if (elementMap.has(element)) {
17409      return elementMap.get(element).get(key) || null;
17410    }
17411    return null;
17412  },
17413  remove(element, key) {
17414    if (!elementMap.has(element)) {
17415      return;
17416    }
17417    const instanceMap = elementMap.get(element);
17418    instanceMap.delete(key);
17419
17420    // free up element references if there are no instances left for an element
17421    if (instanceMap.size === 0) {
17422      elementMap.delete(element);
17423    }
17424  }
17425};
17426
17427/**
17428 * --------------------------------------------------------------------------
17429 * Bootstrap util/index.js
17430 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
17431 * --------------------------------------------------------------------------
17432 */
17433
17434const MAX_UID = 1000000;
17435const MILLISECONDS_MULTIPLIER = 1000;
17436const TRANSITION_END = 'transitionend';
17437
17438/**
17439 * Properly escape IDs selectors to handle weird IDs
17440 * @param {string} selector
17441 * @returns {string}
17442 */
17443const parseSelector = selector => {
17444  if (selector && window.CSS && window.CSS.escape) {
17445    // document.querySelector needs escaping to handle IDs (html5+) containing for instance /
17446    selector = selector.replace(/#([^\s"#']+)/g, (match, id) => `#${CSS.escape(id)}`);
17447  }
17448  return selector;
17449};
17450
17451// Shout-out Angus Croll (https://goo.gl/pxwQGp)
17452const toType = object => {
17453  if (object === null || object === undefined) {
17454    return `${object}`;
17455  }
17456  return Object.prototype.toString.call(object).match(/\s([a-z]+)/i)[1].toLowerCase();
17457};
17458
17459/**
17460 * Public Util API
17461 */
17462
17463const getUID = prefix => {
17464  do {
17465    prefix += Math.floor(Math.random() * MAX_UID);
17466  } while (document.getElementById(prefix));
17467  return prefix;
17468};
17469const getTransitionDurationFromElement = element => {
17470  if (!element) {
17471    return 0;
17472  }
17473
17474  // Get transition-duration of the element
17475  let {
17476    transitionDuration,
17477    transitionDelay
17478  } = window.getComputedStyle(element);
17479  const floatTransitionDuration = Number.parseFloat(transitionDuration);
17480  const floatTransitionDelay = Number.parseFloat(transitionDelay);
17481
17482  // Return 0 if element or transition duration is not found
17483  if (!floatTransitionDuration && !floatTransitionDelay) {
17484    return 0;
17485  }
17486
17487  // If multiple durations are defined, take the first
17488  transitionDuration = transitionDuration.split(',')[0];
17489  transitionDelay = transitionDelay.split(',')[0];
17490  return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;
17491};
17492const triggerTransitionEnd = element => {
17493  element.dispatchEvent(new Event(TRANSITION_END));
17494};
17495const isElement = object => {
17496  if (!object || typeof object !== 'object') {
17497    return false;
17498  }
17499  if (typeof object.jquery !== 'undefined') {
17500    object = object[0];
17501  }
17502  return typeof object.nodeType !== 'undefined';
17503};
17504const getElement = object => {
17505  // it's a jQuery object or a node element
17506  if (isElement(object)) {
17507    return object.jquery ? object[0] : object;
17508  }
17509  if (typeof object === 'string' && object.length > 0) {
17510    return document.querySelector(parseSelector(object));
17511  }
17512  return null;
17513};
17514const isVisible = element => {
17515  if (!isElement(element) || element.getClientRects().length === 0) {
17516    return false;
17517  }
17518  const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible';
17519  // Handle `details` element as its content may falsie appear visible when it is closed
17520  const closedDetails = element.closest('details:not([open])');
17521  if (!closedDetails) {
17522    return elementIsVisible;
17523  }
17524  if (closedDetails !== element) {
17525    const summary = element.closest('summary');
17526    if (summary && summary.parentNode !== closedDetails) {
17527      return false;
17528    }
17529    if (summary === null) {
17530      return false;
17531    }
17532  }
17533  return elementIsVisible;
17534};
17535const isDisabled = element => {
17536  if (!element || element.nodeType !== Node.ELEMENT_NODE) {
17537    return true;
17538  }
17539  if (element.classList.contains('disabled')) {
17540    return true;
17541  }
17542  if (typeof element.disabled !== 'undefined') {
17543    return element.disabled;
17544  }
17545  return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false';
17546};
17547const findShadowRoot = element => {
17548  if (!document.documentElement.attachShadow) {
17549    return null;
17550  }
17551
17552  // Can find the shadow root otherwise it'll return the document
17553  if (typeof element.getRootNode === 'function') {
17554    const root = element.getRootNode();
17555    return root instanceof ShadowRoot ? root : null;
17556  }
17557  if (element instanceof ShadowRoot) {
17558    return element;
17559  }
17560
17561  // when we don't find a shadow root
17562  if (!element.parentNode) {
17563    return null;
17564  }
17565  return findShadowRoot(element.parentNode);
17566};
17567const noop = () => {};
17568
17569/**
17570 * Trick to restart an element's animation
17571 *
17572 * @param {HTMLElement} element
17573 * @return void
17574 *
17575 * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation
17576 */
17577const reflow = element => {
17578  element.offsetHeight; // eslint-disable-line no-unused-expressions
17579};
17580const getjQuery = () => {
17581  if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {
17582    return window.jQuery;
17583  }
17584  return null;
17585};
17586const DOMContentLoadedCallbacks = [];
17587const onDOMContentLoaded = callback => {
17588  if (document.readyState === 'loading') {
17589    // add listener on the first call when the document is in loading state
17590    if (!DOMContentLoadedCallbacks.length) {
17591      document.addEventListener('DOMContentLoaded', () => {
17592        for (const callback of DOMContentLoadedCallbacks) {
17593          callback();
17594        }
17595      });
17596    }
17597    DOMContentLoadedCallbacks.push(callback);
17598  } else {
17599    callback();
17600  }
17601};
17602const isRTL = () => document.documentElement.dir === 'rtl';
17603const defineJQueryPlugin = plugin => {
17604  onDOMContentLoaded(() => {
17605    const $ = getjQuery();
17606    /* istanbul ignore if */
17607    if ($) {
17608      const name = plugin.NAME;
17609      const JQUERY_NO_CONFLICT = $.fn[name];
17610      $.fn[name] = plugin.jQueryInterface;
17611      $.fn[name].Constructor = plugin;
17612      $.fn[name].noConflict = () => {
17613        $.fn[name] = JQUERY_NO_CONFLICT;
17614        return plugin.jQueryInterface;
17615      };
17616    }
17617  });
17618};
17619const execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {
17620  return typeof possibleCallback === 'function' ? possibleCallback(...args) : defaultValue;
17621};
17622const executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {
17623  if (!waitForTransition) {
17624    execute(callback);
17625    return;
17626  }
17627  const durationPadding = 5;
17628  const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;
17629  let called = false;
17630  const handler = ({
17631    target
17632  }) => {
17633    if (target !== transitionElement) {
17634      return;
17635    }
17636    called = true;
17637    transitionElement.removeEventListener(TRANSITION_END, handler);
17638    execute(callback);
17639  };
17640  transitionElement.addEventListener(TRANSITION_END, handler);
17641  setTimeout(() => {
17642    if (!called) {
17643      triggerTransitionEnd(transitionElement);
17644    }
17645  }, emulatedDuration);
17646};
17647
17648/**
17649 * Return the previous/next element of a list.
17650 *
17651 * @param {array} list    The list of elements
17652 * @param activeElement   The active element
17653 * @param shouldGetNext   Choose to get next or previous element
17654 * @param isCycleAllowed
17655 * @return {Element|elem} The proper element
17656 */
17657const getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {
17658  const listLength = list.length;
17659  let index = list.indexOf(activeElement);
17660
17661  // if the element does not exist in the list return an element
17662  // depending on the direction and if cycle is allowed
17663  if (index === -1) {
17664    return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0];
17665  }
17666  index += shouldGetNext ? 1 : -1;
17667  if (isCycleAllowed) {
17668    index = (index + listLength) % listLength;
17669  }
17670  return list[Math.max(0, Math.min(index, listLength - 1))];
17671};
17672
17673/**
17674 * --------------------------------------------------------------------------
17675 * Bootstrap dom/event-handler.js
17676 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
17677 * --------------------------------------------------------------------------
17678 */
17679
17680
17681/**
17682 * Constants
17683 */
17684
17685const namespaceRegex = /[^.]*(?=\..*)\.|.*/;
17686const stripNameRegex = /\..*/;
17687const stripUidRegex = /::\d+$/;
17688const eventRegistry = {}; // Events storage
17689let uidEvent = 1;
17690const customEvents = {
17691  mouseenter: 'mouseover',
17692  mouseleave: 'mouseout'
17693};
17694const nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']);
17695
17696/**
17697 * Private methods
17698 */
17699
17700function makeEventUid(element, uid) {
17701  return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++;
17702}
17703function getElementEvents(element) {
17704  const uid = makeEventUid(element);
17705  element.uidEvent = uid;
17706  eventRegistry[uid] = eventRegistry[uid] || {};
17707  return eventRegistry[uid];
17708}
17709function bootstrapHandler(element, fn) {
17710  return function handler(event) {
17711    hydrateObj(event, {
17712      delegateTarget: element
17713    });
17714    if (handler.oneOff) {
17715      EventHandler.off(element, event.type, fn);
17716    }
17717    return fn.apply(element, [event]);
17718  };
17719}
17720function bootstrapDelegationHandler(element, selector, fn) {
17721  return function handler(event) {
17722    const domElements = element.querySelectorAll(selector);
17723    for (let {
17724      target
17725    } = event; target && target !== this; target = target.parentNode) {
17726      for (const domElement of domElements) {
17727        if (domElement !== target) {
17728          continue;
17729        }
17730        hydrateObj(event, {
17731          delegateTarget: target
17732        });
17733        if (handler.oneOff) {
17734          EventHandler.off(element, event.type, selector, fn);
17735        }
17736        return fn.apply(target, [event]);
17737      }
17738    }
17739  };
17740}
17741function findHandler(events, callable, delegationSelector = null) {
17742  return Object.values(events).find(event => event.callable === callable && event.delegationSelector === delegationSelector);
17743}
17744function normalizeParameters(originalTypeEvent, handler, delegationFunction) {
17745  const isDelegated = typeof handler === 'string';
17746  // TODO: tooltip passes `false` instead of selector, so we need to check
17747  const callable = isDelegated ? delegationFunction : handler || delegationFunction;
17748  let typeEvent = getTypeEvent(originalTypeEvent);
17749  if (!nativeEvents.has(typeEvent)) {
17750    typeEvent = originalTypeEvent;
17751  }
17752  return [isDelegated, callable, typeEvent];
17753}
17754function addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {
17755  if (typeof originalTypeEvent !== 'string' || !element) {
17756    return;
17757  }
17758  let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);
17759
17760  // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position
17761  // this prevents the handler from being dispatched the same way as mouseover or mouseout does
17762  if (originalTypeEvent in customEvents) {
17763    const wrapFunction = fn => {
17764      return function (event) {
17765        if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) {
17766          return fn.call(this, event);
17767        }
17768      };
17769    };
17770    callable = wrapFunction(callable);
17771  }
17772  const events = getElementEvents(element);
17773  const handlers = events[typeEvent] || (events[typeEvent] = {});
17774  const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null);
17775  if (previousFunction) {
17776    previousFunction.oneOff = previousFunction.oneOff && oneOff;
17777    return;
17778  }
17779  const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''));
17780  const fn = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable);
17781  fn.delegationSelector = isDelegated ? handler : null;
17782  fn.callable = callable;
17783  fn.oneOff = oneOff;
17784  fn.uidEvent = uid;
17785  handlers[uid] = fn;
17786  element.addEventListener(typeEvent, fn, isDelegated);
17787}
17788function removeHandler(element, events, typeEvent, handler, delegationSelector) {
17789  const fn = findHandler(events[typeEvent], handler, delegationSelector);
17790  if (!fn) {
17791    return;
17792  }
17793  element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));
17794  delete events[typeEvent][fn.uidEvent];
17795}
17796function removeNamespacedHandlers(element, events, typeEvent, namespace) {
17797  const storeElementEvent = events[typeEvent] || {};
17798  for (const [handlerKey, event] of Object.entries(storeElementEvent)) {
17799    if (handlerKey.includes(namespace)) {
17800      removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);
17801    }
17802  }
17803}
17804function getTypeEvent(event) {
17805  // allow to get the native events from namespaced events ('click.bs.button' --> 'click')
17806  event = event.replace(stripNameRegex, '');
17807  return customEvents[event] || event;
17808}
17809const EventHandler = {
17810  on(element, event, handler, delegationFunction) {
17811    addHandler(element, event, handler, delegationFunction, false);
17812  },
17813  one(element, event, handler, delegationFunction) {
17814    addHandler(element, event, handler, delegationFunction, true);
17815  },
17816  off(element, originalTypeEvent, handler, delegationFunction) {
17817    if (typeof originalTypeEvent !== 'string' || !element) {
17818      return;
17819    }
17820    const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);
17821    const inNamespace = typeEvent !== originalTypeEvent;
17822    const events = getElementEvents(element);
17823    const storeElementEvent = events[typeEvent] || {};
17824    const isNamespace = originalTypeEvent.startsWith('.');
17825    if (typeof callable !== 'undefined') {
17826      // Simplest case: handler is passed, remove that listener ONLY.
17827      if (!Object.keys(storeElementEvent).length) {
17828        return;
17829      }
17830      removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null);
17831      return;
17832    }
17833    if (isNamespace) {
17834      for (const elementEvent of Object.keys(events)) {
17835        removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));
17836      }
17837    }
17838    for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {
17839      const handlerKey = keyHandlers.replace(stripUidRegex, '');
17840      if (!inNamespace || originalTypeEvent.includes(handlerKey)) {
17841        removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);
17842      }
17843    }
17844  },
17845  trigger(element, event, args) {
17846    if (typeof event !== 'string' || !element) {
17847      return null;
17848    }
17849    const $ = getjQuery();
17850    const typeEvent = getTypeEvent(event);
17851    const inNamespace = event !== typeEvent;
17852    let jQueryEvent = null;
17853    let bubbles = true;
17854    let nativeDispatch = true;
17855    let defaultPrevented = false;
17856    if (inNamespace && $) {
17857      jQueryEvent = $.Event(event, args);
17858      $(element).trigger(jQueryEvent);
17859      bubbles = !jQueryEvent.isPropagationStopped();
17860      nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();
17861      defaultPrevented = jQueryEvent.isDefaultPrevented();
17862    }
17863    const evt = hydrateObj(new Event(event, {
17864      bubbles,
17865      cancelable: true
17866    }), args);
17867    if (defaultPrevented) {
17868      evt.preventDefault();
17869    }
17870    if (nativeDispatch) {
17871      element.dispatchEvent(evt);
17872    }
17873    if (evt.defaultPrevented && jQueryEvent) {
17874      jQueryEvent.preventDefault();
17875    }
17876    return evt;
17877  }
17878};
17879function hydrateObj(obj, meta = {}) {
17880  for (const [key, value] of Object.entries(meta)) {
17881    try {
17882      obj[key] = value;
17883    } catch (_unused) {
17884      Object.defineProperty(obj, key, {
17885        configurable: true,
17886        get() {
17887          return value;
17888        }
17889      });
17890    }
17891  }
17892  return obj;
17893}
17894
17895/**
17896 * --------------------------------------------------------------------------
17897 * Bootstrap dom/manipulator.js
17898 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
17899 * --------------------------------------------------------------------------
17900 */
17901
17902function normalizeData(value) {
17903  if (value === 'true') {
17904    return true;
17905  }
17906  if (value === 'false') {
17907    return false;
17908  }
17909  if (value === Number(value).toString()) {
17910    return Number(value);
17911  }
17912  if (value === '' || value === 'null') {
17913    return null;
17914  }
17915  if (typeof value !== 'string') {
17916    return value;
17917  }
17918  try {
17919    return JSON.parse(decodeURIComponent(value));
17920  } catch (_unused) {
17921    return value;
17922  }
17923}
17924function normalizeDataKey(key) {
17925  return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`);
17926}
17927const Manipulator = {
17928  setDataAttribute(element, key, value) {
17929    element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value);
17930  },
17931  removeDataAttribute(element, key) {
17932    element.removeAttribute(`data-bs-${normalizeDataKey(key)}`);
17933  },
17934  getDataAttributes(element) {
17935    if (!element) {
17936      return {};
17937    }
17938    const attributes = {};
17939    const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'));
17940    for (const key of bsKeys) {
17941      let pureKey = key.replace(/^bs/, '');
17942      pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length);
17943      attributes[pureKey] = normalizeData(element.dataset[key]);
17944    }
17945    return attributes;
17946  },
17947  getDataAttribute(element, key) {
17948    return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`));
17949  }
17950};
17951
17952/**
17953 * --------------------------------------------------------------------------
17954 * Bootstrap util/config.js
17955 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
17956 * --------------------------------------------------------------------------
17957 */
17958
17959
17960/**
17961 * Class definition
17962 */
17963
17964class Config {
17965  // Getters
17966  static get Default() {
17967    return {};
17968  }
17969  static get DefaultType() {
17970    return {};
17971  }
17972  static get NAME() {
17973    throw new Error('You have to implement the static method "NAME", for each component!');
17974  }
17975  _getConfig(config) {
17976    config = this._mergeConfigObj(config);
17977    config = this._configAfterMerge(config);
17978    this._typeCheckConfig(config);
17979    return config;
17980  }
17981  _configAfterMerge(config) {
17982    return config;
17983  }
17984  _mergeConfigObj(config, element) {
17985    const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {}; // try to parse
17986
17987    return {
17988      ...this.constructor.Default,
17989      ...(typeof jsonConfig === 'object' ? jsonConfig : {}),
17990      ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),
17991      ...(typeof config === 'object' ? config : {})
17992    };
17993  }
17994  _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {
17995    for (const [property, expectedTypes] of Object.entries(configTypes)) {
17996      const value = config[property];
17997      const valueType = isElement(value) ? 'element' : toType(value);
17998      if (!new RegExp(expectedTypes).test(valueType)) {
17999        throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".`);
18000      }
18001    }
18002  }
18003}
18004
18005/**
18006 * --------------------------------------------------------------------------
18007 * Bootstrap base-component.js
18008 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
18009 * --------------------------------------------------------------------------
18010 */
18011
18012
18013/**
18014 * Constants
18015 */
18016
18017const VERSION = '5.3.3';
18018
18019/**
18020 * Class definition
18021 */
18022
18023class BaseComponent extends Config {
18024  constructor(element, config) {
18025    super();
18026    element = getElement(element);
18027    if (!element) {
18028      return;
18029    }
18030    this._element = element;
18031    this._config = this._getConfig(config);
18032    Data.set(this._element, this.constructor.DATA_KEY, this);
18033  }
18034
18035  // Public
18036  dispose() {
18037    Data.remove(this._element, this.constructor.DATA_KEY);
18038    EventHandler.off(this._element, this.constructor.EVENT_KEY);
18039    for (const propertyName of Object.getOwnPropertyNames(this)) {
18040      this[propertyName] = null;
18041    }
18042  }
18043  _queueCallback(callback, element, isAnimated = true) {
18044    executeAfterTransition(callback, element, isAnimated);
18045  }
18046  _getConfig(config) {
18047    config = this._mergeConfigObj(config, this._element);
18048    config = this._configAfterMerge(config);
18049    this._typeCheckConfig(config);
18050    return config;
18051  }
18052
18053  // Static
18054  static getInstance(element) {
18055    return Data.get(getElement(element), this.DATA_KEY);
18056  }
18057  static getOrCreateInstance(element, config = {}) {
18058    return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null);
18059  }
18060  static get VERSION() {
18061    return VERSION;
18062  }
18063  static get DATA_KEY() {
18064    return `bs.${this.NAME}`;
18065  }
18066  static get EVENT_KEY() {
18067    return `.${this.DATA_KEY}`;
18068  }
18069  static eventName(name) {
18070    return `${name}${this.EVENT_KEY}`;
18071  }
18072}
18073
18074/**
18075 * --------------------------------------------------------------------------
18076 * Bootstrap dom/selector-engine.js
18077 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
18078 * --------------------------------------------------------------------------
18079 */
18080
18081const getSelector = element => {
18082  let selector = element.getAttribute('data-bs-target');
18083  if (!selector || selector === '#') {
18084    let hrefAttribute = element.getAttribute('href');
18085
18086    // The only valid content that could double as a selector are IDs or classes,
18087    // so everything starting with `#` or `.`. If a "real" URL is used as the selector,
18088    // `document.querySelector` will rightfully complain it is invalid.
18089    // See https://github.com/twbs/bootstrap/issues/32273
18090    if (!hrefAttribute || !hrefAttribute.includes('#') && !hrefAttribute.startsWith('.')) {
18091      return null;
18092    }
18093
18094    // Just in case some CMS puts out a full URL with the anchor appended
18095    if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {
18096      hrefAttribute = `#${hrefAttribute.split('#')[1]}`;
18097    }
18098    selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null;
18099  }
18100  return selector ? selector.split(',').map(sel => parseSelector(sel)).join(',') : null;
18101};
18102const SelectorEngine = {
18103  find(selector, element = document.documentElement) {
18104    return [].concat(...Element.prototype.querySelectorAll.call(element, selector));
18105  },
18106  findOne(selector, element = document.documentElement) {
18107    return Element.prototype.querySelector.call(element, selector);
18108  },
18109  children(element, selector) {
18110    return [].concat(...element.children).filter(child => child.matches(selector));
18111  },
18112  parents(element, selector) {
18113    const parents = [];
18114    let ancestor = element.parentNode.closest(selector);
18115    while (ancestor) {
18116      parents.push(ancestor);
18117      ancestor = ancestor.parentNode.closest(selector);
18118    }
18119    return parents;
18120  },
18121  prev(element, selector) {
18122    let previous = element.previousElementSibling;
18123    while (previous) {
18124      if (previous.matches(selector)) {
18125        return [previous];
18126      }
18127      previous = previous.previousElementSibling;
18128    }
18129    return [];
18130  },
18131  // TODO: this is now unused; remove later along with prev()
18132  next(element, selector) {
18133    let next = element.nextElementSibling;
18134    while (next) {
18135      if (next.matches(selector)) {
18136        return [next];
18137      }
18138      next = next.nextElementSibling;
18139    }
18140    return [];
18141  },
18142  focusableChildren(element) {
18143    const focusables = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable="true"]'].map(selector => `${selector}:not([tabindex^="-"])`).join(',');
18144    return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el));
18145  },
18146  getSelectorFromElement(element) {
18147    const selector = getSelector(element);
18148    if (selector) {
18149      return SelectorEngine.findOne(selector) ? selector : null;
18150    }
18151    return null;
18152  },
18153  getElementFromSelector(element) {
18154    const selector = getSelector(element);
18155    return selector ? SelectorEngine.findOne(selector) : null;
18156  },
18157  getMultipleElementsFromSelector(element) {
18158    const selector = getSelector(element);
18159    return selector ? SelectorEngine.find(selector) : [];
18160  }
18161};
18162
18163/**
18164 * --------------------------------------------------------------------------
18165 * Bootstrap util/component-functions.js
18166 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
18167 * --------------------------------------------------------------------------
18168 */
18169
18170const enableDismissTrigger = (component, method = 'hide') => {
18171  const clickEvent = `click.dismiss${component.EVENT_KEY}`;
18172  const name = component.NAME;
18173  EventHandler.on(document, clickEvent, `[data-bs-dismiss="${name}"]`, function (event) {
18174    if (['A', 'AREA'].includes(this.tagName)) {
18175      event.preventDefault();
18176    }
18177    if (isDisabled(this)) {
18178      return;
18179    }
18180    const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`);
18181    const instance = component.getOrCreateInstance(target);
18182
18183    // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method
18184    instance[method]();
18185  });
18186};
18187
18188/**
18189 * --------------------------------------------------------------------------
18190 * Bootstrap alert.js
18191 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
18192 * --------------------------------------------------------------------------
18193 */
18194
18195
18196/**
18197 * Constants
18198 */
18199
18200const NAME$f = 'alert';
18201const DATA_KEY$a = 'bs.alert';
18202const EVENT_KEY$b = `.${DATA_KEY$a}`;
18203const EVENT_CLOSE = `close${EVENT_KEY$b}`;
18204const EVENT_CLOSED = `closed${EVENT_KEY$b}`;
18205const CLASS_NAME_FADE$5 = 'fade';
18206const CLASS_NAME_SHOW$8 = 'show';
18207
18208/**
18209 * Class definition
18210 */
18211
18212class Alert extends BaseComponent {
18213  // Getters
18214  static get NAME() {
18215    return NAME$f;
18216  }
18217
18218  // Public
18219  close() {
18220    const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE);
18221    if (closeEvent.defaultPrevented) {
18222      return;
18223    }
18224    this._element.classList.remove(CLASS_NAME_SHOW$8);
18225    const isAnimated = this._element.classList.contains(CLASS_NAME_FADE$5);
18226    this._queueCallback(() => this._destroyElement(), this._element, isAnimated);
18227  }
18228
18229  // Private
18230  _destroyElement() {
18231    this._element.remove();
18232    EventHandler.trigger(this._element, EVENT_CLOSED);
18233    this.dispose();
18234  }
18235
18236  // Static
18237  static jQueryInterface(config) {
18238    return this.each(function () {
18239      const data = Alert.getOrCreateInstance(this);
18240      if (typeof config !== 'string') {
18241        return;
18242      }
18243      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
18244        throw new TypeError(`No method named "${config}"`);
18245      }
18246      data[config](this);
18247    });
18248  }
18249}
18250
18251/**
18252 * Data API implementation
18253 */
18254
18255enableDismissTrigger(Alert, 'close');
18256
18257/**
18258 * jQuery
18259 */
18260
18261defineJQueryPlugin(Alert);
18262
18263/**
18264 * --------------------------------------------------------------------------
18265 * Bootstrap button.js
18266 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
18267 * --------------------------------------------------------------------------
18268 */
18269
18270
18271/**
18272 * Constants
18273 */
18274
18275const NAME$e = 'button';
18276const DATA_KEY$9 = 'bs.button';
18277const EVENT_KEY$a = `.${DATA_KEY$9}`;
18278const DATA_API_KEY$6 = '.data-api';
18279const CLASS_NAME_ACTIVE$3 = 'active';
18280const SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle="button"]';
18281const EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$a}${DATA_API_KEY$6}`;
18282
18283/**
18284 * Class definition
18285 */
18286
18287class Button extends BaseComponent {
18288  // Getters
18289  static get NAME() {
18290    return NAME$e;
18291  }
18292
18293  // Public
18294  toggle() {
18295    // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method
18296    this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE$3));
18297  }
18298
18299  // Static
18300  static jQueryInterface(config) {
18301    return this.each(function () {
18302      const data = Button.getOrCreateInstance(this);
18303      if (config === 'toggle') {
18304        data[config]();
18305      }
18306    });
18307  }
18308}
18309
18310/**
18311 * Data API implementation
18312 */
18313
18314EventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, event => {
18315  event.preventDefault();
18316  const button = event.target.closest(SELECTOR_DATA_TOGGLE$5);
18317  const data = Button.getOrCreateInstance(button);
18318  data.toggle();
18319});
18320
18321/**
18322 * jQuery
18323 */
18324
18325defineJQueryPlugin(Button);
18326
18327/**
18328 * --------------------------------------------------------------------------
18329 * Bootstrap util/swipe.js
18330 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
18331 * --------------------------------------------------------------------------
18332 */
18333
18334
18335/**
18336 * Constants
18337 */
18338
18339const NAME$d = 'swipe';
18340const EVENT_KEY$9 = '.bs.swipe';
18341const EVENT_TOUCHSTART = `touchstart${EVENT_KEY$9}`;
18342const EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$9}`;
18343const EVENT_TOUCHEND = `touchend${EVENT_KEY$9}`;
18344const EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$9}`;
18345const EVENT_POINTERUP = `pointerup${EVENT_KEY$9}`;
18346const POINTER_TYPE_TOUCH = 'touch';
18347const POINTER_TYPE_PEN = 'pen';
18348const CLASS_NAME_POINTER_EVENT = 'pointer-event';
18349const SWIPE_THRESHOLD = 40;
18350const Default$c = {
18351  endCallback: null,
18352  leftCallback: null,
18353  rightCallback: null
18354};
18355const DefaultType$c = {
18356  endCallback: '(function|null)',
18357  leftCallback: '(function|null)',
18358  rightCallback: '(function|null)'
18359};
18360
18361/**
18362 * Class definition
18363 */
18364
18365class Swipe extends Config {
18366  constructor(element, config) {
18367    super();
18368    this._element = element;
18369    if (!element || !Swipe.isSupported()) {
18370      return;
18371    }
18372    this._config = this._getConfig(config);
18373    this._deltaX = 0;
18374    this._supportPointerEvents = Boolean(window.PointerEvent);
18375    this._initEvents();
18376  }
18377
18378  // Getters
18379  static get Default() {
18380    return Default$c;
18381  }
18382  static get DefaultType() {
18383    return DefaultType$c;
18384  }
18385  static get NAME() {
18386    return NAME$d;
18387  }
18388
18389  // Public
18390  dispose() {
18391    EventHandler.off(this._element, EVENT_KEY$9);
18392  }
18393
18394  // Private
18395  _start(event) {
18396    if (!this._supportPointerEvents) {
18397      this._deltaX = event.touches[0].clientX;
18398      return;
18399    }
18400    if (this._eventIsPointerPenTouch(event)) {
18401      this._deltaX = event.clientX;
18402    }
18403  }
18404  _end(event) {
18405    if (this._eventIsPointerPenTouch(event)) {
18406      this._deltaX = event.clientX - this._deltaX;
18407    }
18408    this._handleSwipe();
18409    execute(this._config.endCallback);
18410  }
18411  _move(event) {
18412    this._deltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this._deltaX;
18413  }
18414  _handleSwipe() {
18415    const absDeltaX = Math.abs(this._deltaX);
18416    if (absDeltaX <= SWIPE_THRESHOLD) {
18417      return;
18418    }
18419    const direction = absDeltaX / this._deltaX;
18420    this._deltaX = 0;
18421    if (!direction) {
18422      return;
18423    }
18424    execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback);
18425  }
18426  _initEvents() {
18427    if (this._supportPointerEvents) {
18428      EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event));
18429      EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event));
18430      this._element.classList.add(CLASS_NAME_POINTER_EVENT);
18431    } else {
18432      EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event));
18433      EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event));
18434      EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event));
18435    }
18436  }
18437  _eventIsPointerPenTouch(event) {
18438    return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH);
18439  }
18440
18441  // Static
18442  static isSupported() {
18443    return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;
18444  }
18445}
18446
18447/**
18448 * --------------------------------------------------------------------------
18449 * Bootstrap carousel.js
18450 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
18451 * --------------------------------------------------------------------------
18452 */
18453
18454
18455/**
18456 * Constants
18457 */
18458
18459const NAME$c = 'carousel';
18460const DATA_KEY$8 = 'bs.carousel';
18461const EVENT_KEY$8 = `.${DATA_KEY$8}`;
18462const DATA_API_KEY$5 = '.data-api';
18463const ARROW_LEFT_KEY$1 = 'ArrowLeft';
18464const ARROW_RIGHT_KEY$1 = 'ArrowRight';
18465const TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch
18466
18467const ORDER_NEXT = 'next';
18468const ORDER_PREV = 'prev';
18469const DIRECTION_LEFT = 'left';
18470const DIRECTION_RIGHT = 'right';
18471const EVENT_SLIDE = `slide${EVENT_KEY$8}`;
18472const EVENT_SLID = `slid${EVENT_KEY$8}`;
18473const EVENT_KEYDOWN$1 = `keydown${EVENT_KEY$8}`;
18474const EVENT_MOUSEENTER$1 = `mouseenter${EVENT_KEY$8}`;
18475const EVENT_MOUSELEAVE$1 = `mouseleave${EVENT_KEY$8}`;
18476const EVENT_DRAG_START = `dragstart${EVENT_KEY$8}`;
18477const EVENT_LOAD_DATA_API$3 = `load${EVENT_KEY$8}${DATA_API_KEY$5}`;
18478const EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$8}${DATA_API_KEY$5}`;
18479const CLASS_NAME_CAROUSEL = 'carousel';
18480const CLASS_NAME_ACTIVE$2 = 'active';
18481const CLASS_NAME_SLIDE = 'slide';
18482const CLASS_NAME_END = 'carousel-item-end';
18483const CLASS_NAME_START = 'carousel-item-start';
18484const CLASS_NAME_NEXT = 'carousel-item-next';
18485const CLASS_NAME_PREV = 'carousel-item-prev';
18486const SELECTOR_ACTIVE = '.active';
18487const SELECTOR_ITEM = '.carousel-item';
18488const SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM;
18489const SELECTOR_ITEM_IMG = '.carousel-item img';
18490const SELECTOR_INDICATORS = '.carousel-indicators';
18491const SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]';
18492const SELECTOR_DATA_RIDE = '[data-bs-ride="carousel"]';
18493const KEY_TO_DIRECTION = {
18494  [ARROW_LEFT_KEY$1]: DIRECTION_RIGHT,
18495  [ARROW_RIGHT_KEY$1]: DIRECTION_LEFT
18496};
18497const Default$b = {
18498  interval: 5000,
18499  keyboard: true,
18500  pause: 'hover',
18501  ride: false,
18502  touch: true,
18503  wrap: true
18504};
18505const DefaultType$b = {
18506  interval: '(number|boolean)',
18507  // TODO:v6 remove boolean support
18508  keyboard: 'boolean',
18509  pause: '(string|boolean)',
18510  ride: '(boolean|string)',
18511  touch: 'boolean',
18512  wrap: 'boolean'
18513};
18514
18515/**
18516 * Class definition
18517 */
18518
18519class Carousel extends BaseComponent {
18520  constructor(element, config) {
18521    super(element, config);
18522    this._interval = null;
18523    this._activeElement = null;
18524    this._isSliding = false;
18525    this.touchTimeout = null;
18526    this._swipeHelper = null;
18527    this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element);
18528    this._addEventListeners();
18529    if (this._config.ride === CLASS_NAME_CAROUSEL) {
18530      this.cycle();
18531    }
18532  }
18533
18534  // Getters
18535  static get Default() {
18536    return Default$b;
18537  }
18538  static get DefaultType() {
18539    return DefaultType$b;
18540  }
18541  static get NAME() {
18542    return NAME$c;
18543  }
18544
18545  // Public
18546  next() {
18547    this._slide(ORDER_NEXT);
18548  }
18549  nextWhenVisible() {
18550    // FIXME TODO use `document.visibilityState`
18551    // Don't call next when the page isn't visible
18552    // or the carousel or its parent isn't visible
18553    if (!document.hidden && isVisible(this._element)) {
18554      this.next();
18555    }
18556  }
18557  prev() {
18558    this._slide(ORDER_PREV);
18559  }
18560  pause() {
18561    if (this._isSliding) {
18562      triggerTransitionEnd(this._element);
18563    }
18564    this._clearInterval();
18565  }
18566  cycle() {
18567    this._clearInterval();
18568    this._updateInterval();
18569    this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval);
18570  }
18571  _maybeEnableCycle() {
18572    if (!this._config.ride) {
18573      return;
18574    }
18575    if (this._isSliding) {
18576      EventHandler.one(this._element, EVENT_SLID, () => this.cycle());
18577      return;
18578    }
18579    this.cycle();
18580  }
18581  to(index) {
18582    const items = this._getItems();
18583    if (index > items.length - 1 || index < 0) {
18584      return;
18585    }
18586    if (this._isSliding) {
18587      EventHandler.one(this._element, EVENT_SLID, () => this.to(index));
18588      return;
18589    }
18590    const activeIndex = this._getItemIndex(this._getActive());
18591    if (activeIndex === index) {
18592      return;
18593    }
18594    const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV;
18595    this._slide(order, items[index]);
18596  }
18597  dispose() {
18598    if (this._swipeHelper) {
18599      this._swipeHelper.dispose();
18600    }
18601    super.dispose();
18602  }
18603
18604  // Private
18605  _configAfterMerge(config) {
18606    config.defaultInterval = config.interval;
18607    return config;
18608  }
18609  _addEventListeners() {
18610    if (this._config.keyboard) {
18611      EventHandler.on(this._element, EVENT_KEYDOWN$1, event => this._keydown(event));
18612    }
18613    if (this._config.pause === 'hover') {
18614      EventHandler.on(this._element, EVENT_MOUSEENTER$1, () => this.pause());
18615      EventHandler.on(this._element, EVENT_MOUSELEAVE$1, () => this._maybeEnableCycle());
18616    }
18617    if (this._config.touch && Swipe.isSupported()) {
18618      this._addTouchEventListeners();
18619    }
18620  }
18621  _addTouchEventListeners() {
18622    for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {
18623      EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault());
18624    }
18625    const endCallBack = () => {
18626      if (this._config.pause !== 'hover') {
18627        return;
18628      }
18629
18630      // If it's a touch-enabled device, mouseenter/leave are fired as
18631      // part of the mouse compatibility events on first tap - the carousel
18632      // would stop cycling until user tapped out of it;
18633      // here, we listen for touchend, explicitly pause the carousel
18634      // (as if it's the second time we tap on it, mouseenter compat event
18635      // is NOT fired) and after a timeout (to allow for mouse compatibility
18636      // events to fire) we explicitly restart cycling
18637
18638      this.pause();
18639      if (this.touchTimeout) {
18640        clearTimeout(this.touchTimeout);
18641      }
18642      this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval);
18643    };
18644    const swipeConfig = {
18645      leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),
18646      rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),
18647      endCallback: endCallBack
18648    };
18649    this._swipeHelper = new Swipe(this._element, swipeConfig);
18650  }
18651  _keydown(event) {
18652    if (/input|textarea/i.test(event.target.tagName)) {
18653      return;
18654    }
18655    const direction = KEY_TO_DIRECTION[event.key];
18656    if (direction) {
18657      event.preventDefault();
18658      this._slide(this._directionToOrder(direction));
18659    }
18660  }
18661  _getItemIndex(element) {
18662    return this._getItems().indexOf(element);
18663  }
18664  _setActiveIndicatorElement(index) {
18665    if (!this._indicatorsElement) {
18666      return;
18667    }
18668    const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement);
18669    activeIndicator.classList.remove(CLASS_NAME_ACTIVE$2);
18670    activeIndicator.removeAttribute('aria-current');
18671    const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to="${index}"]`, this._indicatorsElement);
18672    if (newActiveIndicator) {
18673      newActiveIndicator.classList.add(CLASS_NAME_ACTIVE$2);
18674      newActiveIndicator.setAttribute('aria-current', 'true');
18675    }
18676  }
18677  _updateInterval() {
18678    const element = this._activeElement || this._getActive();
18679    if (!element) {
18680      return;
18681    }
18682    const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10);
18683    this._config.interval = elementInterval || this._config.defaultInterval;
18684  }
18685  _slide(order, element = null) {
18686    if (this._isSliding) {
18687      return;
18688    }
18689    const activeElement = this._getActive();
18690    const isNext = order === ORDER_NEXT;
18691    const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap);
18692    if (nextElement === activeElement) {
18693      return;
18694    }
18695    const nextElementIndex = this._getItemIndex(nextElement);
18696    const triggerEvent = eventName => {
18697      return EventHandler.trigger(this._element, eventName, {
18698        relatedTarget: nextElement,
18699        direction: this._orderToDirection(order),
18700        from: this._getItemIndex(activeElement),
18701        to: nextElementIndex
18702      });
18703    };
18704    const slideEvent = triggerEvent(EVENT_SLIDE);
18705    if (slideEvent.defaultPrevented) {
18706      return;
18707    }
18708    if (!activeElement || !nextElement) {
18709      // Some weirdness is happening, so we bail
18710      // TODO: change tests that use empty divs to avoid this check
18711      return;
18712    }
18713    const isCycling = Boolean(this._interval);
18714    this.pause();
18715    this._isSliding = true;
18716    this._setActiveIndicatorElement(nextElementIndex);
18717    this._activeElement = nextElement;
18718    const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END;
18719    const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV;
18720    nextElement.classList.add(orderClassName);
18721    reflow(nextElement);
18722    activeElement.classList.add(directionalClassName);
18723    nextElement.classList.add(directionalClassName);
18724    const completeCallBack = () => {
18725      nextElement.classList.remove(directionalClassName, orderClassName);
18726      nextElement.classList.add(CLASS_NAME_ACTIVE$2);
18727      activeElement.classList.remove(CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName);
18728      this._isSliding = false;
18729      triggerEvent(EVENT_SLID);
18730    };
18731    this._queueCallback(completeCallBack, activeElement, this._isAnimated());
18732    if (isCycling) {
18733      this.cycle();
18734    }
18735  }
18736  _isAnimated() {
18737    return this._element.classList.contains(CLASS_NAME_SLIDE);
18738  }
18739  _getActive() {
18740    return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);
18741  }
18742  _getItems() {
18743    return SelectorEngine.find(SELECTOR_ITEM, this._element);
18744  }
18745  _clearInterval() {
18746    if (this._interval) {
18747      clearInterval(this._interval);
18748      this._interval = null;
18749    }
18750  }
18751  _directionToOrder(direction) {
18752    if (isRTL()) {
18753      return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT;
18754    }
18755    return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV;
18756  }
18757  _orderToDirection(order) {
18758    if (isRTL()) {
18759      return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT;
18760    }
18761    return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT;
18762  }
18763
18764  // Static
18765  static jQueryInterface(config) {
18766    return this.each(function () {
18767      const data = Carousel.getOrCreateInstance(this, config);
18768      if (typeof config === 'number') {
18769        data.to(config);
18770        return;
18771      }
18772      if (typeof config === 'string') {
18773        if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
18774          throw new TypeError(`No method named "${config}"`);
18775        }
18776        data[config]();
18777      }
18778    });
18779  }
18780}
18781
18782/**
18783 * Data API implementation
18784 */
18785
18786EventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, function (event) {
18787  const target = SelectorEngine.getElementFromSelector(this);
18788  if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {
18789    return;
18790  }
18791  event.preventDefault();
18792  const carousel = Carousel.getOrCreateInstance(target);
18793  const slideIndex = this.getAttribute('data-bs-slide-to');
18794  if (slideIndex) {
18795    carousel.to(slideIndex);
18796    carousel._maybeEnableCycle();
18797    return;
18798  }
18799  if (Manipulator.getDataAttribute(this, 'slide') === 'next') {
18800    carousel.next();
18801    carousel._maybeEnableCycle();
18802    return;
18803  }
18804  carousel.prev();
18805  carousel._maybeEnableCycle();
18806});
18807EventHandler.on(window, EVENT_LOAD_DATA_API$3, () => {
18808  const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE);
18809  for (const carousel of carousels) {
18810    Carousel.getOrCreateInstance(carousel);
18811  }
18812});
18813
18814/**
18815 * jQuery
18816 */
18817
18818defineJQueryPlugin(Carousel);
18819
18820/**
18821 * --------------------------------------------------------------------------
18822 * Bootstrap collapse.js
18823 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
18824 * --------------------------------------------------------------------------
18825 */
18826
18827
18828/**
18829 * Constants
18830 */
18831
18832const NAME$b = 'collapse';
18833const DATA_KEY$7 = 'bs.collapse';
18834const EVENT_KEY$7 = `.${DATA_KEY$7}`;
18835const DATA_API_KEY$4 = '.data-api';
18836const EVENT_SHOW$6 = `show${EVENT_KEY$7}`;
18837const EVENT_SHOWN$6 = `shown${EVENT_KEY$7}`;
18838const EVENT_HIDE$6 = `hide${EVENT_KEY$7}`;
18839const EVENT_HIDDEN$6 = `hidden${EVENT_KEY$7}`;
18840const EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$7}${DATA_API_KEY$4}`;
18841const CLASS_NAME_SHOW$7 = 'show';
18842const CLASS_NAME_COLLAPSE = 'collapse';
18843const CLASS_NAME_COLLAPSING = 'collapsing';
18844const CLASS_NAME_COLLAPSED = 'collapsed';
18845const CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`;
18846const CLASS_NAME_HORIZONTAL = 'collapse-horizontal';
18847const WIDTH = 'width';
18848const HEIGHT = 'height';
18849const SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing';
18850const SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle="collapse"]';
18851const Default$a = {
18852  parent: null,
18853  toggle: true
18854};
18855const DefaultType$a = {
18856  parent: '(null|element)',
18857  toggle: 'boolean'
18858};
18859
18860/**
18861 * Class definition
18862 */
18863
18864class Collapse extends BaseComponent {
18865  constructor(element, config) {
18866    super(element, config);
18867    this._isTransitioning = false;
18868    this._triggerArray = [];
18869    const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$4);
18870    for (const elem of toggleList) {
18871      const selector = SelectorEngine.getSelectorFromElement(elem);
18872      const filterElement = SelectorEngine.find(selector).filter(foundElement => foundElement === this._element);
18873      if (selector !== null && filterElement.length) {
18874        this._triggerArray.push(elem);
18875      }
18876    }
18877    this._initializeChildren();
18878    if (!this._config.parent) {
18879      this._addAriaAndCollapsedClass(this._triggerArray, this._isShown());
18880    }
18881    if (this._config.toggle) {
18882      this.toggle();
18883    }
18884  }
18885
18886  // Getters
18887  static get Default() {
18888    return Default$a;
18889  }
18890  static get DefaultType() {
18891    return DefaultType$a;
18892  }
18893  static get NAME() {
18894    return NAME$b;
18895  }
18896
18897  // Public
18898  toggle() {
18899    if (this._isShown()) {
18900      this.hide();
18901    } else {
18902      this.show();
18903    }
18904  }
18905  show() {
18906    if (this._isTransitioning || this._isShown()) {
18907      return;
18908    }
18909    let activeChildren = [];
18910
18911    // find active children
18912    if (this._config.parent) {
18913      activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter(element => element !== this._element).map(element => Collapse.getOrCreateInstance(element, {
18914        toggle: false
18915      }));
18916    }
18917    if (activeChildren.length && activeChildren[0]._isTransitioning) {
18918      return;
18919    }
18920    const startEvent = EventHandler.trigger(this._element, EVENT_SHOW$6);
18921    if (startEvent.defaultPrevented) {
18922      return;
18923    }
18924    for (const activeInstance of activeChildren) {
18925      activeInstance.hide();
18926    }
18927    const dimension = this._getDimension();
18928    this._element.classList.remove(CLASS_NAME_COLLAPSE);
18929    this._element.classList.add(CLASS_NAME_COLLAPSING);
18930    this._element.style[dimension] = 0;
18931    this._addAriaAndCollapsedClass(this._triggerArray, true);
18932    this._isTransitioning = true;
18933    const complete = () => {
18934      this._isTransitioning = false;
18935      this._element.classList.remove(CLASS_NAME_COLLAPSING);
18936      this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);
18937      this._element.style[dimension] = '';
18938      EventHandler.trigger(this._element, EVENT_SHOWN$6);
18939    };
18940    const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
18941    const scrollSize = `scroll${capitalizedDimension}`;
18942    this._queueCallback(complete, this._element, true);
18943    this._element.style[dimension] = `${this._element[scrollSize]}px`;
18944  }
18945  hide() {
18946    if (this._isTransitioning || !this._isShown()) {
18947      return;
18948    }
18949    const startEvent = EventHandler.trigger(this._element, EVENT_HIDE$6);
18950    if (startEvent.defaultPrevented) {
18951      return;
18952    }
18953    const dimension = this._getDimension();
18954    this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;
18955    reflow(this._element);
18956    this._element.classList.add(CLASS_NAME_COLLAPSING);
18957    this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);
18958    for (const trigger of this._triggerArray) {
18959      const element = SelectorEngine.getElementFromSelector(trigger);
18960      if (element && !this._isShown(element)) {
18961        this._addAriaAndCollapsedClass([trigger], false);
18962      }
18963    }
18964    this._isTransitioning = true;
18965    const complete = () => {
18966      this._isTransitioning = false;
18967      this._element.classList.remove(CLASS_NAME_COLLAPSING);
18968      this._element.classList.add(CLASS_NAME_COLLAPSE);
18969      EventHandler.trigger(this._element, EVENT_HIDDEN$6);
18970    };
18971    this._element.style[dimension] = '';
18972    this._queueCallback(complete, this._element, true);
18973  }
18974  _isShown(element = this._element) {
18975    return element.classList.contains(CLASS_NAME_SHOW$7);
18976  }
18977
18978  // Private
18979  _configAfterMerge(config) {
18980    config.toggle = Boolean(config.toggle); // Coerce string values
18981    config.parent = getElement(config.parent);
18982    return config;
18983  }
18984  _getDimension() {
18985    return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT;
18986  }
18987  _initializeChildren() {
18988    if (!this._config.parent) {
18989      return;
18990    }
18991    const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$4);
18992    for (const element of children) {
18993      const selected = SelectorEngine.getElementFromSelector(element);
18994      if (selected) {
18995        this._addAriaAndCollapsedClass([element], this._isShown(selected));
18996      }
18997    }
18998  }
18999  _getFirstLevelChildren(selector) {
19000    const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent);
19001    // remove children if greater depth
19002    return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element));
19003  }
19004  _addAriaAndCollapsedClass(triggerArray, isOpen) {
19005    if (!triggerArray.length) {
19006      return;
19007    }
19008    for (const element of triggerArray) {
19009      element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen);
19010      element.setAttribute('aria-expanded', isOpen);
19011    }
19012  }
19013
19014  // Static
19015  static jQueryInterface(config) {
19016    const _config = {};
19017    if (typeof config === 'string' && /show|hide/.test(config)) {
19018      _config.toggle = false;
19019    }
19020    return this.each(function () {
19021      const data = Collapse.getOrCreateInstance(this, _config);
19022      if (typeof config === 'string') {
19023        if (typeof data[config] === 'undefined') {
19024          throw new TypeError(`No method named "${config}"`);
19025        }
19026        data[config]();
19027      }
19028    });
19029  }
19030}
19031
19032/**
19033 * Data API implementation
19034 */
19035
19036EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$4, function (event) {
19037  // preventDefault only for <a> elements (which change the URL) not inside the collapsible element
19038  if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') {
19039    event.preventDefault();
19040  }
19041  for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {
19042    Collapse.getOrCreateInstance(element, {
19043      toggle: false
19044    }).toggle();
19045  }
19046});
19047
19048/**
19049 * jQuery
19050 */
19051
19052defineJQueryPlugin(Collapse);
19053
19054/**
19055 * --------------------------------------------------------------------------
19056 * Bootstrap dropdown.js
19057 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
19058 * --------------------------------------------------------------------------
19059 */
19060
19061
19062/**
19063 * Constants
19064 */
19065
19066const NAME$a = 'dropdown';
19067const DATA_KEY$6 = 'bs.dropdown';
19068const EVENT_KEY$6 = `.${DATA_KEY$6}`;
19069const DATA_API_KEY$3 = '.data-api';
19070const ESCAPE_KEY$2 = 'Escape';
19071const TAB_KEY$1 = 'Tab';
19072const ARROW_UP_KEY$1 = 'ArrowUp';
19073const ARROW_DOWN_KEY$1 = 'ArrowDown';
19074const RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button
19075
19076const EVENT_HIDE$5 = `hide${EVENT_KEY$6}`;
19077const EVENT_HIDDEN$5 = `hidden${EVENT_KEY$6}`;
19078const EVENT_SHOW$5 = `show${EVENT_KEY$6}`;
19079const EVENT_SHOWN$5 = `shown${EVENT_KEY$6}`;
19080const EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$6}${DATA_API_KEY$3}`;
19081const EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$6}${DATA_API_KEY$3}`;
19082const EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$6}${DATA_API_KEY$3}`;
19083const CLASS_NAME_SHOW$6 = 'show';
19084const CLASS_NAME_DROPUP = 'dropup';
19085const CLASS_NAME_DROPEND = 'dropend';
19086const CLASS_NAME_DROPSTART = 'dropstart';
19087const CLASS_NAME_DROPUP_CENTER = 'dropup-center';
19088const CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center';
19089const SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)';
19090const SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE$3}.${CLASS_NAME_SHOW$6}`;
19091const SELECTOR_MENU = '.dropdown-menu';
19092const SELECTOR_NAVBAR = '.navbar';
19093const SELECTOR_NAVBAR_NAV = '.navbar-nav';
19094const SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';
19095const PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start';
19096const PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end';
19097const PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start';
19098const PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end';
19099const PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start';
19100const PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start';
19101const PLACEMENT_TOPCENTER = 'top';
19102const PLACEMENT_BOTTOMCENTER = 'bottom';
19103const Default$9 = {
19104  autoClose: true,
19105  boundary: 'clippingParents',
19106  display: 'dynamic',
19107  offset: [0, 2],
19108  popperConfig: null,
19109  reference: 'toggle'
19110};
19111const DefaultType$9 = {
19112  autoClose: '(boolean|string)',
19113  boundary: '(string|element)',
19114  display: 'string',
19115  offset: '(array|string|function)',
19116  popperConfig: '(null|object|function)',
19117  reference: '(string|element|object)'
19118};
19119
19120/**
19121 * Class definition
19122 */
19123
19124class Dropdown extends BaseComponent {
19125  constructor(element, config) {
19126    super(element, config);
19127    this._popper = null;
19128    this._parent = this._element.parentNode; // dropdown wrapper
19129    // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/
19130    this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] || SelectorEngine.prev(this._element, SELECTOR_MENU)[0] || SelectorEngine.findOne(SELECTOR_MENU, this._parent);
19131    this._inNavbar = this._detectNavbar();
19132  }
19133
19134  // Getters
19135  static get Default() {
19136    return Default$9;
19137  }
19138  static get DefaultType() {
19139    return DefaultType$9;
19140  }
19141  static get NAME() {
19142    return NAME$a;
19143  }
19144
19145  // Public
19146  toggle() {
19147    return this._isShown() ? this.hide() : this.show();
19148  }
19149  show() {
19150    if (isDisabled(this._element) || this._isShown()) {
19151      return;
19152    }
19153    const relatedTarget = {
19154      relatedTarget: this._element
19155    };
19156    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$5, relatedTarget);
19157    if (showEvent.defaultPrevented) {
19158      return;
19159    }
19160    this._createPopper();
19161
19162    // If this is a touch-enabled device we add extra
19163    // empty mouseover listeners to the body's immediate children;
19164    // only needed because of broken event delegation on iOS
19165    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
19166    if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {
19167      for (const element of [].concat(...document.body.children)) {
19168        EventHandler.on(element, 'mouseover', noop);
19169      }
19170    }
19171    this._element.focus();
19172    this._element.setAttribute('aria-expanded', true);
19173    this._menu.classList.add(CLASS_NAME_SHOW$6);
19174    this._element.classList.add(CLASS_NAME_SHOW$6);
19175    EventHandler.trigger(this._element, EVENT_SHOWN$5, relatedTarget);
19176  }
19177  hide() {
19178    if (isDisabled(this._element) || !this._isShown()) {
19179      return;
19180    }
19181    const relatedTarget = {
19182      relatedTarget: this._element
19183    };
19184    this._completeHide(relatedTarget);
19185  }
19186  dispose() {
19187    if (this._popper) {
19188      this._popper.destroy();
19189    }
19190    super.dispose();
19191  }
19192  update() {
19193    this._inNavbar = this._detectNavbar();
19194    if (this._popper) {
19195      this._popper.update();
19196    }
19197  }
19198
19199  // Private
19200  _completeHide(relatedTarget) {
19201    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$5, relatedTarget);
19202    if (hideEvent.defaultPrevented) {
19203      return;
19204    }
19205
19206    // If this is a touch-enabled device we remove the extra
19207    // empty mouseover listeners we added for iOS support
19208    if ('ontouchstart' in document.documentElement) {
19209      for (const element of [].concat(...document.body.children)) {
19210        EventHandler.off(element, 'mouseover', noop);
19211      }
19212    }
19213    if (this._popper) {
19214      this._popper.destroy();
19215    }
19216    this._menu.classList.remove(CLASS_NAME_SHOW$6);
19217    this._element.classList.remove(CLASS_NAME_SHOW$6);
19218    this._element.setAttribute('aria-expanded', 'false');
19219    Manipulator.removeDataAttribute(this._menu, 'popper');
19220    EventHandler.trigger(this._element, EVENT_HIDDEN$5, relatedTarget);
19221  }
19222  _getConfig(config) {
19223    config = super._getConfig(config);
19224    if (typeof config.reference === 'object' && !isElement(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') {
19225      // Popper virtual elements require a getBoundingClientRect method
19226      throw new TypeError(`${NAME$a.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);
19227    }
19228    return config;
19229  }
19230  _createPopper() {
19231    if (typeof _popperjs_core__WEBPACK_IMPORTED_MODULE_0__ === 'undefined') {
19232      throw new TypeError('Bootstrap\'s dropdowns require Popper (https://popper.js.org)');
19233    }
19234    let referenceElement = this._element;
19235    if (this._config.reference === 'parent') {
19236      referenceElement = this._parent;
19237    } else if (isElement(this._config.reference)) {
19238      referenceElement = getElement(this._config.reference);
19239    } else if (typeof this._config.reference === 'object') {
19240      referenceElement = this._config.reference;
19241    }
19242    const popperConfig = this._getPopperConfig();
19243    this._popper = _popperjs_core__WEBPACK_IMPORTED_MODULE_1__.createPopper(referenceElement, this._menu, popperConfig);
19244  }
19245  _isShown() {
19246    return this._menu.classList.contains(CLASS_NAME_SHOW$6);
19247  }
19248  _getPlacement() {
19249    const parentDropdown = this._parent;
19250    if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {
19251      return PLACEMENT_RIGHT;
19252    }
19253    if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {
19254      return PLACEMENT_LEFT;
19255    }
19256    if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) {
19257      return PLACEMENT_TOPCENTER;
19258    }
19259    if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) {
19260      return PLACEMENT_BOTTOMCENTER;
19261    }
19262
19263    // We need to trim the value because custom properties can also include spaces
19264    const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end';
19265    if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {
19266      return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP;
19267    }
19268    return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM;
19269  }
19270  _detectNavbar() {
19271    return this._element.closest(SELECTOR_NAVBAR) !== null;
19272  }
19273  _getOffset() {
19274    const {
19275      offset
19276    } = this._config;
19277    if (typeof offset === 'string') {
19278      return offset.split(',').map(value => Number.parseInt(value, 10));
19279    }
19280    if (typeof offset === 'function') {
19281      return popperData => offset(popperData, this._element);
19282    }
19283    return offset;
19284  }
19285  _getPopperConfig() {
19286    const defaultBsPopperConfig = {
19287      placement: this._getPlacement(),
19288      modifiers: [{
19289        name: 'preventOverflow',
19290        options: {
19291          boundary: this._config.boundary
19292        }
19293      }, {
19294        name: 'offset',
19295        options: {
19296          offset: this._getOffset()
19297        }
19298      }]
19299    };
19300
19301    // Disable Popper if we have a static display or Dropdown is in Navbar
19302    if (this._inNavbar || this._config.display === 'static') {
19303      Manipulator.setDataAttribute(this._menu, 'popper', 'static'); // TODO: v6 remove
19304      defaultBsPopperConfig.modifiers = [{
19305        name: 'applyStyles',
19306        enabled: false
19307      }];
19308    }
19309    return {
19310      ...defaultBsPopperConfig,
19311      ...execute(this._config.popperConfig, [defaultBsPopperConfig])
19312    };
19313  }
19314  _selectMenuItem({
19315    key,
19316    target
19317  }) {
19318    const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(element => isVisible(element));
19319    if (!items.length) {
19320      return;
19321    }
19322
19323    // if target isn't included in items (e.g. when expanding the dropdown)
19324    // allow cycling to get the last item in case key equals ARROW_UP_KEY
19325    getNextActiveElement(items, target, key === ARROW_DOWN_KEY$1, !items.includes(target)).focus();
19326  }
19327
19328  // Static
19329  static jQueryInterface(config) {
19330    return this.each(function () {
19331      const data = Dropdown.getOrCreateInstance(this, config);
19332      if (typeof config !== 'string') {
19333        return;
19334      }
19335      if (typeof data[config] === 'undefined') {
19336        throw new TypeError(`No method named "${config}"`);
19337      }
19338      data[config]();
19339    });
19340  }
19341  static clearMenus(event) {
19342    if (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY$1) {
19343      return;
19344    }
19345    const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN);
19346    for (const toggle of openToggles) {
19347      const context = Dropdown.getInstance(toggle);
19348      if (!context || context._config.autoClose === false) {
19349        continue;
19350      }
19351      const composedPath = event.composedPath();
19352      const isMenuTarget = composedPath.includes(context._menu);
19353      if (composedPath.includes(context._element) || context._config.autoClose === 'inside' && !isMenuTarget || context._config.autoClose === 'outside' && isMenuTarget) {
19354        continue;
19355      }
19356
19357      // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu
19358      if (context._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) {
19359        continue;
19360      }
19361      const relatedTarget = {
19362        relatedTarget: context._element
19363      };
19364      if (event.type === 'click') {
19365        relatedTarget.clickEvent = event;
19366      }
19367      context._completeHide(relatedTarget);
19368    }
19369  }
19370  static dataApiKeydownHandler(event) {
19371    // If not an UP | DOWN | ESCAPE key => not a dropdown command
19372    // If input/textarea && if key is other than ESCAPE => not a dropdown command
19373
19374    const isInput = /input|textarea/i.test(event.target.tagName);
19375    const isEscapeEvent = event.key === ESCAPE_KEY$2;
19376    const isUpOrDownEvent = [ARROW_UP_KEY$1, ARROW_DOWN_KEY$1].includes(event.key);
19377    if (!isUpOrDownEvent && !isEscapeEvent) {
19378      return;
19379    }
19380    if (isInput && !isEscapeEvent) {
19381      return;
19382    }
19383    event.preventDefault();
19384
19385    // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/
19386    const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE$3) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.next(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$3, event.delegateTarget.parentNode);
19387    const instance = Dropdown.getOrCreateInstance(getToggleButton);
19388    if (isUpOrDownEvent) {
19389      event.stopPropagation();
19390      instance.show();
19391      instance._selectMenuItem(event);
19392      return;
19393    }
19394    if (instance._isShown()) {
19395      // else is escape and we check if it is shown
19396      event.stopPropagation();
19397      instance.hide();
19398      getToggleButton.focus();
19399    }
19400  }
19401}
19402
19403/**
19404 * Data API implementation
19405 */
19406
19407EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$3, Dropdown.dataApiKeydownHandler);
19408EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);
19409EventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown.clearMenus);
19410EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);
19411EventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) {
19412  event.preventDefault();
19413  Dropdown.getOrCreateInstance(this).toggle();
19414});
19415
19416/**
19417 * jQuery
19418 */
19419
19420defineJQueryPlugin(Dropdown);
19421
19422/**
19423 * --------------------------------------------------------------------------
19424 * Bootstrap util/backdrop.js
19425 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
19426 * --------------------------------------------------------------------------
19427 */
19428
19429
19430/**
19431 * Constants
19432 */
19433
19434const NAME$9 = 'backdrop';
19435const CLASS_NAME_FADE$4 = 'fade';
19436const CLASS_NAME_SHOW$5 = 'show';
19437const EVENT_MOUSEDOWN = `mousedown.bs.${NAME$9}`;
19438const Default$8 = {
19439  className: 'modal-backdrop',
19440  clickCallback: null,
19441  isAnimated: false,
19442  isVisible: true,
19443  // if false, we use the backdrop helper without adding any element to the dom
19444  rootElement: 'body' // give the choice to place backdrop under different elements
19445};
19446const DefaultType$8 = {
19447  className: 'string',
19448  clickCallback: '(function|null)',
19449  isAnimated: 'boolean',
19450  isVisible: 'boolean',
19451  rootElement: '(element|string)'
19452};
19453
19454/**
19455 * Class definition
19456 */
19457
19458class Backdrop extends Config {
19459  constructor(config) {
19460    super();
19461    this._config = this._getConfig(config);
19462    this._isAppended = false;
19463    this._element = null;
19464  }
19465
19466  // Getters
19467  static get Default() {
19468    return Default$8;
19469  }
19470  static get DefaultType() {
19471    return DefaultType$8;
19472  }
19473  static get NAME() {
19474    return NAME$9;
19475  }
19476
19477  // Public
19478  show(callback) {
19479    if (!this._config.isVisible) {
19480      execute(callback);
19481      return;
19482    }
19483    this._append();
19484    const element = this._getElement();
19485    if (this._config.isAnimated) {
19486      reflow(element);
19487    }
19488    element.classList.add(CLASS_NAME_SHOW$5);
19489    this._emulateAnimation(() => {
19490      execute(callback);
19491    });
19492  }
19493  hide(callback) {
19494    if (!this._config.isVisible) {
19495      execute(callback);
19496      return;
19497    }
19498    this._getElement().classList.remove(CLASS_NAME_SHOW$5);
19499    this._emulateAnimation(() => {
19500      this.dispose();
19501      execute(callback);
19502    });
19503  }
19504  dispose() {
19505    if (!this._isAppended) {
19506      return;
19507    }
19508    EventHandler.off(this._element, EVENT_MOUSEDOWN);
19509    this._element.remove();
19510    this._isAppended = false;
19511  }
19512
19513  // Private
19514  _getElement() {
19515    if (!this._element) {
19516      const backdrop = document.createElement('div');
19517      backdrop.className = this._config.className;
19518      if (this._config.isAnimated) {
19519        backdrop.classList.add(CLASS_NAME_FADE$4);
19520      }
19521      this._element = backdrop;
19522    }
19523    return this._element;
19524  }
19525  _configAfterMerge(config) {
19526    // use getElement() with the default "body" to get a fresh Element on each instantiation
19527    config.rootElement = getElement(config.rootElement);
19528    return config;
19529  }
19530  _append() {
19531    if (this._isAppended) {
19532      return;
19533    }
19534    const element = this._getElement();
19535    this._config.rootElement.append(element);
19536    EventHandler.on(element, EVENT_MOUSEDOWN, () => {
19537      execute(this._config.clickCallback);
19538    });
19539    this._isAppended = true;
19540  }
19541  _emulateAnimation(callback) {
19542    executeAfterTransition(callback, this._getElement(), this._config.isAnimated);
19543  }
19544}
19545
19546/**
19547 * --------------------------------------------------------------------------
19548 * Bootstrap util/focustrap.js
19549 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
19550 * --------------------------------------------------------------------------
19551 */
19552
19553
19554/**
19555 * Constants
19556 */
19557
19558const NAME$8 = 'focustrap';
19559const DATA_KEY$5 = 'bs.focustrap';
19560const EVENT_KEY$5 = `.${DATA_KEY$5}`;
19561const EVENT_FOCUSIN$2 = `focusin${EVENT_KEY$5}`;
19562const EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$5}`;
19563const TAB_KEY = 'Tab';
19564const TAB_NAV_FORWARD = 'forward';
19565const TAB_NAV_BACKWARD = 'backward';
19566const Default$7 = {
19567  autofocus: true,
19568  trapElement: null // The element to trap focus inside of
19569};
19570const DefaultType$7 = {
19571  autofocus: 'boolean',
19572  trapElement: 'element'
19573};
19574
19575/**
19576 * Class definition
19577 */
19578
19579class FocusTrap extends Config {
19580  constructor(config) {
19581    super();
19582    this._config = this._getConfig(config);
19583    this._isActive = false;
19584    this._lastTabNavDirection = null;
19585  }
19586
19587  // Getters
19588  static get Default() {
19589    return Default$7;
19590  }
19591  static get DefaultType() {
19592    return DefaultType$7;
19593  }
19594  static get NAME() {
19595    return NAME$8;
19596  }
19597
19598  // Public
19599  activate() {
19600    if (this._isActive) {
19601      return;
19602    }
19603    if (this._config.autofocus) {
19604      this._config.trapElement.focus();
19605    }
19606    EventHandler.off(document, EVENT_KEY$5); // guard against infinite focus loop
19607    EventHandler.on(document, EVENT_FOCUSIN$2, event => this._handleFocusin(event));
19608    EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event));
19609    this._isActive = true;
19610  }
19611  deactivate() {
19612    if (!this._isActive) {
19613      return;
19614    }
19615    this._isActive = false;
19616    EventHandler.off(document, EVENT_KEY$5);
19617  }
19618
19619  // Private
19620  _handleFocusin(event) {
19621    const {
19622      trapElement
19623    } = this._config;
19624    if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {
19625      return;
19626    }
19627    const elements = SelectorEngine.focusableChildren(trapElement);
19628    if (elements.length === 0) {
19629      trapElement.focus();
19630    } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {
19631      elements[elements.length - 1].focus();
19632    } else {
19633      elements[0].focus();
19634    }
19635  }
19636  _handleKeydown(event) {
19637    if (event.key !== TAB_KEY) {
19638      return;
19639    }
19640    this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD;
19641  }
19642}
19643
19644/**
19645 * --------------------------------------------------------------------------
19646 * Bootstrap util/scrollBar.js
19647 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
19648 * --------------------------------------------------------------------------
19649 */
19650
19651
19652/**
19653 * Constants
19654 */
19655
19656const SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';
19657const SELECTOR_STICKY_CONTENT = '.sticky-top';
19658const PROPERTY_PADDING = 'padding-right';
19659const PROPERTY_MARGIN = 'margin-right';
19660
19661/**
19662 * Class definition
19663 */
19664
19665class ScrollBarHelper {
19666  constructor() {
19667    this._element = document.body;
19668  }
19669
19670  // Public
19671  getWidth() {
19672    // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes
19673    const documentWidth = document.documentElement.clientWidth;
19674    return Math.abs(window.innerWidth - documentWidth);
19675  }
19676  hide() {
19677    const width = this.getWidth();
19678    this._disableOverFlow();
19679    // give padding to element to balance the hidden scrollbar width
19680    this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width);
19681    // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth
19682    this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width);
19683    this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width);
19684  }
19685  reset() {
19686    this._resetElementAttributes(this._element, 'overflow');
19687    this._resetElementAttributes(this._element, PROPERTY_PADDING);
19688    this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING);
19689    this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN);
19690  }
19691  isOverflowing() {
19692    return this.getWidth() > 0;
19693  }
19694
19695  // Private
19696  _disableOverFlow() {
19697    this._saveInitialAttribute(this._element, 'overflow');
19698    this._element.style.overflow = 'hidden';
19699  }
19700  _setElementAttributes(selector, styleProperty, callback) {
19701    const scrollbarWidth = this.getWidth();
19702    const manipulationCallBack = element => {
19703      if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {
19704        return;
19705      }
19706      this._saveInitialAttribute(element, styleProperty);
19707      const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty);
19708      element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`);
19709    };
19710    this._applyManipulationCallback(selector, manipulationCallBack);
19711  }
19712  _saveInitialAttribute(element, styleProperty) {
19713    const actualValue = element.style.getPropertyValue(styleProperty);
19714    if (actualValue) {
19715      Manipulator.setDataAttribute(element, styleProperty, actualValue);
19716    }
19717  }
19718  _resetElementAttributes(selector, styleProperty) {
19719    const manipulationCallBack = element => {
19720      const value = Manipulator.getDataAttribute(element, styleProperty);
19721      // We only want to remove the property if the value is `null`; the value can also be zero
19722      if (value === null) {
19723        element.style.removeProperty(styleProperty);
19724        return;
19725      }
19726      Manipulator.removeDataAttribute(element, styleProperty);
19727      element.style.setProperty(styleProperty, value);
19728    };
19729    this._applyManipulationCallback(selector, manipulationCallBack);
19730  }
19731  _applyManipulationCallback(selector, callBack) {
19732    if (isElement(selector)) {
19733      callBack(selector);
19734      return;
19735    }
19736    for (const sel of SelectorEngine.find(selector, this._element)) {
19737      callBack(sel);
19738    }
19739  }
19740}
19741
19742/**
19743 * --------------------------------------------------------------------------
19744 * Bootstrap modal.js
19745 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
19746 * --------------------------------------------------------------------------
19747 */
19748
19749
19750/**
19751 * Constants
19752 */
19753
19754const NAME$7 = 'modal';
19755const DATA_KEY$4 = 'bs.modal';
19756const EVENT_KEY$4 = `.${DATA_KEY$4}`;
19757const DATA_API_KEY$2 = '.data-api';
19758const ESCAPE_KEY$1 = 'Escape';
19759const EVENT_HIDE$4 = `hide${EVENT_KEY$4}`;
19760const EVENT_HIDE_PREVENTED$1 = `hidePrevented${EVENT_KEY$4}`;
19761const EVENT_HIDDEN$4 = `hidden${EVENT_KEY$4}`;
19762const EVENT_SHOW$4 = `show${EVENT_KEY$4}`;
19763const EVENT_SHOWN$4 = `shown${EVENT_KEY$4}`;
19764const EVENT_RESIZE$1 = `resize${EVENT_KEY$4}`;
19765const EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY$4}`;
19766const EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY$4}`;
19767const EVENT_KEYDOWN_DISMISS$1 = `keydown.dismiss${EVENT_KEY$4}`;
19768const EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$4}${DATA_API_KEY$2}`;
19769const CLASS_NAME_OPEN = 'modal-open';
19770const CLASS_NAME_FADE$3 = 'fade';
19771const CLASS_NAME_SHOW$4 = 'show';
19772const CLASS_NAME_STATIC = 'modal-static';
19773const OPEN_SELECTOR$1 = '.modal.show';
19774const SELECTOR_DIALOG = '.modal-dialog';
19775const SELECTOR_MODAL_BODY = '.modal-body';
19776const SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle="modal"]';
19777const Default$6 = {
19778  backdrop: true,
19779  focus: true,
19780  keyboard: true
19781};
19782const DefaultType$6 = {
19783  backdrop: '(boolean|string)',
19784  focus: 'boolean',
19785  keyboard: 'boolean'
19786};
19787
19788/**
19789 * Class definition
19790 */
19791
19792class Modal extends BaseComponent {
19793  constructor(element, config) {
19794    super(element, config);
19795    this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element);
19796    this._backdrop = this._initializeBackDrop();
19797    this._focustrap = this._initializeFocusTrap();
19798    this._isShown = false;
19799    this._isTransitioning = false;
19800    this._scrollBar = new ScrollBarHelper();
19801    this._addEventListeners();
19802  }
19803
19804  // Getters
19805  static get Default() {
19806    return Default$6;
19807  }
19808  static get DefaultType() {
19809    return DefaultType$6;
19810  }
19811  static get NAME() {
19812    return NAME$7;
19813  }
19814
19815  // Public
19816  toggle(relatedTarget) {
19817    return this._isShown ? this.hide() : this.show(relatedTarget);
19818  }
19819  show(relatedTarget) {
19820    if (this._isShown || this._isTransitioning) {
19821      return;
19822    }
19823    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, {
19824      relatedTarget
19825    });
19826    if (showEvent.defaultPrevented) {
19827      return;
19828    }
19829    this._isShown = true;
19830    this._isTransitioning = true;
19831    this._scrollBar.hide();
19832    document.body.classList.add(CLASS_NAME_OPEN);
19833    this._adjustDialog();
19834    this._backdrop.show(() => this._showElement(relatedTarget));
19835  }
19836  hide() {
19837    if (!this._isShown || this._isTransitioning) {
19838      return;
19839    }
19840    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4);
19841    if (hideEvent.defaultPrevented) {
19842      return;
19843    }
19844    this._isShown = false;
19845    this._isTransitioning = true;
19846    this._focustrap.deactivate();
19847    this._element.classList.remove(CLASS_NAME_SHOW$4);
19848    this._queueCallback(() => this._hideModal(), this._element, this._isAnimated());
19849  }
19850  dispose() {
19851    EventHandler.off(window, EVENT_KEY$4);
19852    EventHandler.off(this._dialog, EVENT_KEY$4);
19853    this._backdrop.dispose();
19854    this._focustrap.deactivate();
19855    super.dispose();
19856  }
19857  handleUpdate() {
19858    this._adjustDialog();
19859  }
19860
19861  // Private
19862  _initializeBackDrop() {
19863    return new Backdrop({
19864      isVisible: Boolean(this._config.backdrop),
19865      // 'static' option will be translated to true, and booleans will keep their value,
19866      isAnimated: this._isAnimated()
19867    });
19868  }
19869  _initializeFocusTrap() {
19870    return new FocusTrap({
19871      trapElement: this._element
19872    });
19873  }
19874  _showElement(relatedTarget) {
19875    // try to append dynamic modal
19876    if (!document.body.contains(this._element)) {
19877      document.body.append(this._element);
19878    }
19879    this._element.style.display = 'block';
19880    this._element.removeAttribute('aria-hidden');
19881    this._element.setAttribute('aria-modal', true);
19882    this._element.setAttribute('role', 'dialog');
19883    this._element.scrollTop = 0;
19884    const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog);
19885    if (modalBody) {
19886      modalBody.scrollTop = 0;
19887    }
19888    reflow(this._element);
19889    this._element.classList.add(CLASS_NAME_SHOW$4);
19890    const transitionComplete = () => {
19891      if (this._config.focus) {
19892        this._focustrap.activate();
19893      }
19894      this._isTransitioning = false;
19895      EventHandler.trigger(this._element, EVENT_SHOWN$4, {
19896        relatedTarget
19897      });
19898    };
19899    this._queueCallback(transitionComplete, this._dialog, this._isAnimated());
19900  }
19901  _addEventListeners() {
19902    EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, event => {
19903      if (event.key !== ESCAPE_KEY$1) {
19904        return;
19905      }
19906      if (this._config.keyboard) {
19907        this.hide();
19908        return;
19909      }
19910      this._triggerBackdropTransition();
19911    });
19912    EventHandler.on(window, EVENT_RESIZE$1, () => {
19913      if (this._isShown && !this._isTransitioning) {
19914        this._adjustDialog();
19915      }
19916    });
19917    EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, event => {
19918      // a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks
19919      EventHandler.one(this._element, EVENT_CLICK_DISMISS, event2 => {
19920        if (this._element !== event.target || this._element !== event2.target) {
19921          return;
19922        }
19923        if (this._config.backdrop === 'static') {
19924          this._triggerBackdropTransition();
19925          return;
19926        }
19927        if (this._config.backdrop) {
19928          this.hide();
19929        }
19930      });
19931    });
19932  }
19933  _hideModal() {
19934    this._element.style.display = 'none';
19935    this._element.setAttribute('aria-hidden', true);
19936    this._element.removeAttribute('aria-modal');
19937    this._element.removeAttribute('role');
19938    this._isTransitioning = false;
19939    this._backdrop.hide(() => {
19940      document.body.classList.remove(CLASS_NAME_OPEN);
19941      this._resetAdjustments();
19942      this._scrollBar.reset();
19943      EventHandler.trigger(this._element, EVENT_HIDDEN$4);
19944    });
19945  }
19946  _isAnimated() {
19947    return this._element.classList.contains(CLASS_NAME_FADE$3);
19948  }
19949  _triggerBackdropTransition() {
19950    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED$1);
19951    if (hideEvent.defaultPrevented) {
19952      return;
19953    }
19954    const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
19955    const initialOverflowY = this._element.style.overflowY;
19956    // return if the following background transition hasn't yet completed
19957    if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) {
19958      return;
19959    }
19960    if (!isModalOverflowing) {
19961      this._element.style.overflowY = 'hidden';
19962    }
19963    this._element.classList.add(CLASS_NAME_STATIC);
19964    this._queueCallback(() => {
19965      this._element.classList.remove(CLASS_NAME_STATIC);
19966      this._queueCallback(() => {
19967        this._element.style.overflowY = initialOverflowY;
19968      }, this._dialog);
19969    }, this._dialog);
19970    this._element.focus();
19971  }
19972
19973  /**
19974   * The following methods are used to handle overflowing modals
19975   */
19976
19977  _adjustDialog() {
19978    const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
19979    const scrollbarWidth = this._scrollBar.getWidth();
19980    const isBodyOverflowing = scrollbarWidth > 0;
19981    if (isBodyOverflowing && !isModalOverflowing) {
19982      const property = isRTL() ? 'paddingLeft' : 'paddingRight';
19983      this._element.style[property] = `${scrollbarWidth}px`;
19984    }
19985    if (!isBodyOverflowing && isModalOverflowing) {
19986      const property = isRTL() ? 'paddingRight' : 'paddingLeft';
19987      this._element.style[property] = `${scrollbarWidth}px`;
19988    }
19989  }
19990  _resetAdjustments() {
19991    this._element.style.paddingLeft = '';
19992    this._element.style.paddingRight = '';
19993  }
19994
19995  // Static
19996  static jQueryInterface(config, relatedTarget) {
19997    return this.each(function () {
19998      const data = Modal.getOrCreateInstance(this, config);
19999      if (typeof config !== 'string') {
20000        return;
20001      }
20002      if (typeof data[config] === 'undefined') {
20003        throw new TypeError(`No method named "${config}"`);
20004      }
20005      data[config](relatedTarget);
20006    });
20007  }
20008}
20009
20010/**
20011 * Data API implementation
20012 */
20013
20014EventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) {
20015  const target = SelectorEngine.getElementFromSelector(this);
20016  if (['A', 'AREA'].includes(this.tagName)) {
20017    event.preventDefault();
20018  }
20019  EventHandler.one(target, EVENT_SHOW$4, showEvent => {
20020    if (showEvent.defaultPrevented) {
20021      // only register focus restorer if modal will actually get shown
20022      return;
20023    }
20024    EventHandler.one(target, EVENT_HIDDEN$4, () => {
20025      if (isVisible(this)) {
20026        this.focus();
20027      }
20028    });
20029  });
20030
20031  // avoid conflict when clicking modal toggler while another one is open
20032  const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR$1);
20033  if (alreadyOpen) {
20034    Modal.getInstance(alreadyOpen).hide();
20035  }
20036  const data = Modal.getOrCreateInstance(target);
20037  data.toggle(this);
20038});
20039enableDismissTrigger(Modal);
20040
20041/**
20042 * jQuery
20043 */
20044
20045defineJQueryPlugin(Modal);
20046
20047/**
20048 * --------------------------------------------------------------------------
20049 * Bootstrap offcanvas.js
20050 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
20051 * --------------------------------------------------------------------------
20052 */
20053
20054
20055/**
20056 * Constants
20057 */
20058
20059const NAME$6 = 'offcanvas';
20060const DATA_KEY$3 = 'bs.offcanvas';
20061const EVENT_KEY$3 = `.${DATA_KEY$3}`;
20062const DATA_API_KEY$1 = '.data-api';
20063const EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$3}${DATA_API_KEY$1}`;
20064const ESCAPE_KEY = 'Escape';
20065const CLASS_NAME_SHOW$3 = 'show';
20066const CLASS_NAME_SHOWING$1 = 'showing';
20067const CLASS_NAME_HIDING = 'hiding';
20068const CLASS_NAME_BACKDROP = 'offcanvas-backdrop';
20069const OPEN_SELECTOR = '.offcanvas.show';
20070const EVENT_SHOW$3 = `show${EVENT_KEY$3}`;
20071const EVENT_SHOWN$3 = `shown${EVENT_KEY$3}`;
20072const EVENT_HIDE$3 = `hide${EVENT_KEY$3}`;
20073const EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY$3}`;
20074const EVENT_HIDDEN$3 = `hidden${EVENT_KEY$3}`;
20075const EVENT_RESIZE = `resize${EVENT_KEY$3}`;
20076const EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$3}${DATA_API_KEY$1}`;
20077const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY$3}`;
20078const SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle="offcanvas"]';
20079const Default$5 = {
20080  backdrop: true,
20081  keyboard: true,
20082  scroll: false
20083};
20084const DefaultType$5 = {
20085  backdrop: '(boolean|string)',
20086  keyboard: 'boolean',
20087  scroll: 'boolean'
20088};
20089
20090/**
20091 * Class definition
20092 */
20093
20094class Offcanvas extends BaseComponent {
20095  constructor(element, config) {
20096    super(element, config);
20097    this._isShown = false;
20098    this._backdrop = this._initializeBackDrop();
20099    this._focustrap = this._initializeFocusTrap();
20100    this._addEventListeners();
20101  }
20102
20103  // Getters
20104  static get Default() {
20105    return Default$5;
20106  }
20107  static get DefaultType() {
20108    return DefaultType$5;
20109  }
20110  static get NAME() {
20111    return NAME$6;
20112  }
20113
20114  // Public
20115  toggle(relatedTarget) {
20116    return this._isShown ? this.hide() : this.show(relatedTarget);
20117  }
20118  show(relatedTarget) {
20119    if (this._isShown) {
20120      return;
20121    }
20122    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, {
20123      relatedTarget
20124    });
20125    if (showEvent.defaultPrevented) {
20126      return;
20127    }
20128    this._isShown = true;
20129    this._backdrop.show();
20130    if (!this._config.scroll) {
20131      new ScrollBarHelper().hide();
20132    }
20133    this._element.setAttribute('aria-modal', true);
20134    this._element.setAttribute('role', 'dialog');
20135    this._element.classList.add(CLASS_NAME_SHOWING$1);
20136    const completeCallBack = () => {
20137      if (!this._config.scroll || this._config.backdrop) {
20138        this._focustrap.activate();
20139      }
20140      this._element.classList.add(CLASS_NAME_SHOW$3);
20141      this._element.classList.remove(CLASS_NAME_SHOWING$1);
20142      EventHandler.trigger(this._element, EVENT_SHOWN$3, {
20143        relatedTarget
20144      });
20145    };
20146    this._queueCallback(completeCallBack, this._element, true);
20147  }
20148  hide() {
20149    if (!this._isShown) {
20150      return;
20151    }
20152    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3);
20153    if (hideEvent.defaultPrevented) {
20154      return;
20155    }
20156    this._focustrap.deactivate();
20157    this._element.blur();
20158    this._isShown = false;
20159    this._element.classList.add(CLASS_NAME_HIDING);
20160    this._backdrop.hide();
20161    const completeCallback = () => {
20162      this._element.classList.remove(CLASS_NAME_SHOW$3, CLASS_NAME_HIDING);
20163      this._element.removeAttribute('aria-modal');
20164      this._element.removeAttribute('role');
20165      if (!this._config.scroll) {
20166        new ScrollBarHelper().reset();
20167      }
20168      EventHandler.trigger(this._element, EVENT_HIDDEN$3);
20169    };
20170    this._queueCallback(completeCallback, this._element, true);
20171  }
20172  dispose() {
20173    this._backdrop.dispose();
20174    this._focustrap.deactivate();
20175    super.dispose();
20176  }
20177
20178  // Private
20179  _initializeBackDrop() {
20180    const clickCallback = () => {
20181      if (this._config.backdrop === 'static') {
20182        EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);
20183        return;
20184      }
20185      this.hide();
20186    };
20187
20188    // 'static' option will be translated to true, and booleans will keep their value
20189    const isVisible = Boolean(this._config.backdrop);
20190    return new Backdrop({
20191      className: CLASS_NAME_BACKDROP,
20192      isVisible,
20193      isAnimated: true,
20194      rootElement: this._element.parentNode,
20195      clickCallback: isVisible ? clickCallback : null
20196    });
20197  }
20198  _initializeFocusTrap() {
20199    return new FocusTrap({
20200      trapElement: this._element
20201    });
20202  }
20203  _addEventListeners() {
20204    EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {
20205      if (event.key !== ESCAPE_KEY) {
20206        return;
20207      }
20208      if (this._config.keyboard) {
20209        this.hide();
20210        return;
20211      }
20212      EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);
20213    });
20214  }
20215
20216  // Static
20217  static jQueryInterface(config) {
20218    return this.each(function () {
20219      const data = Offcanvas.getOrCreateInstance(this, config);
20220      if (typeof config !== 'string') {
20221        return;
20222      }
20223      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
20224        throw new TypeError(`No method named "${config}"`);
20225      }
20226      data[config](this);
20227    });
20228  }
20229}
20230
20231/**
20232 * Data API implementation
20233 */
20234
20235EventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) {
20236  const target = SelectorEngine.getElementFromSelector(this);
20237  if (['A', 'AREA'].includes(this.tagName)) {
20238    event.preventDefault();
20239  }
20240  if (isDisabled(this)) {
20241    return;
20242  }
20243  EventHandler.one(target, EVENT_HIDDEN$3, () => {
20244    // focus on trigger when it is closed
20245    if (isVisible(this)) {
20246      this.focus();
20247    }
20248  });
20249
20250  // avoid conflict when clicking a toggler of an offcanvas, while another is open
20251  const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR);
20252  if (alreadyOpen && alreadyOpen !== target) {
20253    Offcanvas.getInstance(alreadyOpen).hide();
20254  }
20255  const data = Offcanvas.getOrCreateInstance(target);
20256  data.toggle(this);
20257});
20258EventHandler.on(window, EVENT_LOAD_DATA_API$2, () => {
20259  for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {
20260    Offcanvas.getOrCreateInstance(selector).show();
20261  }
20262});
20263EventHandler.on(window, EVENT_RESIZE, () => {
20264  for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) {
20265    if (getComputedStyle(element).position !== 'fixed') {
20266      Offcanvas.getOrCreateInstance(element).hide();
20267    }
20268  }
20269});
20270enableDismissTrigger(Offcanvas);
20271
20272/**
20273 * jQuery
20274 */
20275
20276defineJQueryPlugin(Offcanvas);
20277
20278/**
20279 * --------------------------------------------------------------------------
20280 * Bootstrap util/sanitizer.js
20281 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
20282 * --------------------------------------------------------------------------
20283 */
20284
20285// js-docs-start allow-list
20286const ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i;
20287const DefaultAllowlist = {
20288  // Global attributes allowed on any supplied element below.
20289  '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],
20290  a: ['target', 'href', 'title', 'rel'],
20291  area: [],
20292  b: [],
20293  br: [],
20294  col: [],
20295  code: [],
20296  dd: [],
20297  div: [],
20298  dl: [],
20299  dt: [],
20300  em: [],
20301  hr: [],
20302  h1: [],
20303  h2: [],
20304  h3: [],
20305  h4: [],
20306  h5: [],
20307  h6: [],
20308  i: [],
20309  img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],
20310  li: [],
20311  ol: [],
20312  p: [],
20313  pre: [],
20314  s: [],
20315  small: [],
20316  span: [],
20317  sub: [],
20318  sup: [],
20319  strong: [],
20320  u: [],
20321  ul: []
20322};
20323// js-docs-end allow-list
20324
20325const uriAttributes = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']);
20326
20327/**
20328 * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation
20329 * contexts.
20330 *
20331 * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38
20332 */
20333// eslint-disable-next-line unicorn/better-regex
20334const SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i;
20335const allowedAttribute = (attribute, allowedAttributeList) => {
20336  const attributeName = attribute.nodeName.toLowerCase();
20337  if (allowedAttributeList.includes(attributeName)) {
20338    if (uriAttributes.has(attributeName)) {
20339      return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue));
20340    }
20341    return true;
20342  }
20343
20344  // Check if a regular expression validates the attribute.
20345  return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp).some(regex => regex.test(attributeName));
20346};
20347function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {
20348  if (!unsafeHtml.length) {
20349    return unsafeHtml;
20350  }
20351  if (sanitizeFunction && typeof sanitizeFunction === 'function') {
20352    return sanitizeFunction(unsafeHtml);
20353  }
20354  const domParser = new window.DOMParser();
20355  const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');
20356  const elements = [].concat(...createdDocument.body.querySelectorAll('*'));
20357  for (const element of elements) {
20358    const elementName = element.nodeName.toLowerCase();
20359    if (!Object.keys(allowList).includes(elementName)) {
20360      element.remove();
20361      continue;
20362    }
20363    const attributeList = [].concat(...element.attributes);
20364    const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || []);
20365    for (const attribute of attributeList) {
20366      if (!allowedAttribute(attribute, allowedAttributes)) {
20367        element.removeAttribute(attribute.nodeName);
20368      }
20369    }
20370  }
20371  return createdDocument.body.innerHTML;
20372}
20373
20374/**
20375 * --------------------------------------------------------------------------
20376 * Bootstrap util/template-factory.js
20377 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
20378 * --------------------------------------------------------------------------
20379 */
20380
20381
20382/**
20383 * Constants
20384 */
20385
20386const NAME$5 = 'TemplateFactory';
20387const Default$4 = {
20388  allowList: DefaultAllowlist,
20389  content: {},
20390  // { selector : text ,  selector2 : text2 , }
20391  extraClass: '',
20392  html: false,
20393  sanitize: true,
20394  sanitizeFn: null,
20395  template: '<div></div>'
20396};
20397const DefaultType$4 = {
20398  allowList: 'object',
20399  content: 'object',
20400  extraClass: '(string|function)',
20401  html: 'boolean',
20402  sanitize: 'boolean',
20403  sanitizeFn: '(null|function)',
20404  template: 'string'
20405};
20406const DefaultContentType = {
20407  entry: '(string|element|function|null)',
20408  selector: '(string|element)'
20409};
20410
20411/**
20412 * Class definition
20413 */
20414
20415class TemplateFactory extends Config {
20416  constructor(config) {
20417    super();
20418    this._config = this._getConfig(config);
20419  }
20420
20421  // Getters
20422  static get Default() {
20423    return Default$4;
20424  }
20425  static get DefaultType() {
20426    return DefaultType$4;
20427  }
20428  static get NAME() {
20429    return NAME$5;
20430  }
20431
20432  // Public
20433  getContent() {
20434    return Object.values(this._config.content).map(config => this._resolvePossibleFunction(config)).filter(Boolean);
20435  }
20436  hasContent() {
20437    return this.getContent().length > 0;
20438  }
20439  changeContent(content) {
20440    this._checkContent(content);
20441    this._config.content = {
20442      ...this._config.content,
20443      ...content
20444    };
20445    return this;
20446  }
20447  toHtml() {
20448    const templateWrapper = document.createElement('div');
20449    templateWrapper.innerHTML = this._maybeSanitize(this._config.template);
20450    for (const [selector, text] of Object.entries(this._config.content)) {
20451      this._setContent(templateWrapper, text, selector);
20452    }
20453    const template = templateWrapper.children[0];
20454    const extraClass = this._resolvePossibleFunction(this._config.extraClass);
20455    if (extraClass) {
20456      template.classList.add(...extraClass.split(' '));
20457    }
20458    return template;
20459  }
20460
20461  // Private
20462  _typeCheckConfig(config) {
20463    super._typeCheckConfig(config);
20464    this._checkContent(config.content);
20465  }
20466  _checkContent(arg) {
20467    for (const [selector, content] of Object.entries(arg)) {
20468      super._typeCheckConfig({
20469        selector,
20470        entry: content
20471      }, DefaultContentType);
20472    }
20473  }
20474  _setContent(template, content, selector) {
20475    const templateElement = SelectorEngine.findOne(selector, template);
20476    if (!templateElement) {
20477      return;
20478    }
20479    content = this._resolvePossibleFunction(content);
20480    if (!content) {
20481      templateElement.remove();
20482      return;
20483    }
20484    if (isElement(content)) {
20485      this._putElementInTemplate(getElement(content), templateElement);
20486      return;
20487    }
20488    if (this._config.html) {
20489      templateElement.innerHTML = this._maybeSanitize(content);
20490      return;
20491    }
20492    templateElement.textContent = content;
20493  }
20494  _maybeSanitize(arg) {
20495    return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg;
20496  }
20497  _resolvePossibleFunction(arg) {
20498    return execute(arg, [this]);
20499  }
20500  _putElementInTemplate(element, templateElement) {
20501    if (this._config.html) {
20502      templateElement.innerHTML = '';
20503      templateElement.append(element);
20504      return;
20505    }
20506    templateElement.textContent = element.textContent;
20507  }
20508}
20509
20510/**
20511 * --------------------------------------------------------------------------
20512 * Bootstrap tooltip.js
20513 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
20514 * --------------------------------------------------------------------------
20515 */
20516
20517
20518/**
20519 * Constants
20520 */
20521
20522const NAME$4 = 'tooltip';
20523const DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']);
20524const CLASS_NAME_FADE$2 = 'fade';
20525const CLASS_NAME_MODAL = 'modal';
20526const CLASS_NAME_SHOW$2 = 'show';
20527const SELECTOR_TOOLTIP_INNER = '.tooltip-inner';
20528const SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`;
20529const EVENT_MODAL_HIDE = 'hide.bs.modal';
20530const TRIGGER_HOVER = 'hover';
20531const TRIGGER_FOCUS = 'focus';
20532const TRIGGER_CLICK = 'click';
20533const TRIGGER_MANUAL = 'manual';
20534const EVENT_HIDE$2 = 'hide';
20535const EVENT_HIDDEN$2 = 'hidden';
20536const EVENT_SHOW$2 = 'show';
20537const EVENT_SHOWN$2 = 'shown';
20538const EVENT_INSERTED = 'inserted';
20539const EVENT_CLICK$1 = 'click';
20540const EVENT_FOCUSIN$1 = 'focusin';
20541const EVENT_FOCUSOUT$1 = 'focusout';
20542const EVENT_MOUSEENTER = 'mouseenter';
20543const EVENT_MOUSELEAVE = 'mouseleave';
20544const AttachmentMap = {
20545  AUTO: 'auto',
20546  TOP: 'top',
20547  RIGHT: isRTL() ? 'left' : 'right',
20548  BOTTOM: 'bottom',
20549  LEFT: isRTL() ? 'right' : 'left'
20550};
20551const Default$3 = {
20552  allowList: DefaultAllowlist,
20553  animation: true,
20554  boundary: 'clippingParents',
20555  container: false,
20556  customClass: '',
20557  delay: 0,
20558  fallbackPlacements: ['top', 'right', 'bottom', 'left'],
20559  html: false,
20560  offset: [0, 6],
20561  placement: 'top',
20562  popperConfig: null,
20563  sanitize: true,
20564  sanitizeFn: null,
20565  selector: false,
20566  template: '<div class="tooltip" role="tooltip">' + '<div class="tooltip-arrow"></div>' + '<div class="tooltip-inner"></div>' + '</div>',
20567  title: '',
20568  trigger: 'hover focus'
20569};
20570const DefaultType$3 = {
20571  allowList: 'object',
20572  animation: 'boolean',
20573  boundary: '(string|element)',
20574  container: '(string|element|boolean)',
20575  customClass: '(string|function)',
20576  delay: '(number|object)',
20577  fallbackPlacements: 'array',
20578  html: 'boolean',
20579  offset: '(array|string|function)',
20580  placement: '(string|function)',
20581  popperConfig: '(null|object|function)',
20582  sanitize: 'boolean',
20583  sanitizeFn: '(null|function)',
20584  selector: '(string|boolean)',
20585  template: 'string',
20586  title: '(string|element|function)',
20587  trigger: 'string'
20588};
20589
20590/**
20591 * Class definition
20592 */
20593
20594class Tooltip extends BaseComponent {
20595  constructor(element, config) {
20596    if (typeof _popperjs_core__WEBPACK_IMPORTED_MODULE_0__ === 'undefined') {
20597      throw new TypeError('Bootstrap\'s tooltips require Popper (https://popper.js.org)');
20598    }
20599    super(element, config);
20600
20601    // Private
20602    this._isEnabled = true;
20603    this._timeout = 0;
20604    this._isHovered = null;
20605    this._activeTrigger = {};
20606    this._popper = null;
20607    this._templateFactory = null;
20608    this._newContent = null;
20609
20610    // Protected
20611    this.tip = null;
20612    this._setListeners();
20613    if (!this._config.selector) {
20614      this._fixTitle();
20615    }
20616  }
20617
20618  // Getters
20619  static get Default() {
20620    return Default$3;
20621  }
20622  static get DefaultType() {
20623    return DefaultType$3;
20624  }
20625  static get NAME() {
20626    return NAME$4;
20627  }
20628
20629  // Public
20630  enable() {
20631    this._isEnabled = true;
20632  }
20633  disable() {
20634    this._isEnabled = false;
20635  }
20636  toggleEnabled() {
20637    this._isEnabled = !this._isEnabled;
20638  }
20639  toggle() {
20640    if (!this._isEnabled) {
20641      return;
20642    }
20643    this._activeTrigger.click = !this._activeTrigger.click;
20644    if (this._isShown()) {
20645      this._leave();
20646      return;
20647    }
20648    this._enter();
20649  }
20650  dispose() {
20651    clearTimeout(this._timeout);
20652    EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);
20653    if (this._element.getAttribute('data-bs-original-title')) {
20654      this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'));
20655    }
20656    this._disposePopper();
20657    super.dispose();
20658  }
20659  show() {
20660    if (this._element.style.display === 'none') {
20661      throw new Error('Please use show on visible elements');
20662    }
20663    if (!(this._isWithContent() && this._isEnabled)) {
20664      return;
20665    }
20666    const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW$2));
20667    const shadowRoot = findShadowRoot(this._element);
20668    const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element);
20669    if (showEvent.defaultPrevented || !isInTheDom) {
20670      return;
20671    }
20672
20673    // TODO: v6 remove this or make it optional
20674    this._disposePopper();
20675    const tip = this._getTipElement();
20676    this._element.setAttribute('aria-describedby', tip.getAttribute('id'));
20677    const {
20678      container
20679    } = this._config;
20680    if (!this._element.ownerDocument.documentElement.contains(this.tip)) {
20681      container.append(tip);
20682      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED));
20683    }
20684    this._popper = this._createPopper(tip);
20685    tip.classList.add(CLASS_NAME_SHOW$2);
20686
20687    // If this is a touch-enabled device we add extra
20688    // empty mouseover listeners to the body's immediate children;
20689    // only needed because of broken event delegation on iOS
20690    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
20691    if ('ontouchstart' in document.documentElement) {
20692      for (const element of [].concat(...document.body.children)) {
20693        EventHandler.on(element, 'mouseover', noop);
20694      }
20695    }
20696    const complete = () => {
20697      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN$2));
20698      if (this._isHovered === false) {
20699        this._leave();
20700      }
20701      this._isHovered = false;
20702    };
20703    this._queueCallback(complete, this.tip, this._isAnimated());
20704  }
20705  hide() {
20706    if (!this._isShown()) {
20707      return;
20708    }
20709    const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE$2));
20710    if (hideEvent.defaultPrevented) {
20711      return;
20712    }
20713    const tip = this._getTipElement();
20714    tip.classList.remove(CLASS_NAME_SHOW$2);
20715
20716    // If this is a touch-enabled device we remove the extra
20717    // empty mouseover listeners we added for iOS support
20718    if ('ontouchstart' in document.documentElement) {
20719      for (const element of [].concat(...document.body.children)) {
20720        EventHandler.off(element, 'mouseover', noop);
20721      }
20722    }
20723    this._activeTrigger[TRIGGER_CLICK] = false;
20724    this._activeTrigger[TRIGGER_FOCUS] = false;
20725    this._activeTrigger[TRIGGER_HOVER] = false;
20726    this._isHovered = null; // it is a trick to support manual triggering
20727
20728    const complete = () => {
20729      if (this._isWithActiveTrigger()) {
20730        return;
20731      }
20732      if (!this._isHovered) {
20733        this._disposePopper();
20734      }
20735      this._element.removeAttribute('aria-describedby');
20736      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN$2));
20737    };
20738    this._queueCallback(complete, this.tip, this._isAnimated());
20739  }
20740  update() {
20741    if (this._popper) {
20742      this._popper.update();
20743    }
20744  }
20745
20746  // Protected
20747  _isWithContent() {
20748    return Boolean(this._getTitle());
20749  }
20750  _getTipElement() {
20751    if (!this.tip) {
20752      this.tip = this._createTipElement(this._newContent || this._getContentForTemplate());
20753    }
20754    return this.tip;
20755  }
20756  _createTipElement(content) {
20757    const tip = this._getTemplateFactory(content).toHtml();
20758
20759    // TODO: remove this check in v6
20760    if (!tip) {
20761      return null;
20762    }
20763    tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2);
20764    // TODO: v6 the following can be achieved with CSS only
20765    tip.classList.add(`bs-${this.constructor.NAME}-auto`);
20766    const tipId = getUID(this.constructor.NAME).toString();
20767    tip.setAttribute('id', tipId);
20768    if (this._isAnimated()) {
20769      tip.classList.add(CLASS_NAME_FADE$2);
20770    }
20771    return tip;
20772  }
20773  setContent(content) {
20774    this._newContent = content;
20775    if (this._isShown()) {
20776      this._disposePopper();
20777      this.show();
20778    }
20779  }
20780  _getTemplateFactory(content) {
20781    if (this._templateFactory) {
20782      this._templateFactory.changeContent(content);
20783    } else {
20784      this._templateFactory = new TemplateFactory({
20785        ...this._config,
20786        // the `content` var has to be after `this._config`
20787        // to override config.content in case of popover
20788        content,
20789        extraClass: this._resolvePossibleFunction(this._config.customClass)
20790      });
20791    }
20792    return this._templateFactory;
20793  }
20794  _getContentForTemplate() {
20795    return {
20796      [SELECTOR_TOOLTIP_INNER]: this._getTitle()
20797    };
20798  }
20799  _getTitle() {
20800    return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title');
20801  }
20802
20803  // Private
20804  _initializeOnDelegatedTarget(event) {
20805    return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig());
20806  }
20807  _isAnimated() {
20808    return this._config.animation || this.tip && this.tip.classList.contains(CLASS_NAME_FADE$2);
20809  }
20810  _isShown() {
20811    return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW$2);
20812  }
20813  _createPopper(tip) {
20814    const placement = execute(this._config.placement, [this, tip, this._element]);
20815    const attachment = AttachmentMap[placement.toUpperCase()];
20816    return _popperjs_core__WEBPACK_IMPORTED_MODULE_1__.createPopper(this._element, tip, this._getPopperConfig(attachment));
20817  }
20818  _getOffset() {
20819    const {
20820      offset
20821    } = this._config;
20822    if (typeof offset === 'string') {
20823      return offset.split(',').map(value => Number.parseInt(value, 10));
20824    }
20825    if (typeof offset === 'function') {
20826      return popperData => offset(popperData, this._element);
20827    }
20828    return offset;
20829  }
20830  _resolvePossibleFunction(arg) {
20831    return execute(arg, [this._element]);
20832  }
20833  _getPopperConfig(attachment) {
20834    const defaultBsPopperConfig = {
20835      placement: attachment,
20836      modifiers: [{
20837        name: 'flip',
20838        options: {
20839          fallbackPlacements: this._config.fallbackPlacements
20840        }
20841      }, {
20842        name: 'offset',
20843        options: {
20844          offset: this._getOffset()
20845        }
20846      }, {
20847        name: 'preventOverflow',
20848        options: {
20849          boundary: this._config.boundary
20850        }
20851      }, {
20852        name: 'arrow',
20853        options: {
20854          element: `.${this.constructor.NAME}-arrow`
20855        }
20856      }, {
20857        name: 'preSetPlacement',
20858        enabled: true,
20859        phase: 'beforeMain',
20860        fn: data => {
20861          // Pre-set Popper's placement attribute in order to read the arrow sizes properly.
20862          // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement
20863          this._getTipElement().setAttribute('data-popper-placement', data.state.placement);
20864        }
20865      }]
20866    };
20867    return {
20868      ...defaultBsPopperConfig,
20869      ...execute(this._config.popperConfig, [defaultBsPopperConfig])
20870    };
20871  }
20872  _setListeners() {
20873    const triggers = this._config.trigger.split(' ');
20874    for (const trigger of triggers) {
20875      if (trigger === 'click') {
20876        EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK$1), this._config.selector, event => {
20877          const context = this._initializeOnDelegatedTarget(event);
20878          context.toggle();
20879        });
20880      } else if (trigger !== TRIGGER_MANUAL) {
20881        const eventIn = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSEENTER) : this.constructor.eventName(EVENT_FOCUSIN$1);
20882        const eventOut = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSELEAVE) : this.constructor.eventName(EVENT_FOCUSOUT$1);
20883        EventHandler.on(this._element, eventIn, this._config.selector, event => {
20884          const context = this._initializeOnDelegatedTarget(event);
20885          context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;
20886          context._enter();
20887        });
20888        EventHandler.on(this._element, eventOut, this._config.selector, event => {
20889          const context = this._initializeOnDelegatedTarget(event);
20890          context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget);
20891          context._leave();
20892        });
20893      }
20894    }
20895    this._hideModalHandler = () => {
20896      if (this._element) {
20897        this.hide();
20898      }
20899    };
20900    EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);
20901  }
20902  _fixTitle() {
20903    const title = this._element.getAttribute('title');
20904    if (!title) {
20905      return;
20906    }
20907    if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {
20908      this._element.setAttribute('aria-label', title);
20909    }
20910    this._element.setAttribute('data-bs-original-title', title); // DO NOT USE IT. Is only for backwards compatibility
20911    this._element.removeAttribute('title');
20912  }
20913  _enter() {
20914    if (this._isShown() || this._isHovered) {
20915      this._isHovered = true;
20916      return;
20917    }
20918    this._isHovered = true;
20919    this._setTimeout(() => {
20920      if (this._isHovered) {
20921        this.show();
20922      }
20923    }, this._config.delay.show);
20924  }
20925  _leave() {
20926    if (this._isWithActiveTrigger()) {
20927      return;
20928    }
20929    this._isHovered = false;
20930    this._setTimeout(() => {
20931      if (!this._isHovered) {
20932        this.hide();
20933      }
20934    }, this._config.delay.hide);
20935  }
20936  _setTimeout(handler, timeout) {
20937    clearTimeout(this._timeout);
20938    this._timeout = setTimeout(handler, timeout);
20939  }
20940  _isWithActiveTrigger() {
20941    return Object.values(this._activeTrigger).includes(true);
20942  }
20943  _getConfig(config) {
20944    const dataAttributes = Manipulator.getDataAttributes(this._element);
20945    for (const dataAttribute of Object.keys(dataAttributes)) {
20946      if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {
20947        delete dataAttributes[dataAttribute];
20948      }
20949    }
20950    config = {
20951      ...dataAttributes,
20952      ...(typeof config === 'object' && config ? config : {})
20953    };
20954    config = this._mergeConfigObj(config);
20955    config = this._configAfterMerge(config);
20956    this._typeCheckConfig(config);
20957    return config;
20958  }
20959  _configAfterMerge(config) {
20960    config.container = config.container === false ? document.body : getElement(config.container);
20961    if (typeof config.delay === 'number') {
20962      config.delay = {
20963        show: config.delay,
20964        hide: config.delay
20965      };
20966    }
20967    if (typeof config.title === 'number') {
20968      config.title = config.title.toString();
20969    }
20970    if (typeof config.content === 'number') {
20971      config.content = config.content.toString();
20972    }
20973    return config;
20974  }
20975  _getDelegateConfig() {
20976    const config = {};
20977    for (const [key, value] of Object.entries(this._config)) {
20978      if (this.constructor.Default[key] !== value) {
20979        config[key] = value;
20980      }
20981    }
20982    config.selector = false;
20983    config.trigger = 'manual';
20984
20985    // In the future can be replaced with:
20986    // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])
20987    // `Object.fromEntries(keysWithDifferentValues)`
20988    return config;
20989  }
20990  _disposePopper() {
20991    if (this._popper) {
20992      this._popper.destroy();
20993      this._popper = null;
20994    }
20995    if (this.tip) {
20996      this.tip.remove();
20997      this.tip = null;
20998    }
20999  }
21000
21001  // Static
21002  static jQueryInterface(config) {
21003    return this.each(function () {
21004      const data = Tooltip.getOrCreateInstance(this, config);
21005      if (typeof config !== 'string') {
21006        return;
21007      }
21008      if (typeof data[config] === 'undefined') {
21009        throw new TypeError(`No method named "${config}"`);
21010      }
21011      data[config]();
21012    });
21013  }
21014}
21015
21016/**
21017 * jQuery
21018 */
21019
21020defineJQueryPlugin(Tooltip);
21021
21022/**
21023 * --------------------------------------------------------------------------
21024 * Bootstrap popover.js
21025 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
21026 * --------------------------------------------------------------------------
21027 */
21028
21029
21030/**
21031 * Constants
21032 */
21033
21034const NAME$3 = 'popover';
21035const SELECTOR_TITLE = '.popover-header';
21036const SELECTOR_CONTENT = '.popover-body';
21037const Default$2 = {
21038  ...Tooltip.Default,
21039  content: '',
21040  offset: [0, 8],
21041  placement: 'right',
21042  template: '<div class="popover" role="tooltip">' + '<div class="popover-arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div>' + '</div>',
21043  trigger: 'click'
21044};
21045const DefaultType$2 = {
21046  ...Tooltip.DefaultType,
21047  content: '(null|string|element|function)'
21048};
21049
21050/**
21051 * Class definition
21052 */
21053
21054class Popover extends Tooltip {
21055  // Getters
21056  static get Default() {
21057    return Default$2;
21058  }
21059  static get DefaultType() {
21060    return DefaultType$2;
21061  }
21062  static get NAME() {
21063    return NAME$3;
21064  }
21065
21066  // Overrides
21067  _isWithContent() {
21068    return this._getTitle() || this._getContent();
21069  }
21070
21071  // Private
21072  _getContentForTemplate() {
21073    return {
21074      [SELECTOR_TITLE]: this._getTitle(),
21075      [SELECTOR_CONTENT]: this._getContent()
21076    };
21077  }
21078  _getContent() {
21079    return this._resolvePossibleFunction(this._config.content);
21080  }
21081
21082  // Static
21083  static jQueryInterface(config) {
21084    return this.each(function () {
21085      const data = Popover.getOrCreateInstance(this, config);
21086      if (typeof config !== 'string') {
21087        return;
21088      }
21089      if (typeof data[config] === 'undefined') {
21090        throw new TypeError(`No method named "${config}"`);
21091      }
21092      data[config]();
21093    });
21094  }
21095}
21096
21097/**
21098 * jQuery
21099 */
21100
21101defineJQueryPlugin(Popover);
21102
21103/**
21104 * --------------------------------------------------------------------------
21105 * Bootstrap scrollspy.js
21106 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
21107 * --------------------------------------------------------------------------
21108 */
21109
21110
21111/**
21112 * Constants
21113 */
21114
21115const NAME$2 = 'scrollspy';
21116const DATA_KEY$2 = 'bs.scrollspy';
21117const EVENT_KEY$2 = `.${DATA_KEY$2}`;
21118const DATA_API_KEY = '.data-api';
21119const EVENT_ACTIVATE = `activate${EVENT_KEY$2}`;
21120const EVENT_CLICK = `click${EVENT_KEY$2}`;
21121const EVENT_LOAD_DATA_API$1 = `load${EVENT_KEY$2}${DATA_API_KEY}`;
21122const CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';
21123const CLASS_NAME_ACTIVE$1 = 'active';
21124const SELECTOR_DATA_SPY = '[data-bs-spy="scroll"]';
21125const SELECTOR_TARGET_LINKS = '[href]';
21126const SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';
21127const SELECTOR_NAV_LINKS = '.nav-link';
21128const SELECTOR_NAV_ITEMS = '.nav-item';
21129const SELECTOR_LIST_ITEMS = '.list-group-item';
21130const SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`;
21131const SELECTOR_DROPDOWN = '.dropdown';
21132const SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';
21133const Default$1 = {
21134  offset: null,
21135  // TODO: v6 @deprecated, keep it for backwards compatibility reasons
21136  rootMargin: '0px 0px -25%',
21137  smoothScroll: false,
21138  target: null,
21139  threshold: [0.1, 0.5, 1]
21140};
21141const DefaultType$1 = {
21142  offset: '(number|null)',
21143  // TODO v6 @deprecated, keep it for backwards compatibility reasons
21144  rootMargin: 'string',
21145  smoothScroll: 'boolean',
21146  target: 'element',
21147  threshold: 'array'
21148};
21149
21150/**
21151 * Class definition
21152 */
21153
21154class ScrollSpy extends BaseComponent {
21155  constructor(element, config) {
21156    super(element, config);
21157
21158    // this._element is the observablesContainer and config.target the menu links wrapper
21159    this._targetLinks = new Map();
21160    this._observableSections = new Map();
21161    this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element;
21162    this._activeTarget = null;
21163    this._observer = null;
21164    this._previousScrollData = {
21165      visibleEntryTop: 0,
21166      parentScrollTop: 0
21167    };
21168    this.refresh(); // initialize
21169  }
21170
21171  // Getters
21172  static get Default() {
21173    return Default$1;
21174  }
21175  static get DefaultType() {
21176    return DefaultType$1;
21177  }
21178  static get NAME() {
21179    return NAME$2;
21180  }
21181
21182  // Public
21183  refresh() {
21184    this._initializeTargetsAndObservables();
21185    this._maybeEnableSmoothScroll();
21186    if (this._observer) {
21187      this._observer.disconnect();
21188    } else {
21189      this._observer = this._getNewObserver();
21190    }
21191    for (const section of this._observableSections.values()) {
21192      this._observer.observe(section);
21193    }
21194  }
21195  dispose() {
21196    this._observer.disconnect();
21197    super.dispose();
21198  }
21199
21200  // Private
21201  _configAfterMerge(config) {
21202    // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case
21203    config.target = getElement(config.target) || document.body;
21204
21205    // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only
21206    config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin;
21207    if (typeof config.threshold === 'string') {
21208      config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value));
21209    }
21210    return config;
21211  }
21212  _maybeEnableSmoothScroll() {
21213    if (!this._config.smoothScroll) {
21214      return;
21215    }
21216
21217    // unregister any previous listeners
21218    EventHandler.off(this._config.target, EVENT_CLICK);
21219    EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {
21220      const observableSection = this._observableSections.get(event.target.hash);
21221      if (observableSection) {
21222        event.preventDefault();
21223        const root = this._rootElement || window;
21224        const height = observableSection.offsetTop - this._element.offsetTop;
21225        if (root.scrollTo) {
21226          root.scrollTo({
21227            top: height,
21228            behavior: 'smooth'
21229          });
21230          return;
21231        }
21232
21233        // Chrome 60 doesn't support `scrollTo`
21234        root.scrollTop = height;
21235      }
21236    });
21237  }
21238  _getNewObserver() {
21239    const options = {
21240      root: this._rootElement,
21241      threshold: this._config.threshold,
21242      rootMargin: this._config.rootMargin
21243    };
21244    return new IntersectionObserver(entries => this._observerCallback(entries), options);
21245  }
21246
21247  // The logic of selection
21248  _observerCallback(entries) {
21249    const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`);
21250    const activate = entry => {
21251      this._previousScrollData.visibleEntryTop = entry.target.offsetTop;
21252      this._process(targetElement(entry));
21253    };
21254    const parentScrollTop = (this._rootElement || document.documentElement).scrollTop;
21255    const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop;
21256    this._previousScrollData.parentScrollTop = parentScrollTop;
21257    for (const entry of entries) {
21258      if (!entry.isIntersecting) {
21259        this._activeTarget = null;
21260        this._clearActiveClass(targetElement(entry));
21261        continue;
21262      }
21263      const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop;
21264      // if we are scrolling down, pick the bigger offsetTop
21265      if (userScrollsDown && entryIsLowerThanPrevious) {
21266        activate(entry);
21267        // if parent isn't scrolled, let's keep the first visible item, breaking the iteration
21268        if (!parentScrollTop) {
21269          return;
21270        }
21271        continue;
21272      }
21273
21274      // if we are scrolling up, pick the smallest offsetTop
21275      if (!userScrollsDown && !entryIsLowerThanPrevious) {
21276        activate(entry);
21277      }
21278    }
21279  }
21280  _initializeTargetsAndObservables() {
21281    this._targetLinks = new Map();
21282    this._observableSections = new Map();
21283    const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target);
21284    for (const anchor of targetLinks) {
21285      // ensure that the anchor has an id and is not disabled
21286      if (!anchor.hash || isDisabled(anchor)) {
21287        continue;
21288      }
21289      const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element);
21290
21291      // ensure that the observableSection exists & is visible
21292      if (isVisible(observableSection)) {
21293        this._targetLinks.set(decodeURI(anchor.hash), anchor);
21294        this._observableSections.set(anchor.hash, observableSection);
21295      }
21296    }
21297  }
21298  _process(target) {
21299    if (this._activeTarget === target) {
21300      return;
21301    }
21302    this._clearActiveClass(this._config.target);
21303    this._activeTarget = target;
21304    target.classList.add(CLASS_NAME_ACTIVE$1);
21305    this._activateParents(target);
21306    EventHandler.trigger(this._element, EVENT_ACTIVATE, {
21307      relatedTarget: target
21308    });
21309  }
21310  _activateParents(target) {
21311    // Activate dropdown parents
21312    if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {
21313      SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, target.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE$1);
21314      return;
21315    }
21316    for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {
21317      // Set triggered links parents as active
21318      // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor
21319      for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) {
21320        item.classList.add(CLASS_NAME_ACTIVE$1);
21321      }
21322    }
21323  }
21324  _clearActiveClass(parent) {
21325    parent.classList.remove(CLASS_NAME_ACTIVE$1);
21326    const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE$1}`, parent);
21327    for (const node of activeNodes) {
21328      node.classList.remove(CLASS_NAME_ACTIVE$1);
21329    }
21330  }
21331
21332  // Static
21333  static jQueryInterface(config) {
21334    return this.each(function () {
21335      const data = ScrollSpy.getOrCreateInstance(this, config);
21336      if (typeof config !== 'string') {
21337        return;
21338      }
21339      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
21340        throw new TypeError(`No method named "${config}"`);
21341      }
21342      data[config]();
21343    });
21344  }
21345}
21346
21347/**
21348 * Data API implementation
21349 */
21350
21351EventHandler.on(window, EVENT_LOAD_DATA_API$1, () => {
21352  for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {
21353    ScrollSpy.getOrCreateInstance(spy);
21354  }
21355});
21356
21357/**
21358 * jQuery
21359 */
21360
21361defineJQueryPlugin(ScrollSpy);
21362
21363/**
21364 * --------------------------------------------------------------------------
21365 * Bootstrap tab.js
21366 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
21367 * --------------------------------------------------------------------------
21368 */
21369
21370
21371/**
21372 * Constants
21373 */
21374
21375const NAME$1 = 'tab';
21376const DATA_KEY$1 = 'bs.tab';
21377const EVENT_KEY$1 = `.${DATA_KEY$1}`;
21378const EVENT_HIDE$1 = `hide${EVENT_KEY$1}`;
21379const EVENT_HIDDEN$1 = `hidden${EVENT_KEY$1}`;
21380const EVENT_SHOW$1 = `show${EVENT_KEY$1}`;
21381const EVENT_SHOWN$1 = `shown${EVENT_KEY$1}`;
21382const EVENT_CLICK_DATA_API = `click${EVENT_KEY$1}`;
21383const EVENT_KEYDOWN = `keydown${EVENT_KEY$1}`;
21384const EVENT_LOAD_DATA_API = `load${EVENT_KEY$1}`;
21385const ARROW_LEFT_KEY = 'ArrowLeft';
21386const ARROW_RIGHT_KEY = 'ArrowRight';
21387const ARROW_UP_KEY = 'ArrowUp';
21388const ARROW_DOWN_KEY = 'ArrowDown';
21389const HOME_KEY = 'Home';
21390const END_KEY = 'End';
21391const CLASS_NAME_ACTIVE = 'active';
21392const CLASS_NAME_FADE$1 = 'fade';
21393const CLASS_NAME_SHOW$1 = 'show';
21394const CLASS_DROPDOWN = 'dropdown';
21395const SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';
21396const SELECTOR_DROPDOWN_MENU = '.dropdown-menu';
21397const NOT_SELECTOR_DROPDOWN_TOGGLE = `:not(${SELECTOR_DROPDOWN_TOGGLE})`;
21398const SELECTOR_TAB_PANEL = '.list-group, .nav, [role="tablist"]';
21399const SELECTOR_OUTER = '.nav-item, .list-group-item';
21400const SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role="tab"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`;
21401const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]'; // TODO: could only be `tab` in v6
21402const SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`;
21403const SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle="tab"], .${CLASS_NAME_ACTIVE}[data-bs-toggle="pill"], .${CLASS_NAME_ACTIVE}[data-bs-toggle="list"]`;
21404
21405/**
21406 * Class definition
21407 */
21408
21409class Tab extends BaseComponent {
21410  constructor(element) {
21411    super(element);
21412    this._parent = this._element.closest(SELECTOR_TAB_PANEL);
21413    if (!this._parent) {
21414      return;
21415      // TODO: should throw exception in v6
21416      // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_INNER_ELEM}`)
21417    }
21418
21419    // Set up initial aria attributes
21420    this._setInitialAttributes(this._parent, this._getChildren());
21421    EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event));
21422  }
21423
21424  // Getters
21425  static get NAME() {
21426    return NAME$1;
21427  }
21428
21429  // Public
21430  show() {
21431    // Shows this elem and deactivate the active sibling if exists
21432    const innerElem = this._element;
21433    if (this._elemIsActive(innerElem)) {
21434      return;
21435    }
21436
21437    // Search for active tab on same parent to deactivate it
21438    const active = this._getActiveElem();
21439    const hideEvent = active ? EventHandler.trigger(active, EVENT_HIDE$1, {
21440      relatedTarget: innerElem
21441    }) : null;
21442    const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW$1, {
21443      relatedTarget: active
21444    });
21445    if (showEvent.defaultPrevented || hideEvent && hideEvent.defaultPrevented) {
21446      return;
21447    }
21448    this._deactivate(active, innerElem);
21449    this._activate(innerElem, active);
21450  }
21451
21452  // Private
21453  _activate(element, relatedElem) {
21454    if (!element) {
21455      return;
21456    }
21457    element.classList.add(CLASS_NAME_ACTIVE);
21458    this._activate(SelectorEngine.getElementFromSelector(element)); // Search and activate/show the proper section
21459
21460    const complete = () => {
21461      if (element.getAttribute('role') !== 'tab') {
21462        element.classList.add(CLASS_NAME_SHOW$1);
21463        return;
21464      }
21465      element.removeAttribute('tabindex');
21466      element.setAttribute('aria-selected', true);
21467      this._toggleDropDown(element, true);
21468      EventHandler.trigger(element, EVENT_SHOWN$1, {
21469        relatedTarget: relatedElem
21470      });
21471    };
21472    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1));
21473  }
21474  _deactivate(element, relatedElem) {
21475    if (!element) {
21476      return;
21477    }
21478    element.classList.remove(CLASS_NAME_ACTIVE);
21479    element.blur();
21480    this._deactivate(SelectorEngine.getElementFromSelector(element)); // Search and deactivate the shown section too
21481
21482    const complete = () => {
21483      if (element.getAttribute('role') !== 'tab') {
21484        element.classList.remove(CLASS_NAME_SHOW$1);
21485        return;
21486      }
21487      element.setAttribute('aria-selected', false);
21488      element.setAttribute('tabindex', '-1');
21489      this._toggleDropDown(element, false);
21490      EventHandler.trigger(element, EVENT_HIDDEN$1, {
21491        relatedTarget: relatedElem
21492      });
21493    };
21494    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1));
21495  }
21496  _keydown(event) {
21497    if (![ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY, HOME_KEY, END_KEY].includes(event.key)) {
21498      return;
21499    }
21500    event.stopPropagation(); // stopPropagation/preventDefault both added to support up/down keys without scrolling the page
21501    event.preventDefault();
21502    const children = this._getChildren().filter(element => !isDisabled(element));
21503    let nextActiveElement;
21504    if ([HOME_KEY, END_KEY].includes(event.key)) {
21505      nextActiveElement = children[event.key === HOME_KEY ? 0 : children.length - 1];
21506    } else {
21507      const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key);
21508      nextActiveElement = getNextActiveElement(children, event.target, isNext, true);
21509    }
21510    if (nextActiveElement) {
21511      nextActiveElement.focus({
21512        preventScroll: true
21513      });
21514      Tab.getOrCreateInstance(nextActiveElement).show();
21515    }
21516  }
21517  _getChildren() {
21518    // collection of inner elements
21519    return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent);
21520  }
21521  _getActiveElem() {
21522    return this._getChildren().find(child => this._elemIsActive(child)) || null;
21523  }
21524  _setInitialAttributes(parent, children) {
21525    this._setAttributeIfNotExists(parent, 'role', 'tablist');
21526    for (const child of children) {
21527      this._setInitialAttributesOnChild(child);
21528    }
21529  }
21530  _setInitialAttributesOnChild(child) {
21531    child = this._getInnerElement(child);
21532    const isActive = this._elemIsActive(child);
21533    const outerElem = this._getOuterElement(child);
21534    child.setAttribute('aria-selected', isActive);
21535    if (outerElem !== child) {
21536      this._setAttributeIfNotExists(outerElem, 'role', 'presentation');
21537    }
21538    if (!isActive) {
21539      child.setAttribute('tabindex', '-1');
21540    }
21541    this._setAttributeIfNotExists(child, 'role', 'tab');
21542
21543    // set attributes to the related panel too
21544    this._setInitialAttributesOnTargetPanel(child);
21545  }
21546  _setInitialAttributesOnTargetPanel(child) {
21547    const target = SelectorEngine.getElementFromSelector(child);
21548    if (!target) {
21549      return;
21550    }
21551    this._setAttributeIfNotExists(target, 'role', 'tabpanel');
21552    if (child.id) {
21553      this._setAttributeIfNotExists(target, 'aria-labelledby', `${child.id}`);
21554    }
21555  }
21556  _toggleDropDown(element, open) {
21557    const outerElem = this._getOuterElement(element);
21558    if (!outerElem.classList.contains(CLASS_DROPDOWN)) {
21559      return;
21560    }
21561    const toggle = (selector, className) => {
21562      const element = SelectorEngine.findOne(selector, outerElem);
21563      if (element) {
21564        element.classList.toggle(className, open);
21565      }
21566    };
21567    toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE);
21568    toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW$1);
21569    outerElem.setAttribute('aria-expanded', open);
21570  }
21571  _setAttributeIfNotExists(element, attribute, value) {
21572    if (!element.hasAttribute(attribute)) {
21573      element.setAttribute(attribute, value);
21574    }
21575  }
21576  _elemIsActive(elem) {
21577    return elem.classList.contains(CLASS_NAME_ACTIVE);
21578  }
21579
21580  // Try to get the inner element (usually the .nav-link)
21581  _getInnerElement(elem) {
21582    return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem);
21583  }
21584
21585  // Try to get the outer element (usually the .nav-item)
21586  _getOuterElement(elem) {
21587    return elem.closest(SELECTOR_OUTER) || elem;
21588  }
21589
21590  // Static
21591  static jQueryInterface(config) {
21592    return this.each(function () {
21593      const data = Tab.getOrCreateInstance(this);
21594      if (typeof config !== 'string') {
21595        return;
21596      }
21597      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
21598        throw new TypeError(`No method named "${config}"`);
21599      }
21600      data[config]();
21601    });
21602  }
21603}
21604
21605/**
21606 * Data API implementation
21607 */
21608
21609EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
21610  if (['A', 'AREA'].includes(this.tagName)) {
21611    event.preventDefault();
21612  }
21613  if (isDisabled(this)) {
21614    return;
21615  }
21616  Tab.getOrCreateInstance(this).show();
21617});
21618
21619/**
21620 * Initialize on focus
21621 */
21622EventHandler.on(window, EVENT_LOAD_DATA_API, () => {
21623  for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {
21624    Tab.getOrCreateInstance(element);
21625  }
21626});
21627/**
21628 * jQuery
21629 */
21630
21631defineJQueryPlugin(Tab);
21632
21633/**
21634 * --------------------------------------------------------------------------
21635 * Bootstrap toast.js
21636 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
21637 * --------------------------------------------------------------------------
21638 */
21639
21640
21641/**
21642 * Constants
21643 */
21644
21645const NAME = 'toast';
21646const DATA_KEY = 'bs.toast';
21647const EVENT_KEY = `.${DATA_KEY}`;
21648const EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`;
21649const EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`;
21650const EVENT_FOCUSIN = `focusin${EVENT_KEY}`;
21651const EVENT_FOCUSOUT = `focusout${EVENT_KEY}`;
21652const EVENT_HIDE = `hide${EVENT_KEY}`;
21653const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
21654const EVENT_SHOW = `show${EVENT_KEY}`;
21655const EVENT_SHOWN = `shown${EVENT_KEY}`;
21656const CLASS_NAME_FADE = 'fade';
21657const CLASS_NAME_HIDE = 'hide'; // @deprecated - kept here only for backwards compatibility
21658const CLASS_NAME_SHOW = 'show';
21659const CLASS_NAME_SHOWING = 'showing';
21660const DefaultType = {
21661  animation: 'boolean',
21662  autohide: 'boolean',
21663  delay: 'number'
21664};
21665const Default = {
21666  animation: true,
21667  autohide: true,
21668  delay: 5000
21669};
21670
21671/**
21672 * Class definition
21673 */
21674
21675class Toast extends BaseComponent {
21676  constructor(element, config) {
21677    super(element, config);
21678    this._timeout = null;
21679    this._hasMouseInteraction = false;
21680    this._hasKeyboardInteraction = false;
21681    this._setListeners();
21682  }
21683
21684  // Getters
21685  static get Default() {
21686    return Default;
21687  }
21688  static get DefaultType() {
21689    return DefaultType;
21690  }
21691  static get NAME() {
21692    return NAME;
21693  }
21694
21695  // Public
21696  show() {
21697    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW);
21698    if (showEvent.defaultPrevented) {
21699      return;
21700    }
21701    this._clearTimeout();
21702    if (this._config.animation) {
21703      this._element.classList.add(CLASS_NAME_FADE);
21704    }
21705    const complete = () => {
21706      this._element.classList.remove(CLASS_NAME_SHOWING);
21707      EventHandler.trigger(this._element, EVENT_SHOWN);
21708      this._maybeScheduleHide();
21709    };
21710    this._element.classList.remove(CLASS_NAME_HIDE); // @deprecated
21711    reflow(this._element);
21712    this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING);
21713    this._queueCallback(complete, this._element, this._config.animation);
21714  }
21715  hide() {
21716    if (!this.isShown()) {
21717      return;
21718    }
21719    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE);
21720    if (hideEvent.defaultPrevented) {
21721      return;
21722    }
21723    const complete = () => {
21724      this._element.classList.add(CLASS_NAME_HIDE); // @deprecated
21725      this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW);
21726      EventHandler.trigger(this._element, EVENT_HIDDEN);
21727    };
21728    this._element.classList.add(CLASS_NAME_SHOWING);
21729    this._queueCallback(complete, this._element, this._config.animation);
21730  }
21731  dispose() {
21732    this._clearTimeout();
21733    if (this.isShown()) {
21734      this._element.classList.remove(CLASS_NAME_SHOW);
21735    }
21736    super.dispose();
21737  }
21738  isShown() {
21739    return this._element.classList.contains(CLASS_NAME_SHOW);
21740  }
21741
21742  // Private
21743
21744  _maybeScheduleHide() {
21745    if (!this._config.autohide) {
21746      return;
21747    }
21748    if (this._hasMouseInteraction || this._hasKeyboardInteraction) {
21749      return;
21750    }
21751    this._timeout = setTimeout(() => {
21752      this.hide();
21753    }, this._config.delay);
21754  }
21755  _onInteraction(event, isInteracting) {
21756    switch (event.type) {
21757      case 'mouseover':
21758      case 'mouseout':
21759        {
21760          this._hasMouseInteraction = isInteracting;
21761          break;
21762        }
21763      case 'focusin':
21764      case 'focusout':
21765        {
21766          this._hasKeyboardInteraction = isInteracting;
21767          break;
21768        }
21769    }
21770    if (isInteracting) {
21771      this._clearTimeout();
21772      return;
21773    }
21774    const nextElement = event.relatedTarget;
21775    if (this._element === nextElement || this._element.contains(nextElement)) {
21776      return;
21777    }
21778    this._maybeScheduleHide();
21779  }
21780  _setListeners() {
21781    EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true));
21782    EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false));
21783    EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true));
21784    EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false));
21785  }
21786  _clearTimeout() {
21787    clearTimeout(this._timeout);
21788    this._timeout = null;
21789  }
21790
21791  // Static
21792  static jQueryInterface(config) {
21793    return this.each(function () {
21794      const data = Toast.getOrCreateInstance(this, config);
21795      if (typeof config === 'string') {
21796        if (typeof data[config] === 'undefined') {
21797          throw new TypeError(`No method named "${config}"`);
21798        }
21799        data[config](this);
21800      }
21801    });
21802  }
21803}
21804
21805/**
21806 * Data API implementation
21807 */
21808
21809enableDismissTrigger(Toast);
21810
21811/**
21812 * jQuery
21813 */
21814
21815defineJQueryPlugin(Toast);
21816
21817
21818//# sourceMappingURL=bootstrap.esm.js.map
21819
21820
21821/***/ }),
21822
21823/***/ "./node_modules/css-loader/dist/cjs.js??clonedRuleSet-8.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-8.use[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ProfileEditModal.vue?vue&type=style&index=0&id=1d27ac85&scoped=true&lang=css":
21824/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
21825  !*** ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-8.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-8.use[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ProfileEditModal.vue?vue&type=style&index=0&id=1d27ac85&scoped=true&lang=css ***!
21826  \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
21827/***/ ((module, __webpack_exports__, __webpack_require__) => {
21828
21829"use strict";
21830__webpack_require__.r(__webpack_exports__);
21831/* harmony export */ __webpack_require__.d(__webpack_exports__, {
21832/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
21833/* harmony export */ });
21834/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");
21835/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__);
21836// Imports
21837
21838var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]});
21839// Module
21840___CSS_LOADER_EXPORT___.push([module.id, "\n.modal-header[data-v-1d27ac85] {\n  border-bottom: 1px solid #dee2e6;\n}\n.modal-footer[data-v-1d27ac85] {\n  border-top: 1px solid #dee2e6;\n}\n.text-danger[data-v-1d27ac85] {\n  color: #dc3545 !important;\n}\n.spinner-border-sm[data-v-1d27ac85] {\n  width: 1rem;\n  height: 1rem;\n}\n", ""]);
21841// Exports
21842/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
21843
21844
21845/***/ }),
21846
vendor: 1,872 bytes, lines 21847-21922
21847/***/ "./node_modules/css-loader/dist/runtime/api.js":
21848/*!*****************************************************!*\
21849  !*** ./node_modules/css-loader/dist/runtime/api.js ***!
21850  \*****************************************************/
21851/***/ ((module) => {
21852
21853"use strict";
21854
21855
21856/*
21857  MIT License http://www.opensource.org/licenses/mit-license.php
21858  Author Tobias Koppers @sokra
21859*/
21860// css base code, injected by the css-loader
21861// eslint-disable-next-line func-names
21862module.exports = function (cssWithMappingToString) {
21863  var list = []; // return the list of modules as css string
21864
21865  list.toString = function toString() {
21866    return this.map(function (item) {
21867      var content = cssWithMappingToString(item);
21868
21869      if (item[2]) {
21870        return "@media ".concat(item[2], " {").concat(content, "}");
21871      }
21872
21873      return content;
21874    }).join("");
21875  }; // import a list of modules into the list
21876  // eslint-disable-next-line func-names
21877
21878
21879  list.i = function (modules, mediaQuery, dedupe) {
21880    if (typeof modules === "string") {
21881      // eslint-disable-next-line no-param-reassign
21882      modules = [[null, modules, ""]];
21883    }
21884
21885    var alreadyImportedModules = {};
21886
21887    if (dedupe) {
21888      for (var i = 0; i < this.length; i++) {
21889        // eslint-disable-next-line prefer-destructuring
21890        var id = this[i][0];
21891
21892        if (id != null) {
21893          alreadyImportedModules[id] = true;
21894        }
21895      }
21896    }
21897
21898    for (var _i = 0; _i < modules.length; _i++) {
21899      var item = [].concat(modules[_i]);
21900
21901      if (dedupe && alreadyImportedModules[item[0]]) {
21902        // eslint-disable-next-line no-continue
21903        continue;
21904      }
21905
21906      if (mediaQuery) {
21907        if (!item[2]) {
21908          item[2] = mediaQuery;
21909        } else {
21910          item[2] = "".concat(mediaQuery, " and ").concat(item[2]);
21911        }
21912      }
21913
21914      list.push(item);
21915    }
21916  };
21917
21918  return list;
21919};
21920
21921/***/ }),
21922
vendor: 40,610 bytes, lines 21923-23661
21923/***/ "./node_modules/laravel-echo/dist/echo.js":
21924/*!************************************************!*\
21925  !*** ./node_modules/laravel-echo/dist/echo.js ***!
21926  \************************************************/
21927/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
21928
21929"use strict";
21930__webpack_require__.r(__webpack_exports__);
21931/* harmony export */ __webpack_require__.d(__webpack_exports__, {
21932/* harmony export */   Channel: () => (/* binding */ Channel),
21933/* harmony export */   Connector: () => (/* binding */ Connector),
21934/* harmony export */   EventFormatter: () => (/* binding */ EventFormatter),
21935/* harmony export */   "default": () => (/* binding */ Echo)
21936/* harmony export */ });
21937function _typeof(obj) {
21938  "@babel/helpers - typeof";
21939
21940  return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) {
21941    return typeof obj;
21942  } : function (obj) {
21943    return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
21944  }, _typeof(obj);
21945}
21946
21947function _classCallCheck(instance, Constructor) {
21948  if (!(instance instanceof Constructor)) {
21949    throw new TypeError("Cannot call a class as a function");
21950  }
21951}
21952
21953function _defineProperties(target, props) {
21954  for (var i = 0; i < props.length; i++) {
21955    var descriptor = props[i];
21956    descriptor.enumerable = descriptor.enumerable || false;
21957    descriptor.configurable = true;
21958    if ("value" in descriptor) descriptor.writable = true;
21959    Object.defineProperty(target, descriptor.key, descriptor);
21960  }
21961}
21962
21963function _createClass(Constructor, protoProps, staticProps) {
21964  if (protoProps) _defineProperties(Constructor.prototype, protoProps);
21965  if (staticProps) _defineProperties(Constructor, staticProps);
21966  Object.defineProperty(Constructor, "prototype", {
21967    writable: false
21968  });
21969  return Constructor;
21970}
21971
21972function _extends() {
21973  _extends = Object.assign || function (target) {
21974    for (var i = 1; i < arguments.length; i++) {
21975      var source = arguments[i];
21976
21977      for (var key in source) {
21978        if (Object.prototype.hasOwnProperty.call(source, key)) {
21979          target[key] = source[key];
21980        }
21981      }
21982    }
21983
21984    return target;
21985  };
21986
21987  return _extends.apply(this, arguments);
21988}
21989
21990function _inherits(subClass, superClass) {
21991  if (typeof superClass !== "function" && superClass !== null) {
21992    throw new TypeError("Super expression must either be null or a function");
21993  }
21994
21995  subClass.prototype = Object.create(superClass && superClass.prototype, {
21996    constructor: {
21997      value: subClass,
21998      writable: true,
21999      configurable: true
22000    }
22001  });
22002  Object.defineProperty(subClass, "prototype", {
22003    writable: false
22004  });
22005  if (superClass) _setPrototypeOf(subClass, superClass);
22006}
22007
22008function _getPrototypeOf(o) {
22009  _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
22010    return o.__proto__ || Object.getPrototypeOf(o);
22011  };
22012  return _getPrototypeOf(o);
22013}
22014
22015function _setPrototypeOf(o, p) {
22016  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
22017    o.__proto__ = p;
22018    return o;
22019  };
22020
22021  return _setPrototypeOf(o, p);
22022}
22023
22024function _isNativeReflectConstruct() {
22025  if (typeof Reflect === "undefined" || !Reflect.construct) return false;
22026  if (Reflect.construct.sham) return false;
22027  if (typeof Proxy === "function") return true;
22028
22029  try {
22030    Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));
22031    return true;
22032  } catch (e) {
22033    return false;
22034  }
22035}
22036
22037function _assertThisInitialized(self) {
22038  if (self === void 0) {
22039    throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
22040  }
22041
22042  return self;
22043}
22044
22045function _possibleConstructorReturn(self, call) {
22046  if (call && (typeof call === "object" || typeof call === "function")) {
22047    return call;
22048  } else if (call !== void 0) {
22049    throw new TypeError("Derived constructors may only return object or undefined");
22050  }
22051
22052  return _assertThisInitialized(self);
22053}
22054
22055function _createSuper(Derived) {
22056  var hasNativeReflectConstruct = _isNativeReflectConstruct();
22057
22058  return function _createSuperInternal() {
22059    var Super = _getPrototypeOf(Derived),
22060        result;
22061
22062    if (hasNativeReflectConstruct) {
22063      var NewTarget = _getPrototypeOf(this).constructor;
22064
22065      result = Reflect.construct(Super, arguments, NewTarget);
22066    } else {
22067      result = Super.apply(this, arguments);
22068    }
22069
22070    return _possibleConstructorReturn(this, result);
22071  };
22072}
22073
22074/**
22075 * This class represents a basic channel.
22076 */
22077var Channel = /*#__PURE__*/function () {
22078  function Channel() {
22079    _classCallCheck(this, Channel);
22080  }
22081
22082  _createClass(Channel, [{
22083    key: "listenForWhisper",
22084    value:
22085    /**
22086     * Listen for a whisper event on the channel instance.
22087     */
22088    function listenForWhisper(event, callback) {
22089      return this.listen('.client-' + event, callback);
22090    }
22091    /**
22092     * Listen for an event on the channel instance.
22093     */
22094
22095  }, {
22096    key: "notification",
22097    value: function notification(callback) {
22098      return this.listen('.Illuminate\\Notifications\\Events\\BroadcastNotificationCreated', callback);
22099    }
22100    /**
22101     * Stop listening for a whisper event on the channel instance.
22102     */
22103
22104  }, {
22105    key: "stopListeningForWhisper",
22106    value: function stopListeningForWhisper(event, callback) {
22107      return this.stopListening('.client-' + event, callback);
22108    }
22109  }]);
22110
22111  return Channel;
22112}();
22113
22114/**
22115 * Event name formatter
22116 */
22117var EventFormatter = /*#__PURE__*/function () {
22118  /**
22119   * Create a new class instance.
22120   */
22121  function EventFormatter(namespace) {
22122    _classCallCheck(this, EventFormatter);
22123
22124    this.namespace = namespace; //
22125  }
22126  /**
22127   * Format the given event name.
22128   */
22129
22130
22131  _createClass(EventFormatter, [{
22132    key: "format",
22133    value: function format(event) {
22134      if (['.', '\\'].includes(event.charAt(0))) {
22135        return event.substring(1);
22136      } else if (this.namespace) {
22137        event = this.namespace + '.' + event;
22138      }
22139
22140      return event.replace(/\./g, '\\');
22141    }
22142    /**
22143     * Set the event namespace.
22144     */
22145
22146  }, {
22147    key: "setNamespace",
22148    value: function setNamespace(value) {
22149      this.namespace = value;
22150    }
22151  }]);
22152
22153  return EventFormatter;
22154}();
22155
22156function isConstructor(obj) {
22157  try {
22158    new obj();
22159  } catch (err) {
22160    if (err.message.includes('is not a constructor')) return false;
22161  }
22162
22163  return true;
22164}
22165
22166/**
22167 * This class represents a Pusher channel.
22168 */
22169
22170var PusherChannel = /*#__PURE__*/function (_Channel) {
22171  _inherits(PusherChannel, _Channel);
22172
22173  var _super = _createSuper(PusherChannel);
22174
22175  /**
22176   * Create a new class instance.
22177   */
22178  function PusherChannel(pusher, name, options) {
22179    var _this;
22180
22181    _classCallCheck(this, PusherChannel);
22182
22183    _this = _super.call(this);
22184    _this.name = name;
22185    _this.pusher = pusher;
22186    _this.options = options;
22187    _this.eventFormatter = new EventFormatter(_this.options.namespace);
22188
22189    _this.subscribe();
22190
22191    return _this;
22192  }
22193  /**
22194   * Subscribe to a Pusher channel.
22195   */
22196
22197
22198  _createClass(PusherChannel, [{
22199    key: "subscribe",
22200    value: function subscribe() {
22201      this.subscription = this.pusher.subscribe(this.name);
22202    }
22203    /**
22204     * Unsubscribe from a Pusher channel.
22205     */
22206
22207  }, {
22208    key: "unsubscribe",
22209    value: function unsubscribe() {
22210      this.pusher.unsubscribe(this.name);
22211    }
22212    /**
22213     * Listen for an event on the channel instance.
22214     */
22215
22216  }, {
22217    key: "listen",
22218    value: function listen(event, callback) {
22219      this.on(this.eventFormatter.format(event), callback);
22220      return this;
22221    }
22222    /**
22223     * Listen for all events on the channel instance.
22224     */
22225
22226  }, {
22227    key: "listenToAll",
22228    value: function listenToAll(callback) {
22229      var _this2 = this;
22230
22231      this.subscription.bind_global(function (event, data) {
22232        if (event.startsWith('pusher:')) {
22233          return;
22234        }
22235
22236        var namespace = _this2.options.namespace.replace(/\./g, '\\');
22237
22238        var formattedEvent = event.startsWith(namespace) ? event.substring(namespace.length + 1) : '.' + event;
22239        callback(formattedEvent, data);
22240      });
22241      return this;
22242    }
22243    /**
22244     * Stop listening for an event on the channel instance.
22245     */
22246
22247  }, {
22248    key: "stopListening",
22249    value: function stopListening(event, callback) {
22250      if (callback) {
22251        this.subscription.unbind(this.eventFormatter.format(event), callback);
22252      } else {
22253        this.subscription.unbind(this.eventFormatter.format(event));
22254      }
22255
22256      return this;
22257    }
22258    /**
22259     * Stop listening for all events on the channel instance.
22260     */
22261
22262  }, {
22263    key: "stopListeningToAll",
22264    value: function stopListeningToAll(callback) {
22265      if (callback) {
22266        this.subscription.unbind_global(callback);
22267      } else {
22268        this.subscription.unbind_global();
22269      }
22270
22271      return this;
22272    }
22273    /**
22274     * Register a callback to be called anytime a subscription succeeds.
22275     */
22276
22277  }, {
22278    key: "subscribed",
22279    value: function subscribed(callback) {
22280      this.on('pusher:subscription_succeeded', function () {
22281        callback();
22282      });
22283      return this;
22284    }
22285    /**
22286     * Register a callback to be called anytime a subscription error occurs.
22287     */
22288
22289  }, {
22290    key: "error",
22291    value: function error(callback) {
22292      this.on('pusher:subscription_error', function (status) {
22293        callback(status);
22294      });
22295      return this;
22296    }
22297    /**
22298     * Bind a channel to an event.
22299     */
22300
22301  }, {
22302    key: "on",
22303    value: function on(event, callback) {
22304      this.subscription.bind(event, callback);
22305      return this;
22306    }
22307  }]);
22308
22309  return PusherChannel;
22310}(Channel);
22311
22312/**
22313 * This class represents a Pusher private channel.
22314 */
22315
22316var PusherPrivateChannel = /*#__PURE__*/function (_PusherChannel) {
22317  _inherits(PusherPrivateChannel, _PusherChannel);
22318
22319  var _super = _createSuper(PusherPrivateChannel);
22320
22321  function PusherPrivateChannel() {
22322    _classCallCheck(this, PusherPrivateChannel);
22323
22324    return _super.apply(this, arguments);
22325  }
22326
22327  _createClass(PusherPrivateChannel, [{
22328    key: "whisper",
22329    value:
22330    /**
22331     * Send a whisper event to other clients in the channel.
22332     */
22333    function whisper(eventName, data) {
22334      this.pusher.channels.channels[this.name].trigger("client-".concat(eventName), data);
22335      return this;
22336    }
22337  }]);
22338
22339  return PusherPrivateChannel;
22340}(PusherChannel);
22341
22342/**
22343 * This class represents a Pusher private channel.
22344 */
22345
22346var PusherEncryptedPrivateChannel = /*#__PURE__*/function (_PusherChannel) {
22347  _inherits(PusherEncryptedPrivateChannel, _PusherChannel);
22348
22349  var _super = _createSuper(PusherEncryptedPrivateChannel);
22350
22351  function PusherEncryptedPrivateChannel() {
22352    _classCallCheck(this, PusherEncryptedPrivateChannel);
22353
22354    return _super.apply(this, arguments);
22355  }
22356
22357  _createClass(PusherEncryptedPrivateChannel, [{
22358    key: "whisper",
22359    value:
22360    /**
22361     * Send a whisper event to other clients in the channel.
22362     */
22363    function whisper(eventName, data) {
22364      this.pusher.channels.channels[this.name].trigger("client-".concat(eventName), data);
22365      return this;
22366    }
22367  }]);
22368
22369  return PusherEncryptedPrivateChannel;
22370}(PusherChannel);
22371
22372/**
22373 * This class represents a Pusher presence channel.
22374 */
22375
22376var PusherPresenceChannel = /*#__PURE__*/function (_PusherPrivateChannel) {
22377  _inherits(PusherPresenceChannel, _PusherPrivateChannel);
22378
22379  var _super = _createSuper(PusherPresenceChannel);
22380
22381  function PusherPresenceChannel() {
22382    _classCallCheck(this, PusherPresenceChannel);
22383
22384    return _super.apply(this, arguments);
22385  }
22386
22387  _createClass(PusherPresenceChannel, [{
22388    key: "here",
22389    value:
22390    /**
22391     * Register a callback to be called anytime the member list changes.
22392     */
22393    function here(callback) {
22394      this.on('pusher:subscription_succeeded', function (data) {
22395        callback(Object.keys(data.members).map(function (k) {
22396          return data.members[k];
22397        }));
22398      });
22399      return this;
22400    }
22401    /**
22402     * Listen for someone joining the channel.
22403     */
22404
22405  }, {
22406    key: "joining",
22407    value: function joining(callback) {
22408      this.on('pusher:member_added', function (member) {
22409        callback(member.info);
22410      });
22411      return this;
22412    }
22413    /**
22414     * Send a whisper event to other clients in the channel.
22415     */
22416
22417  }, {
22418    key: "whisper",
22419    value: function whisper(eventName, data) {
22420      this.pusher.channels.channels[this.name].trigger("client-".concat(eventName), data);
22421      return this;
22422    }
22423    /**
22424     * Listen for someone leaving the channel.
22425     */
22426
22427  }, {
22428    key: "leaving",
22429    value: function leaving(callback) {
22430      this.on('pusher:member_removed', function (member) {
22431        callback(member.info);
22432      });
22433      return this;
22434    }
22435  }]);
22436
22437  return PusherPresenceChannel;
22438}(PusherPrivateChannel);
22439
22440/**
22441 * This class represents a Socket.io channel.
22442 */
22443
22444var SocketIoChannel = /*#__PURE__*/function (_Channel) {
22445  _inherits(SocketIoChannel, _Channel);
22446
22447  var _super = _createSuper(SocketIoChannel);
22448
22449  /**
22450   * Create a new class instance.
22451   */
22452  function SocketIoChannel(socket, name, options) {
22453    var _this;
22454
22455    _classCallCheck(this, SocketIoChannel);
22456
22457    _this = _super.call(this);
22458    /**
22459     * The event callbacks applied to the socket.
22460     */
22461
22462    _this.events = {};
22463    /**
22464     * User supplied callbacks for events on this channel.
22465     */
22466
22467    _this.listeners = {};
22468    _this.name = name;
22469    _this.socket = socket;
22470    _this.options = options;
22471    _this.eventFormatter = new EventFormatter(_this.options.namespace);
22472
22473    _this.subscribe();
22474
22475    return _this;
22476  }
22477  /**
22478   * Subscribe to a Socket.io channel.
22479   */
22480
22481
22482  _createClass(SocketIoChannel, [{
22483    key: "subscribe",
22484    value: function subscribe() {
22485      this.socket.emit('subscribe', {
22486        channel: this.name,
22487        auth: this.options.auth || {}
22488      });
22489    }
22490    /**
22491     * Unsubscribe from channel and ubind event callbacks.
22492     */
22493
22494  }, {
22495    key: "unsubscribe",
22496    value: function unsubscribe() {
22497      this.unbind();
22498      this.socket.emit('unsubscribe', {
22499        channel: this.name,
22500        auth: this.options.auth || {}
22501      });
22502    }
22503    /**
22504     * Listen for an event on the channel instance.
22505     */
22506
22507  }, {
22508    key: "listen",
22509    value: function listen(event, callback) {
22510      this.on(this.eventFormatter.format(event), callback);
22511      return this;
22512    }
22513    /**
22514     * Stop listening for an event on the channel instance.
22515     */
22516
22517  }, {
22518    key: "stopListening",
22519    value: function stopListening(event, callback) {
22520      this.unbindEvent(this.eventFormatter.format(event), callback);
22521      return this;
22522    }
22523    /**
22524     * Register a callback to be called anytime a subscription succeeds.
22525     */
22526
22527  }, {
22528    key: "subscribed",
22529    value: function subscribed(callback) {
22530      this.on('connect', function (socket) {
22531        callback(socket);
22532      });
22533      return this;
22534    }
22535    /**
22536     * Register a callback to be called anytime an error occurs.
22537     */
22538
22539  }, {
22540    key: "error",
22541    value: function error(callback) {
22542      return this;
22543    }
22544    /**
22545     * Bind the channel's socket to an event and store the callback.
22546     */
22547
22548  }, {
22549    key: "on",
22550    value: function on(event, callback) {
22551      var _this2 = this;
22552
22553      this.listeners[event] = this.listeners[event] || [];
22554
22555      if (!this.events[event]) {
22556        this.events[event] = function (channel, data) {
22557          if (_this2.name === channel && _this2.listeners[event]) {
22558            _this2.listeners[event].forEach(function (cb) {
22559              return cb(data);
22560            });
22561          }
22562        };
22563
22564        this.socket.on(event, this.events[event]);
22565      }
22566
22567      this.listeners[event].push(callback);
22568      return this;
22569    }
22570    /**
22571     * Unbind the channel's socket from all stored event callbacks.
22572     */
22573
22574  }, {
22575    key: "unbind",
22576    value: function unbind() {
22577      var _this3 = this;
22578
22579      Object.keys(this.events).forEach(function (event) {
22580        _this3.unbindEvent(event);
22581      });
22582    }
22583    /**
22584     * Unbind the listeners for the given event.
22585     */
22586
22587  }, {
22588    key: "unbindEvent",
22589    value: function unbindEvent(event, callback) {
22590      this.listeners[event] = this.listeners[event] || [];
22591
22592      if (callback) {
22593        this.listeners[event] = this.listeners[event].filter(function (cb) {
22594          return cb !== callback;
22595        });
22596      }
22597
22598      if (!callback || this.listeners[event].length === 0) {
22599        if (this.events[event]) {
22600          this.socket.removeListener(event, this.events[event]);
22601          delete this.events[event];
22602        }
22603
22604        delete this.listeners[event];
22605      }
22606    }
22607  }]);
22608
22609  return SocketIoChannel;
22610}(Channel);
22611
22612/**
22613 * This class represents a Socket.io private channel.
22614 */
22615
22616var SocketIoPrivateChannel = /*#__PURE__*/function (_SocketIoChannel) {
22617  _inherits(SocketIoPrivateChannel, _SocketIoChannel);
22618
22619  var _super = _createSuper(SocketIoPrivateChannel);
22620
22621  function SocketIoPrivateChannel() {
22622    _classCallCheck(this, SocketIoPrivateChannel);
22623
22624    return _super.apply(this, arguments);
22625  }
22626
22627  _createClass(SocketIoPrivateChannel, [{
22628    key: "whisper",
22629    value:
22630    /**
22631     * Send a whisper event to other clients in the channel.
22632     */
22633    function whisper(eventName, data) {
22634      this.socket.emit('client event', {
22635        channel: this.name,
22636        event: "client-".concat(eventName),
22637        data: data
22638      });
22639      return this;
22640    }
22641  }]);
22642
22643  return SocketIoPrivateChannel;
22644}(SocketIoChannel);
22645
22646/**
22647 * This class represents a Socket.io presence channel.
22648 */
22649
22650var SocketIoPresenceChannel = /*#__PURE__*/function (_SocketIoPrivateChann) {
22651  _inherits(SocketIoPresenceChannel, _SocketIoPrivateChann);
22652
22653  var _super = _createSuper(SocketIoPresenceChannel);
22654
22655  function SocketIoPresenceChannel() {
22656    _classCallCheck(this, SocketIoPresenceChannel);
22657
22658    return _super.apply(this, arguments);
22659  }
22660
22661  _createClass(SocketIoPresenceChannel, [{
22662    key: "here",
22663    value:
22664    /**
22665     * Register a callback to be called anytime the member list changes.
22666     */
22667    function here(callback) {
22668      this.on('presence:subscribed', function (members) {
22669        callback(members.map(function (m) {
22670          return m.user_info;
22671        }));
22672      });
22673      return this;
22674    }
22675    /**
22676     * Listen for someone joining the channel.
22677     */
22678
22679  }, {
22680    key: "joining",
22681    value: function joining(callback) {
22682      this.on('presence:joining', function (member) {
22683        return callback(member.user_info);
22684      });
22685      return this;
22686    }
22687    /**
22688     * Send a whisper event to other clients in the channel.
22689     */
22690
22691  }, {
22692    key: "whisper",
22693    value: function whisper(eventName, data) {
22694      this.socket.emit('client event', {
22695        channel: this.name,
22696        event: "client-".concat(eventName),
22697        data: data
22698      });
22699      return this;
22700    }
22701    /**
22702     * Listen for someone leaving the channel.
22703     */
22704
22705  }, {
22706    key: "leaving",
22707    value: function leaving(callback) {
22708      this.on('presence:leaving', function (member) {
22709        return callback(member.user_info);
22710      });
22711      return this;
22712    }
22713  }]);
22714
22715  return SocketIoPresenceChannel;
22716}(SocketIoPrivateChannel);
22717
22718/**
22719 * This class represents a null channel.
22720 */
22721
22722var NullChannel = /*#__PURE__*/function (_Channel) {
22723  _inherits(NullChannel, _Channel);
22724
22725  var _super = _createSuper(NullChannel);
22726
22727  function NullChannel() {
22728    _classCallCheck(this, NullChannel);
22729
22730    return _super.apply(this, arguments);
22731  }
22732
22733  _createClass(NullChannel, [{
22734    key: "subscribe",
22735    value:
22736    /**
22737     * Subscribe to a channel.
22738     */
22739    function subscribe() {//
22740    }
22741    /**
22742     * Unsubscribe from a channel.
22743     */
22744
22745  }, {
22746    key: "unsubscribe",
22747    value: function unsubscribe() {//
22748    }
22749    /**
22750     * Listen for an event on the channel instance.
22751     */
22752
22753  }, {
22754    key: "listen",
22755    value: function listen(event, callback) {
22756      return this;
22757    }
22758    /**
22759     * Listen for all events on the channel instance.
22760     */
22761
22762  }, {
22763    key: "listenToAll",
22764    value: function listenToAll(callback) {
22765      return this;
22766    }
22767    /**
22768     * Stop listening for an event on the channel instance.
22769     */
22770
22771  }, {
22772    key: "stopListening",
22773    value: function stopListening(event, callback) {
22774      return this;
22775    }
22776    /**
22777     * Register a callback to be called anytime a subscription succeeds.
22778     */
22779
22780  }, {
22781    key: "subscribed",
22782    value: function subscribed(callback) {
22783      return this;
22784    }
22785    /**
22786     * Register a callback to be called anytime an error occurs.
22787     */
22788
22789  }, {
22790    key: "error",
22791    value: function error(callback) {
22792      return this;
22793    }
22794    /**
22795     * Bind a channel to an event.
22796     */
22797
22798  }, {
22799    key: "on",
22800    value: function on(event, callback) {
22801      return this;
22802    }
22803  }]);
22804
22805  return NullChannel;
22806}(Channel);
22807
22808/**
22809 * This class represents a null private channel.
22810 */
22811
22812var NullPrivateChannel = /*#__PURE__*/function (_NullChannel) {
22813  _inherits(NullPrivateChannel, _NullChannel);
22814
22815  var _super = _createSuper(NullPrivateChannel);
22816
22817  function NullPrivateChannel() {
22818    _classCallCheck(this, NullPrivateChannel);
22819
22820    return _super.apply(this, arguments);
22821  }
22822
22823  _createClass(NullPrivateChannel, [{
22824    key: "whisper",
22825    value:
22826    /**
22827     * Send a whisper event to other clients in the channel.
22828     */
22829    function whisper(eventName, data) {
22830      return this;
22831    }
22832  }]);
22833
22834  return NullPrivateChannel;
22835}(NullChannel);
22836
22837/**
22838 * This class represents a null private channel.
22839 */
22840
22841var NullEncryptedPrivateChannel = /*#__PURE__*/function (_NullChannel) {
22842  _inherits(NullEncryptedPrivateChannel, _NullChannel);
22843
22844  var _super = _createSuper(NullEncryptedPrivateChannel);
22845
22846  function NullEncryptedPrivateChannel() {
22847    _classCallCheck(this, NullEncryptedPrivateChannel);
22848
22849    return _super.apply(this, arguments);
22850  }
22851
22852  _createClass(NullEncryptedPrivateChannel, [{
22853    key: "whisper",
22854    value:
22855    /**
22856     * Send a whisper event to other clients in the channel.
22857     */
22858    function whisper(eventName, data) {
22859      return this;
22860    }
22861  }]);
22862
22863  return NullEncryptedPrivateChannel;
22864}(NullChannel);
22865
22866/**
22867 * This class represents a null presence channel.
22868 */
22869
22870var NullPresenceChannel = /*#__PURE__*/function (_NullPrivateChannel) {
22871  _inherits(NullPresenceChannel, _NullPrivateChannel);
22872
22873  var _super = _createSuper(NullPresenceChannel);
22874
22875  function NullPresenceChannel() {
22876    _classCallCheck(this, NullPresenceChannel);
22877
22878    return _super.apply(this, arguments);
22879  }
22880
22881  _createClass(NullPresenceChannel, [{
22882    key: "here",
22883    value:
22884    /**
22885     * Register a callback to be called anytime the member list changes.
22886     */
22887    function here(callback) {
22888      return this;
22889    }
22890    /**
22891     * Listen for someone joining the channel.
22892     */
22893
22894  }, {
22895    key: "joining",
22896    value: function joining(callback) {
22897      return this;
22898    }
22899    /**
22900     * Send a whisper event to other clients in the channel.
22901     */
22902
22903  }, {
22904    key: "whisper",
22905    value: function whisper(eventName, data) {
22906      return this;
22907    }
22908    /**
22909     * Listen for someone leaving the channel.
22910     */
22911
22912  }, {
22913    key: "leaving",
22914    value: function leaving(callback) {
22915      return this;
22916    }
22917  }]);
22918
22919  return NullPresenceChannel;
22920}(NullPrivateChannel);
22921
22922var Connector = /*#__PURE__*/function () {
22923  /**
22924   * Create a new class instance.
22925   */
22926  function Connector(options) {
22927    _classCallCheck(this, Connector);
22928
22929    /**
22930     * Default connector options.
22931     */
22932    this._defaultOptions = {
22933      auth: {
22934        headers: {}
22935      },
22936      authEndpoint: '/broadcasting/auth',
22937      userAuthentication: {
22938        endpoint: '/broadcasting/user-auth',
22939        headers: {}
22940      },
22941      broadcaster: 'pusher',
22942      csrfToken: null,
22943      bearerToken: null,
22944      host: null,
22945      key: null,
22946      namespace: 'App.Events'
22947    };
22948    this.setOptions(options);
22949    this.connect();
22950  }
22951  /**
22952   * Merge the custom options with the defaults.
22953   */
22954
22955
22956  _createClass(Connector, [{
22957    key: "setOptions",
22958    value: function setOptions(options) {
22959      this.options = _extends(this._defaultOptions, options);
22960      var token = this.csrfToken();
22961
22962      if (token) {
22963        this.options.auth.headers['X-CSRF-TOKEN'] = token;
22964        this.options.userAuthentication.headers['X-CSRF-TOKEN'] = token;
22965      }
22966
22967      token = this.options.bearerToken;
22968
22969      if (token) {
22970        this.options.auth.headers['Authorization'] = 'Bearer ' + token;
22971        this.options.userAuthentication.headers['Authorization'] = 'Bearer ' + token;
22972      }
22973
22974      return options;
22975    }
22976    /**
22977     * Extract the CSRF token from the page.
22978     */
22979
22980  }, {
22981    key: "csrfToken",
22982    value: function csrfToken() {
22983      var selector;
22984
22985      if (typeof window !== 'undefined' && window['Laravel'] && window['Laravel'].csrfToken) {
22986        return window['Laravel'].csrfToken;
22987      } else if (this.options.csrfToken) {
22988        return this.options.csrfToken;
22989      } else if (typeof document !== 'undefined' && typeof document.querySelector === 'function' && (selector = document.querySelector('meta[name="csrf-token"]'))) {
22990        return selector.getAttribute('content');
22991      }
22992
22993      return null;
22994    }
22995  }]);
22996
22997  return Connector;
22998}();
22999
23000/**
23001 * This class creates a connector to Pusher.
23002 */
23003
23004var PusherConnector = /*#__PURE__*/function (_Connector) {
23005  _inherits(PusherConnector, _Connector);
23006
23007  var _super = _createSuper(PusherConnector);
23008
23009  function PusherConnector() {
23010    var _this;
23011
23012    _classCallCheck(this, PusherConnector);
23013
23014    _this = _super.apply(this, arguments);
23015    /**
23016     * All of the subscribed channel names.
23017     */
23018
23019    _this.channels = {};
23020    return _this;
23021  }
23022  /**
23023   * Create a fresh Pusher connection.
23024   */
23025
23026
23027  _createClass(PusherConnector, [{
23028    key: "connect",
23029    value: function connect() {
23030      if (typeof this.options.client !== 'undefined') {
23031        this.pusher = this.options.client;
23032      } else if (this.options.Pusher) {
23033        this.pusher = new this.options.Pusher(this.options.key, this.options);
23034      } else {
23035        this.pusher = new Pusher(this.options.key, this.options);
23036      }
23037    }
23038    /**
23039     * Sign in the user via Pusher user authentication (https://pusher.com/docs/channels/using_channels/user-authentication/).
23040     */
23041
23042  }, {
23043    key: "signin",
23044    value: function signin() {
23045      this.pusher.signin();
23046    }
23047    /**
23048     * Listen for an event on a channel instance.
23049     */
23050
23051  }, {
23052    key: "listen",
23053    value: function listen(name, event, callback) {
23054      return this.channel(name).listen(event, callback);
23055    }
23056    /**
23057     * Get a channel instance by name.
23058     */
23059
23060  }, {
23061    key: "channel",
23062    value: function channel(name) {
23063      if (!this.channels[name]) {
23064        this.channels[name] = new PusherChannel(this.pusher, name, this.options);
23065      }
23066
23067      return this.channels[name];
23068    }
23069    /**
23070     * Get a private channel instance by name.
23071     */
23072
23073  }, {
23074    key: "privateChannel",
23075    value: function privateChannel(name) {
23076      if (!this.channels['private-' + name]) {
23077        this.channels['private-' + name] = new PusherPrivateChannel(this.pusher, 'private-' + name, this.options);
23078      }
23079
23080      return this.channels['private-' + name];
23081    }
23082    /**
23083     * Get a private encrypted channel instance by name.
23084     */
23085
23086  }, {
23087    key: "encryptedPrivateChannel",
23088    value: function encryptedPrivateChannel(name) {
23089      if (!this.channels['private-encrypted-' + name]) {
23090        this.channels['private-encrypted-' + name] = new PusherEncryptedPrivateChannel(this.pusher, 'private-encrypted-' + name, this.options);
23091      }
23092
23093      return this.channels['private-encrypted-' + name];
23094    }
23095    /**
23096     * Get a presence channel instance by name.
23097     */
23098
23099  }, {
23100    key: "presenceChannel",
23101    value: function presenceChannel(name) {
23102      if (!this.channels['presence-' + name]) {
23103        this.channels['presence-' + name] = new PusherPresenceChannel(this.pusher, 'presence-' + name, this.options);
23104      }
23105
23106      return this.channels['presence-' + name];
23107    }
23108    /**
23109     * Leave the given channel, as well as its private and presence variants.
23110     */
23111
23112  }, {
23113    key: "leave",
23114    value: function leave(name) {
23115      var _this2 = this;
23116
23117      var channels = [name, 'private-' + name, 'private-encrypted-' + name, 'presence-' + name];
23118      channels.forEach(function (name, index) {
23119        _this2.leaveChannel(name);
23120      });
23121    }
23122    /**
23123     * Leave the given channel.
23124     */
23125
23126  }, {
23127    key: "leaveChannel",
23128    value: function leaveChannel(name) {
23129      if (this.channels[name]) {
23130        this.channels[name].unsubscribe();
23131        delete this.channels[name];
23132      }
23133    }
23134    /**
23135     * Get the socket ID for the connection.
23136     */
23137
23138  }, {
23139    key: "socketId",
23140    value: function socketId() {
23141      return this.pusher.connection.socket_id;
23142    }
23143    /**
23144     * Disconnect Pusher connection.
23145     */
23146
23147  }, {
23148    key: "disconnect",
23149    value: function disconnect() {
23150      this.pusher.disconnect();
23151    }
23152  }]);
23153
23154  return PusherConnector;
23155}(Connector);
23156
23157/**
23158 * This class creates a connnector to a Socket.io server.
23159 */
23160
23161var SocketIoConnector = /*#__PURE__*/function (_Connector) {
23162  _inherits(SocketIoConnector, _Connector);
23163
23164  var _super = _createSuper(SocketIoConnector);
23165
23166  function SocketIoConnector() {
23167    var _this;
23168
23169    _classCallCheck(this, SocketIoConnector);
23170
23171    _this = _super.apply(this, arguments);
23172    /**
23173     * All of the subscribed channel names.
23174     */
23175
23176    _this.channels = {};
23177    return _this;
23178  }
23179  /**
23180   * Create a fresh Socket.io connection.
23181   */
23182
23183
23184  _createClass(SocketIoConnector, [{
23185    key: "connect",
23186    value: function connect() {
23187      var _this2 = this;
23188
23189      var io = this.getSocketIO();
23190      this.socket = io(this.options.host, this.options);
23191      this.socket.on('reconnect', function () {
23192        Object.values(_this2.channels).forEach(function (channel) {
23193          channel.subscribe();
23194        });
23195      });
23196      return this.socket;
23197    }
23198    /**
23199     * Get socket.io module from global scope or options.
23200     */
23201
23202  }, {
23203    key: "getSocketIO",
23204    value: function getSocketIO() {
23205      if (typeof this.options.client !== 'undefined') {
23206        return this.options.client;
23207      }
23208
23209      if (typeof io !== 'undefined') {
23210        return io;
23211      }
23212
23213      throw new Error('Socket.io client not found. Should be globally available or passed via options.client');
23214    }
23215    /**
23216     * Listen for an event on a channel instance.
23217     */
23218
23219  }, {
23220    key: "listen",
23221    value: function listen(name, event, callback) {
23222      return this.channel(name).listen(event, callback);
23223    }
23224    /**
23225     * Get a channel instance by name.
23226     */
23227
23228  }, {
23229    key: "channel",
23230    value: function channel(name) {
23231      if (!this.channels[name]) {
23232        this.channels[name] = new SocketIoChannel(this.socket, name, this.options);
23233      }
23234
23235      return this.channels[name];
23236    }
23237    /**
23238     * Get a private channel instance by name.
23239     */
23240
23241  }, {
23242    key: "privateChannel",
23243    value: function privateChannel(name) {
23244      if (!this.channels['private-' + name]) {
23245        this.channels['private-' + name] = new SocketIoPrivateChannel(this.socket, 'private-' + name, this.options);
23246      }
23247
23248      return this.channels['private-' + name];
23249    }
23250    /**
23251     * Get a presence channel instance by name.
23252     */
23253
23254  }, {
23255    key: "presenceChannel",
23256    value: function presenceChannel(name) {
23257      if (!this.channels['presence-' + name]) {
23258        this.channels['presence-' + name] = new SocketIoPresenceChannel(this.socket, 'presence-' + name, this.options);
23259      }
23260
23261      return this.channels['presence-' + name];
23262    }
23263    /**
23264     * Leave the given channel, as well as its private and presence variants.
23265     */
23266
23267  }, {
23268    key: "leave",
23269    value: function leave(name) {
23270      var _this3 = this;
23271
23272      var channels = [name, 'private-' + name, 'presence-' + name];
23273      channels.forEach(function (name) {
23274        _this3.leaveChannel(name);
23275      });
23276    }
23277    /**
23278     * Leave the given channel.
23279     */
23280
23281  }, {
23282    key: "leaveChannel",
23283    value: function leaveChannel(name) {
23284      if (this.channels[name]) {
23285        this.channels[name].unsubscribe();
23286        delete this.channels[name];
23287      }
23288    }
23289    /**
23290     * Get the socket ID for the connection.
23291     */
23292
23293  }, {
23294    key: "socketId",
23295    value: function socketId() {
23296      return this.socket.id;
23297    }
23298    /**
23299     * Disconnect Socketio connection.
23300     */
23301
23302  }, {
23303    key: "disconnect",
23304    value: function disconnect() {
23305      this.socket.disconnect();
23306    }
23307  }]);
23308
23309  return SocketIoConnector;
23310}(Connector);
23311
23312/**
23313 * This class creates a null connector.
23314 */
23315
23316var NullConnector = /*#__PURE__*/function (_Connector) {
23317  _inherits(NullConnector, _Connector);
23318
23319  var _super = _createSuper(NullConnector);
23320
23321  function NullConnector() {
23322    var _this;
23323
23324    _classCallCheck(this, NullConnector);
23325
23326    _this = _super.apply(this, arguments);
23327    /**
23328     * All of the subscribed channel names.
23329     */
23330
23331    _this.channels = {};
23332    return _this;
23333  }
23334  /**
23335   * Create a fresh connection.
23336   */
23337
23338
23339  _createClass(NullConnector, [{
23340    key: "connect",
23341    value: function connect() {//
23342    }
23343    /**
23344     * Listen for an event on a channel instance.
23345     */
23346
23347  }, {
23348    key: "listen",
23349    value: function listen(name, event, callback) {
23350      return new NullChannel();
23351    }
23352    /**
23353     * Get a channel instance by name.
23354     */
23355
23356  }, {
23357    key: "channel",
23358    value: function channel(name) {
23359      return new NullChannel();
23360    }
23361    /**
23362     * Get a private channel instance by name.
23363     */
23364
23365  }, {
23366    key: "privateChannel",
23367    value: function privateChannel(name) {
23368      return new NullPrivateChannel();
23369    }
23370    /**
23371     * Get a private encrypted channel instance by name.
23372     */
23373
23374  }, {
23375    key: "encryptedPrivateChannel",
23376    value: function encryptedPrivateChannel(name) {
23377      return new NullEncryptedPrivateChannel();
23378    }
23379    /**
23380     * Get a presence channel instance by name.
23381     */
23382
23383  }, {
23384    key: "presenceChannel",
23385    value: function presenceChannel(name) {
23386      return new NullPresenceChannel();
23387    }
23388    /**
23389     * Leave the given channel, as well as its private and presence variants.
23390     */
23391
23392  }, {
23393    key: "leave",
23394    value: function leave(name) {//
23395    }
23396    /**
23397     * Leave the given channel.
23398     */
23399
23400  }, {
23401    key: "leaveChannel",
23402    value: function leaveChannel(name) {//
23403    }
23404    /**
23405     * Get the socket ID for the connection.
23406     */
23407
23408  }, {
23409    key: "socketId",
23410    value: function socketId() {
23411      return 'fake-socket-id';
23412    }
23413    /**
23414     * Disconnect the connection.
23415     */
23416
23417  }, {
23418    key: "disconnect",
23419    value: function disconnect() {//
23420    }
23421  }]);
23422
23423  return NullConnector;
23424}(Connector);
23425
23426/**
23427 * This class is the primary API for interacting with broadcasting.
23428 */
23429
23430var Echo = /*#__PURE__*/function () {
23431  /**
23432   * Create a new class instance.
23433   */
23434  function Echo(options) {
23435    _classCallCheck(this, Echo);
23436
23437    this.options = options;
23438    this.connect();
23439
23440    if (!this.options.withoutInterceptors) {
23441      this.registerInterceptors();
23442    }
23443  }
23444  /**
23445   * Get a channel instance by name.
23446   */
23447
23448
23449  _createClass(Echo, [{
23450    key: "channel",
23451    value: function channel(_channel) {
23452      return this.connector.channel(_channel);
23453    }
23454    /**
23455     * Create a new connection.
23456     */
23457
23458  }, {
23459    key: "connect",
23460    value: function connect() {
23461      if (this.options.broadcaster == 'reverb') {
23462        this.connector = new PusherConnector(_extends(_extends({}, this.options), {
23463          cluster: ''
23464        }));
23465      } else if (this.options.broadcaster == 'pusher') {
23466        this.connector = new PusherConnector(this.options);
23467      } else if (this.options.broadcaster == 'socket.io') {
23468        this.connector = new SocketIoConnector(this.options);
23469      } else if (this.options.broadcaster == 'null') {
23470        this.connector = new NullConnector(this.options);
23471      } else if (typeof this.options.broadcaster == 'function' && isConstructor(this.options.broadcaster)) {
23472        this.connector = new this.options.broadcaster(this.options);
23473      } else {
23474        throw new Error("Broadcaster ".concat(_typeof(this.options.broadcaster), " ").concat(this.options.broadcaster, " is not supported."));
23475      }
23476    }
23477    /**
23478     * Disconnect from the Echo server.
23479     */
23480
23481  }, {
23482    key: "disconnect",
23483    value: function disconnect() {
23484      this.connector.disconnect();
23485    }
23486    /**
23487     * Get a presence channel instance by name.
23488     */
23489
23490  }, {
23491    key: "join",
23492    value: function join(channel) {
23493      return this.connector.presenceChannel(channel);
23494    }
23495    /**
23496     * Leave the given channel, as well as its private and presence variants.
23497     */
23498
23499  }, {
23500    key: "leave",
23501    value: function leave(channel) {
23502      this.connector.leave(channel);
23503    }
23504    /**
23505     * Leave the given channel.
23506     */
23507
23508  }, {
23509    key: "leaveChannel",
23510    value: function leaveChannel(channel) {
23511      this.connector.leaveChannel(channel);
23512    }
23513    /**
23514     * Leave all channels.
23515     */
23516
23517  }, {
23518    key: "leaveAllChannels",
23519    value: function leaveAllChannels() {
23520      for (var channel in this.connector.channels) {
23521        this.leaveChannel(channel);
23522      }
23523    }
23524    /**
23525     * Listen for an event on a channel instance.
23526     */
23527
23528  }, {
23529    key: "listen",
23530    value: function listen(channel, event, callback) {
23531      return this.connector.listen(channel, event, callback);
23532    }
23533    /**
23534     * Get a private channel instance by name.
23535     */
23536
23537  }, {
23538    key: "private",
23539    value: function _private(channel) {
23540      return this.connector.privateChannel(channel);
23541    }
23542    /**
23543     * Get a private encrypted channel instance by name.
23544     */
23545
23546  }, {
23547    key: "encryptedPrivate",
23548    value: function encryptedPrivate(channel) {
23549      if (this.connector instanceof SocketIoConnector) {
23550        throw new Error("Broadcaster ".concat(_typeof(this.options.broadcaster), " ").concat(this.options.broadcaster, " does not support encrypted private channels."));
23551      }
23552
23553      return this.connector.encryptedPrivateChannel(channel);
23554    }
23555    /**
23556     * Get the Socket ID for the connection.
23557     */
23558
23559  }, {
23560    key: "socketId",
23561    value: function socketId() {
23562      return this.connector.socketId();
23563    }
23564    /**
23565     * Register 3rd party request interceptiors. These are used to automatically
23566     * send a connections socket id to a Laravel app with a X-Socket-Id header.
23567     */
23568
23569  }, {
23570    key: "registerInterceptors",
23571    value: function registerInterceptors() {
23572      if (typeof Vue === 'function' && Vue.http) {
23573        this.registerVueRequestInterceptor();
23574      }
23575
23576      if (typeof axios === 'function') {
23577        this.registerAxiosRequestInterceptor();
23578      }
23579
23580      if (typeof jQuery === 'function') {
23581        this.registerjQueryAjaxSetup();
23582      }
23583
23584      if ((typeof Turbo === "undefined" ? "undefined" : _typeof(Turbo)) === 'object') {
23585        this.registerTurboRequestInterceptor();
23586      }
23587    }
23588    /**
23589     * Register a Vue HTTP interceptor to add the X-Socket-ID header.
23590     */
23591
23592  }, {
23593    key: "registerVueRequestInterceptor",
23594    value: function registerVueRequestInterceptor() {
23595      var _this = this;
23596
23597      Vue.http.interceptors.push(function (request, next) {
23598        if (_this.socketId()) {
23599          request.headers.set('X-Socket-ID', _this.socketId());
23600        }
23601
23602        next();
23603      });
23604    }
23605    /**
23606     * Register an Axios HTTP interceptor to add the X-Socket-ID header.
23607     */
23608
23609  }, {
23610    key: "registerAxiosRequestInterceptor",
23611    value: function registerAxiosRequestInterceptor() {
23612      var _this2 = this;
23613
23614      axios.interceptors.request.use(function (config) {
23615        if (_this2.socketId()) {
23616          config.headers['X-Socket-Id'] = _this2.socketId();
23617        }
23618
23619        return config;
23620      });
23621    }
23622    /**
23623     * Register jQuery AjaxPrefilter to add the X-Socket-ID header.
23624     */
23625
23626  }, {
23627    key: "registerjQueryAjaxSetup",
23628    value: function registerjQueryAjaxSetup() {
23629      var _this3 = this;
23630
23631      if (typeof jQuery.ajax != 'undefined') {
23632        jQuery.ajaxPrefilter(function (options, originalOptions, xhr) {
23633          if (_this3.socketId()) {
23634            xhr.setRequestHeader('X-Socket-Id', _this3.socketId());
23635          }
23636        });
23637      }
23638    }
23639    /**
23640     * Register the Turbo Request interceptor to add the X-Socket-ID header.
23641     */
23642
23643  }, {
23644    key: "registerTurboRequestInterceptor",
23645    value: function registerTurboRequestInterceptor() {
23646      var _this4 = this;
23647
23648      document.addEventListener('turbo:before-fetch-request', function (event) {
23649        event.detail.fetchOptions.headers['X-Socket-Id'] = _this4.socketId();
23650      });
23651    }
23652  }]);
23653
23654  return Echo;
23655}();
23656
23657
23658
23659
23660/***/ }),
23661
vendor: 544,380 bytes, lines 23662-40873
23662/***/ "./node_modules/lodash/lodash.js":
23663/*!***************************************!*\
23664  !*** ./node_modules/lodash/lodash.js ***!
23665  \***************************************/
23666/***/ (function(module, exports, __webpack_require__) {
23667
23668/* module decorator */ module = __webpack_require__.nmd(module);
23669var __WEBPACK_AMD_DEFINE_RESULT__;/**
23670 * @license
23671 * Lodash <https://lodash.com/>
23672 * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
23673 * Released under MIT license <https://lodash.com/license>
23674 * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
23675 * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
23676 */
23677;(function() {
23678
23679  /** Used as a safe reference for `undefined` in pre-ES5 environments. */
23680  var undefined;
23681
23682  /** Used as the semantic version number. */
23683  var VERSION = '4.17.21';
23684
23685  /** Used as the size to enable large array optimizations. */
23686  var LARGE_ARRAY_SIZE = 200;
23687
23688  /** Error message constants. */
23689  var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',
23690      FUNC_ERROR_TEXT = 'Expected a function',
23691      INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';
23692
23693  /** Used to stand-in for `undefined` hash values. */
23694  var HASH_UNDEFINED = '__lodash_hash_undefined__';
23695
23696  /** Used as the maximum memoize cache size. */
23697  var MAX_MEMOIZE_SIZE = 500;
23698
23699  /** Used as the internal argument placeholder. */
23700  var PLACEHOLDER = '__lodash_placeholder__';
23701
23702  /** Used to compose bitmasks for cloning. */
23703  var CLONE_DEEP_FLAG = 1,
23704      CLONE_FLAT_FLAG = 2,
23705      CLONE_SYMBOLS_FLAG = 4;
23706
23707  /** Used to compose bitmasks for value comparisons. */
23708  var COMPARE_PARTIAL_FLAG = 1,
23709      COMPARE_UNORDERED_FLAG = 2;
23710
23711  /** Used to compose bitmasks for function metadata. */
23712  var WRAP_BIND_FLAG = 1,
23713      WRAP_BIND_KEY_FLAG = 2,
23714      WRAP_CURRY_BOUND_FLAG = 4,
23715      WRAP_CURRY_FLAG = 8,
23716      WRAP_CURRY_RIGHT_FLAG = 16,
23717      WRAP_PARTIAL_FLAG = 32,
23718      WRAP_PARTIAL_RIGHT_FLAG = 64,
23719      WRAP_ARY_FLAG = 128,
23720      WRAP_REARG_FLAG = 256,
23721      WRAP_FLIP_FLAG = 512;
23722
23723  /** Used as default options for `_.truncate`. */
23724  var DEFAULT_TRUNC_LENGTH = 30,
23725      DEFAULT_TRUNC_OMISSION = '...';
23726
23727  /** Used to detect hot functions by number of calls within a span of milliseconds. */
23728  var HOT_COUNT = 800,
23729      HOT_SPAN = 16;
23730
23731  /** Used to indicate the type of lazy iteratees. */
23732  var LAZY_FILTER_FLAG = 1,
23733      LAZY_MAP_FLAG = 2,
23734      LAZY_WHILE_FLAG = 3;
23735
23736  /** Used as references for various `Number` constants. */
23737  var INFINITY = 1 / 0,
23738      MAX_SAFE_INTEGER = 9007199254740991,
23739      MAX_INTEGER = 1.7976931348623157e+308,
23740      NAN = 0 / 0;
23741
23742  /** Used as references for the maximum length and index of an array. */
23743  var MAX_ARRAY_LENGTH = 4294967295,
23744      MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,
23745      HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;
23746
23747  /** Used to associate wrap methods with their bit flags. */
23748  var wrapFlags = [
23749    ['ary', WRAP_ARY_FLAG],
23750    ['bind', WRAP_BIND_FLAG],
23751    ['bindKey', WRAP_BIND_KEY_FLAG],
23752    ['curry', WRAP_CURRY_FLAG],
23753    ['curryRight', WRAP_CURRY_RIGHT_FLAG],
23754    ['flip', WRAP_FLIP_FLAG],
23755    ['partial', WRAP_PARTIAL_FLAG],
23756    ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],
23757    ['rearg', WRAP_REARG_FLAG]
23758  ];
23759
23760  /** `Object#toString` result references. */
23761  var argsTag = '[object Arguments]',
23762      arrayTag = '[object Array]',
23763      asyncTag = '[object AsyncFunction]',
23764      boolTag = '[object Boolean]',
23765      dateTag = '[object Date]',
23766      domExcTag = '[object DOMException]',
23767      errorTag = '[object Error]',
23768      funcTag = '[object Function]',
23769      genTag = '[object GeneratorFunction]',
23770      mapTag = '[object Map]',
23771      numberTag = '[object Number]',
23772      nullTag = '[object Null]',
23773      objectTag = '[object Object]',
23774      promiseTag = '[object Promise]',
23775      proxyTag = '[object Proxy]',
23776      regexpTag = '[object RegExp]',
23777      setTag = '[object Set]',
23778      stringTag = '[object String]',
23779      symbolTag = '[object Symbol]',
23780      undefinedTag = '[object Undefined]',
23781      weakMapTag = '[object WeakMap]',
23782      weakSetTag = '[object WeakSet]';
23783
23784  var arrayBufferTag = '[object ArrayBuffer]',
23785      dataViewTag = '[object DataView]',
23786      float32Tag = '[object Float32Array]',
23787      float64Tag = '[object Float64Array]',
23788      int8Tag = '[object Int8Array]',
23789      int16Tag = '[object Int16Array]',
23790      int32Tag = '[object Int32Array]',
23791      uint8Tag = '[object Uint8Array]',
23792      uint8ClampedTag = '[object Uint8ClampedArray]',
23793      uint16Tag = '[object Uint16Array]',
23794      uint32Tag = '[object Uint32Array]';
23795
23796  /** Used to match empty string literals in compiled template source. */
23797  var reEmptyStringLeading = /\b__p \+= '';/g,
23798      reEmptyStringMiddle = /\b(__p \+=) '' \+/g,
23799      reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g;
23800
23801  /** Used to match HTML entities and HTML characters. */
23802  var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,
23803      reUnescapedHtml = /[&<>"']/g,
23804      reHasEscapedHtml = RegExp(reEscapedHtml.source),
23805      reHasUnescapedHtml = RegExp(reUnescapedHtml.source);
23806
23807  /** Used to match template delimiters. */
23808  var reEscape = /<%-([\s\S]+?)%>/g,
23809      reEvaluate = /<%([\s\S]+?)%>/g,
23810      reInterpolate = /<%=([\s\S]+?)%>/g;
23811
23812  /** Used to match property names within property paths. */
23813  var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
23814      reIsPlainProp = /^\w*$/,
23815      rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
23816
23817  /**
23818   * Used to match `RegExp`
23819   * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
23820   */
23821  var reRegExpChar = /[\\^$.*+?()[\]{}|]/g,
23822      reHasRegExpChar = RegExp(reRegExpChar.source);
23823
23824  /** Used to match leading whitespace. */
23825  var reTrimStart = /^\s+/;
23826
23827  /** Used to match a single whitespace character. */
23828  var reWhitespace = /\s/;
23829
23830  /** Used to match wrap detail comments. */
23831  var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,
23832      reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/,
23833      reSplitDetails = /,? & /;
23834
23835  /** Used to match words composed of alphanumeric characters. */
23836  var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;
23837
23838  /**
23839   * Used to validate the `validate` option in `_.template` variable.
23840   *
23841   * Forbids characters which could potentially change the meaning of the function argument definition:
23842   * - "()," (modification of function parameters)
23843   * - "=" (default value)
23844   * - "[]{}" (destructuring of function parameters)
23845   * - "/" (beginning of a comment)
23846   * - whitespace
23847   */
23848  var reForbiddenIdentifierChars = /[()=,{}\[\]\/\s]/;
23849
23850  /** Used to match backslashes in property paths. */
23851  var reEscapeChar = /\\(\\)?/g;
23852
23853  /**
23854   * Used to match
23855   * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).
23856   */
23857  var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g;
23858
23859  /** Used to match `RegExp` flags from their coerced string values. */
23860  var reFlags = /\w*$/;
23861
23862  /** Used to detect bad signed hexadecimal string values. */
23863  var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
23864
23865  /** Used to detect binary string values. */
23866  var reIsBinary = /^0b[01]+$/i;
23867
23868  /** Used to detect host constructors (Safari). */
23869  var reIsHostCtor = /^\[object .+?Constructor\]$/;
23870
23871  /** Used to detect octal string values. */
23872  var reIsOctal = /^0o[0-7]+$/i;
23873
23874  /** Used to detect unsigned integer values. */
23875  var reIsUint = /^(?:0|[1-9]\d*)$/;
23876
23877  /** Used to match Latin Unicode letters (excluding mathematical operators). */
23878  var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g;
23879
23880  /** Used to ensure capturing order of template delimiters. */
23881  var reNoMatch = /($^)/;
23882
23883  /** Used to match unescaped characters in compiled string literals. */
23884  var reUnescapedString = /['\n\r\u2028\u2029\\]/g;
23885
23886  /** Used to compose unicode character classes. */
23887  var rsAstralRange = '\\ud800-\\udfff',
23888      rsComboMarksRange = '\\u0300-\\u036f',
23889      reComboHalfMarksRange = '\\ufe20-\\ufe2f',
23890      rsComboSymbolsRange = '\\u20d0-\\u20ff',
23891      rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
23892      rsDingbatRange = '\\u2700-\\u27bf',
23893      rsLowerRange = 'a-z\\xdf-\\xf6\\xf8-\\xff',
23894      rsMathOpRange = '\\xac\\xb1\\xd7\\xf7',
23895      rsNonCharRange = '\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf',
23896      rsPunctuationRange = '\\u2000-\\u206f',
23897      rsSpaceRange = ' \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000',
23898      rsUpperRange = 'A-Z\\xc0-\\xd6\\xd8-\\xde',
23899      rsVarRange = '\\ufe0e\\ufe0f',
23900      rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;
23901
23902  /** Used to compose unicode capture groups. */
23903  var rsApos = "['\u2019]",
23904      rsAstral = '[' + rsAstralRange + ']',
23905      rsBreak = '[' + rsBreakRange + ']',
23906      rsCombo = '[' + rsComboRange + ']',
23907      rsDigits = '\\d+',
23908      rsDingbat = '[' + rsDingbatRange + ']',
23909      rsLower = '[' + rsLowerRange + ']',
23910      rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',
23911      rsFitz = '\\ud83c[\\udffb-\\udfff]',
23912      rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',
23913      rsNonAstral = '[^' + rsAstralRange + ']',
23914      rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}',
23915      rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]',
23916      rsUpper = '[' + rsUpperRange + ']',
23917      rsZWJ = '\\u200d';
23918
23919  /** Used to compose unicode regexes. */
23920  var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',
23921      rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',
23922      rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',
23923      rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',
23924      reOptMod = rsModifier + '?',
23925      rsOptVar = '[' + rsVarRange + ']?',
23926      rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',
23927      rsOrdLower = '\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])',
23928      rsOrdUpper = '\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])',
23929      rsSeq = rsOptVar + reOptMod + rsOptJoin,
23930      rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,
23931      rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';
23932
23933  /** Used to match apostrophes. */
23934  var reApos = RegExp(rsApos, 'g');
23935
23936  /**
23937   * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and
23938   * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).
23939   */
23940  var reComboMark = RegExp(rsCombo, 'g');
23941
23942  /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */
23943  var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');
23944
23945  /** Used to match complex or compound words. */
23946  var reUnicodeWord = RegExp([
23947    rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',
23948    rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',
23949    rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,
23950    rsUpper + '+' + rsOptContrUpper,
23951    rsOrdUpper,
23952    rsOrdLower,
23953    rsDigits,
23954    rsEmoji
23955  ].join('|'), 'g');
23956
23957  /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */
23958  var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboRange + rsVarRange + ']');
23959
23960  /** Used to detect strings that need a more robust regexp to match words. */
23961  var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;
23962
23963  /** Used to assign default `context` object properties. */
23964  var contextProps = [
23965    'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',
23966    'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',
23967    'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',
23968    'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',
23969    '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'
23970  ];
23971
23972  /** Used to make template sourceURLs easier to identify. */
23973  var templateCounter = -1;
23974
23975  /** Used to identify `toStringTag` values of typed arrays. */
23976  var typedArrayTags = {};
23977  typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =
23978  typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =
23979  typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =
23980  typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =
23981  typedArrayTags[uint32Tag] = true;
23982  typedArrayTags[argsTag] = typedArrayTags[arrayTag] =
23983  typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =
23984  typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =
23985  typedArrayTags[errorTag] = typedArrayTags[funcTag] =
23986  typedArrayTags[mapTag] = typedArrayTags[numberTag] =
23987  typedArrayTags[objectTag] = typedArrayTags[regexpTag] =
23988  typedArrayTags[setTag] = typedArrayTags[stringTag] =
23989  typedArrayTags[weakMapTag] = false;
23990
23991  /** Used to identify `toStringTag` values supported by `_.clone`. */
23992  var cloneableTags = {};
23993  cloneableTags[argsTag] = cloneableTags[arrayTag] =
23994  cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =
23995  cloneableTags[boolTag] = cloneableTags[dateTag] =
23996  cloneableTags[float32Tag] = cloneableTags[float64Tag] =
23997  cloneableTags[int8Tag] = cloneableTags[int16Tag] =
23998  cloneableTags[int32Tag] = cloneableTags[mapTag] =
23999  cloneableTags[numberTag] = cloneableTags[objectTag] =
24000  cloneableTags[regexpTag] = cloneableTags[setTag] =
24001  cloneableTags[stringTag] = cloneableTags[symbolTag] =
24002  cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =
24003  cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;
24004  cloneableTags[errorTag] = cloneableTags[funcTag] =
24005  cloneableTags[weakMapTag] = false;
24006
24007  /** Used to map Latin Unicode letters to basic Latin letters. */
24008  var deburredLetters = {
24009    // Latin-1 Supplement block.
24010    '\xc0': 'A',  '\xc1': 'A', '\xc2': 'A', '\xc3': 'A', '\xc4': 'A', '\xc5': 'A',
24011    '\xe0': 'a',  '\xe1': 'a', '\xe2': 'a', '\xe3': 'a', '\xe4': 'a', '\xe5': 'a',
24012    '\xc7': 'C',  '\xe7': 'c',
24013    '\xd0': 'D',  '\xf0': 'd',
24014    '\xc8': 'E',  '\xc9': 'E', '\xca': 'E', '\xcb': 'E',
24015    '\xe8': 'e',  '\xe9': 'e', '\xea': 'e', '\xeb': 'e',
24016    '\xcc': 'I',  '\xcd': 'I', '\xce': 'I', '\xcf': 'I',
24017    '\xec': 'i',  '\xed': 'i', '\xee': 'i', '\xef': 'i',
24018    '\xd1': 'N',  '\xf1': 'n',
24019    '\xd2': 'O',  '\xd3': 'O', '\xd4': 'O', '\xd5': 'O', '\xd6': 'O', '\xd8': 'O',
24020    '\xf2': 'o',  '\xf3': 'o', '\xf4': 'o', '\xf5': 'o', '\xf6': 'o', '\xf8': 'o',
24021    '\xd9': 'U',  '\xda': 'U', '\xdb': 'U', '\xdc': 'U',
24022    '\xf9': 'u',  '\xfa': 'u', '\xfb': 'u', '\xfc': 'u',
24023    '\xdd': 'Y',  '\xfd': 'y', '\xff': 'y',
24024    '\xc6': 'Ae', '\xe6': 'ae',
24025    '\xde': 'Th', '\xfe': 'th',
24026    '\xdf': 'ss',
24027    // Latin Extended-A block.
24028    '\u0100': 'A',  '\u0102': 'A', '\u0104': 'A',
24029    '\u0101': 'a',  '\u0103': 'a', '\u0105': 'a',
24030    '\u0106': 'C',  '\u0108': 'C', '\u010a': 'C', '\u010c': 'C',
24031    '\u0107': 'c',  '\u0109': 'c', '\u010b': 'c', '\u010d': 'c',
24032    '\u010e': 'D',  '\u0110': 'D', '\u010f': 'd', '\u0111': 'd',
24033    '\u0112': 'E',  '\u0114': 'E', '\u0116': 'E', '\u0118': 'E', '\u011a': 'E',
24034    '\u0113': 'e',  '\u0115': 'e', '\u0117': 'e', '\u0119': 'e', '\u011b': 'e',
24035    '\u011c': 'G',  '\u011e': 'G', '\u0120': 'G', '\u0122': 'G',
24036    '\u011d': 'g',  '\u011f': 'g', '\u0121': 'g', '\u0123': 'g',
24037    '\u0124': 'H',  '\u0126': 'H', '\u0125': 'h', '\u0127': 'h',
24038    '\u0128': 'I',  '\u012a': 'I', '\u012c': 'I', '\u012e': 'I', '\u0130': 'I',
24039    '\u0129': 'i',  '\u012b': 'i', '\u012d': 'i', '\u012f': 'i', '\u0131': 'i',
24040    '\u0134': 'J',  '\u0135': 'j',
24041    '\u0136': 'K',  '\u0137': 'k', '\u0138': 'k',
24042    '\u0139': 'L',  '\u013b': 'L', '\u013d': 'L', '\u013f': 'L', '\u0141': 'L',
24043    '\u013a': 'l',  '\u013c': 'l', '\u013e': 'l', '\u0140': 'l', '\u0142': 'l',
24044    '\u0143': 'N',  '\u0145': 'N', '\u0147': 'N', '\u014a': 'N',
24045    '\u0144': 'n',  '\u0146': 'n', '\u0148': 'n', '\u014b': 'n',
24046    '\u014c': 'O',  '\u014e': 'O', '\u0150': 'O',
24047    '\u014d': 'o',  '\u014f': 'o', '\u0151': 'o',
24048    '\u0154': 'R',  '\u0156': 'R', '\u0158': 'R',
24049    '\u0155': 'r',  '\u0157': 'r', '\u0159': 'r',
24050    '\u015a': 'S',  '\u015c': 'S', '\u015e': 'S', '\u0160': 'S',
24051    '\u015b': 's',  '\u015d': 's', '\u015f': 's', '\u0161': 's',
24052    '\u0162': 'T',  '\u0164': 'T', '\u0166': 'T',
24053    '\u0163': 't',  '\u0165': 't', '\u0167': 't',
24054    '\u0168': 'U',  '\u016a': 'U', '\u016c': 'U', '\u016e': 'U', '\u0170': 'U', '\u0172': 'U',
24055    '\u0169': 'u',  '\u016b': 'u', '\u016d': 'u', '\u016f': 'u', '\u0171': 'u', '\u0173': 'u',
24056    '\u0174': 'W',  '\u0175': 'w',
24057    '\u0176': 'Y',  '\u0177': 'y', '\u0178': 'Y',
24058    '\u0179': 'Z',  '\u017b': 'Z', '\u017d': 'Z',
24059    '\u017a': 'z',  '\u017c': 'z', '\u017e': 'z',
24060    '\u0132': 'IJ', '\u0133': 'ij',
24061    '\u0152': 'Oe', '\u0153': 'oe',
24062    '\u0149': "'n", '\u017f': 's'
24063  };
24064
24065  /** Used to map characters to HTML entities. */
24066  var htmlEscapes = {
24067    '&': '&amp;',
24068    '<': '&lt;',
24069    '>': '&gt;',
24070    '"': '&quot;',
24071    "'": '&#39;'
24072  };
24073
24074  /** Used to map HTML entities to characters. */
24075  var htmlUnescapes = {
24076    '&amp;': '&',
24077    '&lt;': '<',
24078    '&gt;': '>',
24079    '&quot;': '"',
24080    '&#39;': "'"
24081  };
24082
24083  /** Used to escape characters for inclusion in compiled string literals. */
24084  var stringEscapes = {
24085    '\\': '\\',
24086    "'": "'",
24087    '\n': 'n',
24088    '\r': 'r',
24089    '\u2028': 'u2028',
24090    '\u2029': 'u2029'
24091  };
24092
24093  /** Built-in method references without a dependency on `root`. */
24094  var freeParseFloat = parseFloat,
24095      freeParseInt = parseInt;
24096
24097  /** Detect free variable `global` from Node.js. */
24098  var freeGlobal = typeof __webpack_require__.g == 'object' && __webpack_require__.g && __webpack_require__.g.Object === Object && __webpack_require__.g;
24099
24100  /** Detect free variable `self`. */
24101  var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
24102
24103  /** Used as a reference to the global object. */
24104  var root = freeGlobal || freeSelf || Function('return this')();
24105
24106  /** Detect free variable `exports`. */
24107  var freeExports =  true && exports && !exports.nodeType && exports;
24108
24109  /** Detect free variable `module`. */
24110  var freeModule = freeExports && "object" == 'object' && module && !module.nodeType && module;
24111
24112  /** Detect the popular CommonJS extension `module.exports`. */
24113  var moduleExports = freeModule && freeModule.exports === freeExports;
24114
24115  /** Detect free variable `process` from Node.js. */
24116  var freeProcess = moduleExports && freeGlobal.process;
24117
24118  /** Used to access faster Node.js helpers. */
24119  var nodeUtil = (function() {
24120    try {
24121      // Use `util.types` for Node.js 10+.
24122      var types = freeModule && freeModule.require && freeModule.require('util').types;
24123
24124      if (types) {
24125        return types;
24126      }
24127
24128      // Legacy `process.binding('util')` for Node.js < 10.
24129      return freeProcess && freeProcess.binding && freeProcess.binding('util');
24130    } catch (e) {}
24131  }());
24132
24133  /* Node.js helper references. */
24134  var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,
24135      nodeIsDate = nodeUtil && nodeUtil.isDate,
24136      nodeIsMap = nodeUtil && nodeUtil.isMap,
24137      nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,
24138      nodeIsSet = nodeUtil && nodeUtil.isSet,
24139      nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
24140
24141  /*--------------------------------------------------------------------------*/
24142
24143  /**
24144   * A faster alternative to `Function#apply`, this function invokes `func`
24145   * with the `this` binding of `thisArg` and the arguments of `args`.
24146   *
24147   * @private
24148   * @param {Function} func The function to invoke.
24149   * @param {*} thisArg The `this` binding of `func`.
24150   * @param {Array} args The arguments to invoke `func` with.
24151   * @returns {*} Returns the result of `func`.
24152   */
24153  function apply(func, thisArg, args) {
24154    switch (args.length) {
24155      case 0: return func.call(thisArg);
24156      case 1: return func.call(thisArg, args[0]);
24157      case 2: return func.call(thisArg, args[0], args[1]);
24158      case 3: return func.call(thisArg, args[0], args[1], args[2]);
24159    }
24160    return func.apply(thisArg, args);
24161  }
24162
24163  /**
24164   * A specialized version of `baseAggregator` for arrays.
24165   *
24166   * @private
24167   * @param {Array} [array] The array to iterate over.
24168   * @param {Function} setter The function to set `accumulator` values.
24169   * @param {Function} iteratee The iteratee to transform keys.
24170   * @param {Object} accumulator The initial aggregated object.
24171   * @returns {Function} Returns `accumulator`.
24172   */
24173  function arrayAggregator(array, setter, iteratee, accumulator) {
24174    var index = -1,
24175        length = array == null ? 0 : array.length;
24176
24177    while (++index < length) {
24178      var value = array[index];
24179      setter(accumulator, value, iteratee(value), array);
24180    }
24181    return accumulator;
24182  }
24183
24184  /**
24185   * A specialized version of `_.forEach` for arrays without support for
24186   * iteratee shorthands.
24187   *
24188   * @private
24189   * @param {Array} [array] The array to iterate over.
24190   * @param {Function} iteratee The function invoked per iteration.
24191   * @returns {Array} Returns `array`.
24192   */
24193  function arrayEach(array, iteratee) {
24194    var index = -1,
24195        length = array == null ? 0 : array.length;
24196
24197    while (++index < length) {
24198      if (iteratee(array[index], index, array) === false) {
24199        break;
24200      }
24201    }
24202    return array;
24203  }
24204
24205  /**
24206   * A specialized version of `_.forEachRight` for arrays without support for
24207   * iteratee shorthands.
24208   *
24209   * @private
24210   * @param {Array} [array] The array to iterate over.
24211   * @param {Function} iteratee The function invoked per iteration.
24212   * @returns {Array} Returns `array`.
24213   */
24214  function arrayEachRight(array, iteratee) {
24215    var length = array == null ? 0 : array.length;
24216
24217    while (length--) {
24218      if (iteratee(array[length], length, array) === false) {
24219        break;
24220      }
24221    }
24222    return array;
24223  }
24224
24225  /**
24226   * A specialized version of `_.every` for arrays without support for
24227   * iteratee shorthands.
24228   *
24229   * @private
24230   * @param {Array} [array] The array to iterate over.
24231   * @param {Function} predicate The function invoked per iteration.
24232   * @returns {boolean} Returns `true` if all elements pass the predicate check,
24233   *  else `false`.
24234   */
24235  function arrayEvery(array, predicate) {
24236    var index = -1,
24237        length = array == null ? 0 : array.length;
24238
24239    while (++index < length) {
24240      if (!predicate(array[index], index, array)) {
24241        return false;
24242      }
24243    }
24244    return true;
24245  }
24246
24247  /**
24248   * A specialized version of `_.filter` for arrays without support for
24249   * iteratee shorthands.
24250   *
24251   * @private
24252   * @param {Array} [array] The array to iterate over.
24253   * @param {Function} predicate The function invoked per iteration.
24254   * @returns {Array} Returns the new filtered array.
24255   */
24256  function arrayFilter(array, predicate) {
24257    var index = -1,
24258        length = array == null ? 0 : array.length,
24259        resIndex = 0,
24260        result = [];
24261
24262    while (++index < length) {
24263      var value = array[index];
24264      if (predicate(value, index, array)) {
24265        result[resIndex++] = value;
24266      }
24267    }
24268    return result;
24269  }
24270
24271  /**
24272   * A specialized version of `_.includes` for arrays without support for
24273   * specifying an index to search from.
24274   *
24275   * @private
24276   * @param {Array} [array] The array to inspect.
24277   * @param {*} target The value to search for.
24278   * @returns {boolean} Returns `true` if `target` is found, else `false`.
24279   */
24280  function arrayIncludes(array, value) {
24281    var length = array == null ? 0 : array.length;
24282    return !!length && baseIndexOf(array, value, 0) > -1;
24283  }
24284
24285  /**
24286   * This function is like `arrayIncludes` except that it accepts a comparator.
24287   *
24288   * @private
24289   * @param {Array} [array] The array to inspect.
24290   * @param {*} target The value to search for.
24291   * @param {Function} comparator The comparator invoked per element.
24292   * @returns {boolean} Returns `true` if `target` is found, else `false`.
24293   */
24294  function arrayIncludesWith(array, value, comparator) {
24295    var index = -1,
24296        length = array == null ? 0 : array.length;
24297
24298    while (++index < length) {
24299      if (comparator(value, array[index])) {
24300        return true;
24301      }
24302    }
24303    return false;
24304  }
24305
24306  /**
24307   * A specialized version of `_.map` for arrays without support for iteratee
24308   * shorthands.
24309   *
24310   * @private
24311   * @param {Array} [array] The array to iterate over.
24312   * @param {Function} iteratee The function invoked per iteration.
24313   * @returns {Array} Returns the new mapped array.
24314   */
24315  function arrayMap(array, iteratee) {
24316    var index = -1,
24317        length = array == null ? 0 : array.length,
24318        result = Array(length);
24319
24320    while (++index < length) {
24321      result[index] = iteratee(array[index], index, array);
24322    }
24323    return result;
24324  }
24325
24326  /**
24327   * Appends the elements of `values` to `array`.
24328   *
24329   * @private
24330   * @param {Array} array The array to modify.
24331   * @param {Array} values The values to append.
24332   * @returns {Array} Returns `array`.
24333   */
24334  function arrayPush(array, values) {
24335    var index = -1,
24336        length = values.length,
24337        offset = array.length;
24338
24339    while (++index < length) {
24340      array[offset + index] = values[index];
24341    }
24342    return array;
24343  }
24344
24345  /**
24346   * A specialized version of `_.reduce` for arrays without support for
24347   * iteratee shorthands.
24348   *
24349   * @private
24350   * @param {Array} [array] The array to iterate over.
24351   * @param {Function} iteratee The function invoked per iteration.
24352   * @param {*} [accumulator] The initial value.
24353   * @param {boolean} [initAccum] Specify using the first element of `array` as
24354   *  the initial value.
24355   * @returns {*} Returns the accumulated value.
24356   */
24357  function arrayReduce(array, iteratee, accumulator, initAccum) {
24358    var index = -1,
24359        length = array == null ? 0 : array.length;
24360
24361    if (initAccum && length) {
24362      accumulator = array[++index];
24363    }
24364    while (++index < length) {
24365      accumulator = iteratee(accumulator, array[index], index, array);
24366    }
24367    return accumulator;
24368  }
24369
24370  /**
24371   * A specialized version of `_.reduceRight` for arrays without support for
24372   * iteratee shorthands.
24373   *
24374   * @private
24375   * @param {Array} [array] The array to iterate over.
24376   * @param {Function} iteratee The function invoked per iteration.
24377   * @param {*} [accumulator] The initial value.
24378   * @param {boolean} [initAccum] Specify using the last element of `array` as
24379   *  the initial value.
24380   * @returns {*} Returns the accumulated value.
24381   */
24382  function arrayReduceRight(array, iteratee, accumulator, initAccum) {
24383    var length = array == null ? 0 : array.length;
24384    if (initAccum && length) {
24385      accumulator = array[--length];
24386    }
24387    while (length--) {
24388      accumulator = iteratee(accumulator, array[length], length, array);
24389    }
24390    return accumulator;
24391  }
24392
24393  /**
24394   * A specialized version of `_.some` for arrays without support for iteratee
24395   * shorthands.
24396   *
24397   * @private
24398   * @param {Array} [array] The array to iterate over.
24399   * @param {Function} predicate The function invoked per iteration.
24400   * @returns {boolean} Returns `true` if any element passes the predicate check,
24401   *  else `false`.
24402   */
24403  function arraySome(array, predicate) {
24404    var index = -1,
24405        length = array == null ? 0 : array.length;
24406
24407    while (++index < length) {
24408      if (predicate(array[index], index, array)) {
24409        return true;
24410      }
24411    }
24412    return false;
24413  }
24414
24415  /**
24416   * Gets the size of an ASCII `string`.
24417   *
24418   * @private
24419   * @param {string} string The string inspect.
24420   * @returns {number} Returns the string size.
24421   */
24422  var asciiSize = baseProperty('length');
24423
24424  /**
24425   * Converts an ASCII `string` to an array.
24426   *
24427   * @private
24428   * @param {string} string The string to convert.
24429   * @returns {Array} Returns the converted array.
24430   */
24431  function asciiToArray(string) {
24432    return string.split('');
24433  }
24434
24435  /**
24436   * Splits an ASCII `string` into an array of its words.
24437   *
24438   * @private
24439   * @param {string} The string to inspect.
24440   * @returns {Array} Returns the words of `string`.
24441   */
24442  function asciiWords(string) {
24443    return string.match(reAsciiWord) || [];
24444  }
24445
24446  /**
24447   * The base implementation of methods like `_.findKey` and `_.findLastKey`,
24448   * without support for iteratee shorthands, which iterates over `collection`
24449   * using `eachFunc`.
24450   *
24451   * @private
24452   * @param {Array|Object} collection The collection to inspect.
24453   * @param {Function} predicate The function invoked per iteration.
24454   * @param {Function} eachFunc The function to iterate over `collection`.
24455   * @returns {*} Returns the found element or its key, else `undefined`.
24456   */
24457  function baseFindKey(collection, predicate, eachFunc) {
24458    var result;
24459    eachFunc(collection, function(value, key, collection) {
24460      if (predicate(value, key, collection)) {
24461        result = key;
24462        return false;
24463      }
24464    });
24465    return result;
24466  }
24467
24468  /**
24469   * The base implementation of `_.findIndex` and `_.findLastIndex` without
24470   * support for iteratee shorthands.
24471   *
24472   * @private
24473   * @param {Array} array The array to inspect.
24474   * @param {Function} predicate The function invoked per iteration.
24475   * @param {number} fromIndex The index to search from.
24476   * @param {boolean} [fromRight] Specify iterating from right to left.
24477   * @returns {number} Returns the index of the matched value, else `-1`.
24478   */
24479  function baseFindIndex(array, predicate, fromIndex, fromRight) {
24480    var length = array.length,
24481        index = fromIndex + (fromRight ? 1 : -1);
24482
24483    while ((fromRight ? index-- : ++index < length)) {
24484      if (predicate(array[index], index, array)) {
24485        return index;
24486      }
24487    }
24488    return -1;
24489  }
24490
24491  /**
24492   * The base implementation of `_.indexOf` without `fromIndex` bounds checks.
24493   *
24494   * @private
24495   * @param {Array} array The array to inspect.
24496   * @param {*} value The value to search for.
24497   * @param {number} fromIndex The index to search from.
24498   * @returns {number} Returns the index of the matched value, else `-1`.
24499   */
24500  function baseIndexOf(array, value, fromIndex) {
24501    return value === value
24502      ? strictIndexOf(array, value, fromIndex)
24503      : baseFindIndex(array, baseIsNaN, fromIndex);
24504  }
24505
24506  /**
24507   * This function is like `baseIndexOf` except that it accepts a comparator.
24508   *
24509   * @private
24510   * @param {Array} array The array to inspect.
24511   * @param {*} value The value to search for.
24512   * @param {number} fromIndex The index to search from.
24513   * @param {Function} comparator The comparator invoked per element.
24514   * @returns {number} Returns the index of the matched value, else `-1`.
24515   */
24516  function baseIndexOfWith(array, value, fromIndex, comparator) {
24517    var index = fromIndex - 1,
24518        length = array.length;
24519
24520    while (++index < length) {
24521      if (comparator(array[index], value)) {
24522        return index;
24523      }
24524    }
24525    return -1;
24526  }
24527
24528  /**
24529   * The base implementation of `_.isNaN` without support for number objects.
24530   *
24531   * @private
24532   * @param {*} value The value to check.
24533   * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
24534   */
24535  function baseIsNaN(value) {
24536    return value !== value;
24537  }
24538
24539  /**
24540   * The base implementation of `_.mean` and `_.meanBy` without support for
24541   * iteratee shorthands.
24542   *
24543   * @private
24544   * @param {Array} array The array to iterate over.
24545   * @param {Function} iteratee The function invoked per iteration.
24546   * @returns {number} Returns the mean.
24547   */
24548  function baseMean(array, iteratee) {
24549    var length = array == null ? 0 : array.length;
24550    return length ? (baseSum(array, iteratee) / length) : NAN;
24551  }
24552
24553  /**
24554   * The base implementation of `_.property` without support for deep paths.
24555   *
24556   * @private
24557   * @param {string} key The key of the property to get.
24558   * @returns {Function} Returns the new accessor function.
24559   */
24560  function baseProperty(key) {
24561    return function(object) {
24562      return object == null ? undefined : object[key];
24563    };
24564  }
24565
24566  /**
24567   * The base implementation of `_.propertyOf` without support for deep paths.
24568   *
24569   * @private
24570   * @param {Object} object The object to query.
24571   * @returns {Function} Returns the new accessor function.
24572   */
24573  function basePropertyOf(object) {
24574    return function(key) {
24575      return object == null ? undefined : object[key];
24576    };
24577  }
24578
24579  /**
24580   * The base implementation of `_.reduce` and `_.reduceRight`, without support
24581   * for iteratee shorthands, which iterates over `collection` using `eachFunc`.
24582   *
24583   * @private
24584   * @param {Array|Object} collection The collection to iterate over.
24585   * @param {Function} iteratee The function invoked per iteration.
24586   * @param {*} accumulator The initial value.
24587   * @param {boolean} initAccum Specify using the first or last element of
24588   *  `collection` as the initial value.
24589   * @param {Function} eachFunc The function to iterate over `collection`.
24590   * @returns {*} Returns the accumulated value.
24591   */
24592  function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {
24593    eachFunc(collection, function(value, index, collection) {
24594      accumulator = initAccum
24595        ? (initAccum = false, value)
24596        : iteratee(accumulator, value, index, collection);
24597    });
24598    return accumulator;
24599  }
24600
24601  /**
24602   * The base implementation of `_.sortBy` which uses `comparer` to define the
24603   * sort order of `array` and replaces criteria objects with their corresponding
24604   * values.
24605   *
24606   * @private
24607   * @param {Array} array The array to sort.
24608   * @param {Function} comparer The function to define sort order.
24609   * @returns {Array} Returns `array`.
24610   */
24611  function baseSortBy(array, comparer) {
24612    var length = array.length;
24613
24614    array.sort(comparer);
24615    while (length--) {
24616      array[length] = array[length].value;
24617    }
24618    return array;
24619  }
24620
24621  /**
24622   * The base implementation of `_.sum` and `_.sumBy` without support for
24623   * iteratee shorthands.
24624   *
24625   * @private
24626   * @param {Array} array The array to iterate over.
24627   * @param {Function} iteratee The function invoked per iteration.
24628   * @returns {number} Returns the sum.
24629   */
24630  function baseSum(array, iteratee) {
24631    var result,
24632        index = -1,
24633        length = array.length;
24634
24635    while (++index < length) {
24636      var current = iteratee(array[index]);
24637      if (current !== undefined) {
24638        result = result === undefined ? current : (result + current);
24639      }
24640    }
24641    return result;
24642  }
24643
24644  /**
24645   * The base implementation of `_.times` without support for iteratee shorthands
24646   * or max array length checks.
24647   *
24648   * @private
24649   * @param {number} n The number of times to invoke `iteratee`.
24650   * @param {Function} iteratee The function invoked per iteration.
24651   * @returns {Array} Returns the array of results.
24652   */
24653  function baseTimes(n, iteratee) {
24654    var index = -1,
24655        result = Array(n);
24656
24657    while (++index < n) {
24658      result[index] = iteratee(index);
24659    }
24660    return result;
24661  }
24662
24663  /**
24664   * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array
24665   * of key-value pairs for `object` corresponding to the property names of `props`.
24666   *
24667   * @private
24668   * @param {Object} object The object to query.
24669   * @param {Array} props The property names to get values for.
24670   * @returns {Object} Returns the key-value pairs.
24671   */
24672  function baseToPairs(object, props) {
24673    return arrayMap(props, function(key) {
24674      return [key, object[key]];
24675    });
24676  }
24677
24678  /**
24679   * The base implementation of `_.trim`.
24680   *
24681   * @private
24682   * @param {string} string The string to trim.
24683   * @returns {string} Returns the trimmed string.
24684   */
24685  function baseTrim(string) {
24686    return string
24687      ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')
24688      : string;
24689  }
24690
24691  /**
24692   * The base implementation of `_.unary` without support for storing metadata.
24693   *
24694   * @private
24695   * @param {Function} func The function to cap arguments for.
24696   * @returns {Function} Returns the new capped function.
24697   */
24698  function baseUnary(func) {
24699    return function(value) {
24700      return func(value);
24701    };
24702  }
24703
24704  /**
24705   * The base implementation of `_.values` and `_.valuesIn` which creates an
24706   * array of `object` property values corresponding to the property names
24707   * of `props`.
24708   *
24709   * @private
24710   * @param {Object} object The object to query.
24711   * @param {Array} props The property names to get values for.
24712   * @returns {Object} Returns the array of property values.
24713   */
24714  function baseValues(object, props) {
24715    return arrayMap(props, function(key) {
24716      return object[key];
24717    });
24718  }
24719
24720  /**
24721   * Checks if a `cache` value for `key` exists.
24722   *
24723   * @private
24724   * @param {Object} cache The cache to query.
24725   * @param {string} key The key of the entry to check.
24726   * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
24727   */
24728  function cacheHas(cache, key) {
24729    return cache.has(key);
24730  }
24731
24732  /**
24733   * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol
24734   * that is not found in the character symbols.
24735   *
24736   * @private
24737   * @param {Array} strSymbols The string symbols to inspect.
24738   * @param {Array} chrSymbols The character symbols to find.
24739   * @returns {number} Returns the index of the first unmatched string symbol.
24740   */
24741  function charsStartIndex(strSymbols, chrSymbols) {
24742    var index = -1,
24743        length = strSymbols.length;
24744
24745    while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}
24746    return index;
24747  }
24748
24749  /**
24750   * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol
24751   * that is not found in the character symbols.
24752   *
24753   * @private
24754   * @param {Array} strSymbols The string symbols to inspect.
24755   * @param {Array} chrSymbols The character symbols to find.
24756   * @returns {number} Returns the index of the last unmatched string symbol.
24757   */
24758  function charsEndIndex(strSymbols, chrSymbols) {
24759    var index = strSymbols.length;
24760
24761    while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}
24762    return index;
24763  }
24764
24765  /**
24766   * Gets the number of `placeholder` occurrences in `array`.
24767   *
24768   * @private
24769   * @param {Array} array The array to inspect.
24770   * @param {*} placeholder The placeholder to search for.
24771   * @returns {number} Returns the placeholder count.
24772   */
24773  function countHolders(array, placeholder) {
24774    var length = array.length,
24775        result = 0;
24776
24777    while (length--) {
24778      if (array[length] === placeholder) {
24779        ++result;
24780      }
24781    }
24782    return result;
24783  }
24784
24785  /**
24786   * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A
24787   * letters to basic Latin letters.
24788   *
24789   * @private
24790   * @param {string} letter The matched letter to deburr.
24791   * @returns {string} Returns the deburred letter.
24792   */
24793  var deburrLetter = basePropertyOf(deburredLetters);
24794
24795  /**
24796   * Used by `_.escape` to convert characters to HTML entities.
24797   *
24798   * @private
24799   * @param {string} chr The matched character to escape.
24800   * @returns {string} Returns the escaped character.
24801   */
24802  var escapeHtmlChar = basePropertyOf(htmlEscapes);
24803
24804  /**
24805   * Used by `_.template` to escape characters for inclusion in compiled string literals.
24806   *
24807   * @private
24808   * @param {string} chr The matched character to escape.
24809   * @returns {string} Returns the escaped character.
24810   */
24811  function escapeStringChar(chr) {
24812    return '\\' + stringEscapes[chr];
24813  }
24814
24815  /**
24816   * Gets the value at `key` of `object`.
24817   *
24818   * @private
24819   * @param {Object} [object] The object to query.
24820   * @param {string} key The key of the property to get.
24821   * @returns {*} Returns the property value.
24822   */
24823  function getValue(object, key) {
24824    return object == null ? undefined : object[key];
24825  }
24826
24827  /**
24828   * Checks if `string` contains Unicode symbols.
24829   *
24830   * @private
24831   * @param {string} string The string to inspect.
24832   * @returns {boolean} Returns `true` if a symbol is found, else `false`.
24833   */
24834  function hasUnicode(string) {
24835    return reHasUnicode.test(string);
24836  }
24837
24838  /**
24839   * Checks if `string` contains a word composed of Unicode symbols.
24840   *
24841   * @private
24842   * @param {string} string The string to inspect.
24843   * @returns {boolean} Returns `true` if a word is found, else `false`.
24844   */
24845  function hasUnicodeWord(string) {
24846    return reHasUnicodeWord.test(string);
24847  }
24848
24849  /**
24850   * Converts `iterator` to an array.
24851   *
24852   * @private
24853   * @param {Object} iterator The iterator to convert.
24854   * @returns {Array} Returns the converted array.
24855   */
24856  function iteratorToArray(iterator) {
24857    var data,
24858        result = [];
24859
24860    while (!(data = iterator.next()).done) {
24861      result.push(data.value);
24862    }
24863    return result;
24864  }
24865
24866  /**
24867   * Converts `map` to its key-value pairs.
24868   *
24869   * @private
24870   * @param {Object} map The map to convert.
24871   * @returns {Array} Returns the key-value pairs.
24872   */
24873  function mapToArray(map) {
24874    var index = -1,
24875        result = Array(map.size);
24876
24877    map.forEach(function(value, key) {
24878      result[++index] = [key, value];
24879    });
24880    return result;
24881  }
24882
24883  /**
24884   * Creates a unary function that invokes `func` with its argument transformed.
24885   *
24886   * @private
24887   * @param {Function} func The function to wrap.
24888   * @param {Function} transform The argument transform.
24889   * @returns {Function} Returns the new function.
24890   */
24891  function overArg(func, transform) {
24892    return function(arg) {
24893      return func(transform(arg));
24894    };
24895  }
24896
24897  /**
24898   * Replaces all `placeholder` elements in `array` with an internal placeholder
24899   * and returns an array of their indexes.
24900   *
24901   * @private
24902   * @param {Array} array The array to modify.
24903   * @param {*} placeholder The placeholder to replace.
24904   * @returns {Array} Returns the new array of placeholder indexes.
24905   */
24906  function replaceHolders(array, placeholder) {
24907    var index = -1,
24908        length = array.length,
24909        resIndex = 0,
24910        result = [];
24911
24912    while (++index < length) {
24913      var value = array[index];
24914      if (value === placeholder || value === PLACEHOLDER) {
24915        array[index] = PLACEHOLDER;
24916        result[resIndex++] = index;
24917      }
24918    }
24919    return result;
24920  }
24921
24922  /**
24923   * Converts `set` to an array of its values.
24924   *
24925   * @private
24926   * @param {Object} set The set to convert.
24927   * @returns {Array} Returns the values.
24928   */
24929  function setToArray(set) {
24930    var index = -1,
24931        result = Array(set.size);
24932
24933    set.forEach(function(value) {
24934      result[++index] = value;
24935    });
24936    return result;
24937  }
24938
24939  /**
24940   * Converts `set` to its value-value pairs.
24941   *
24942   * @private
24943   * @param {Object} set The set to convert.
24944   * @returns {Array} Returns the value-value pairs.
24945   */
24946  function setToPairs(set) {
24947    var index = -1,
24948        result = Array(set.size);
24949
24950    set.forEach(function(value) {
24951      result[++index] = [value, value];
24952    });
24953    return result;
24954  }
24955
24956  /**
24957   * A specialized version of `_.indexOf` which performs strict equality
24958   * comparisons of values, i.e. `===`.
24959   *
24960   * @private
24961   * @param {Array} array The array to inspect.
24962   * @param {*} value The value to search for.
24963   * @param {number} fromIndex The index to search from.
24964   * @returns {number} Returns the index of the matched value, else `-1`.
24965   */
24966  function strictIndexOf(array, value, fromIndex) {
24967    var index = fromIndex - 1,
24968        length = array.length;
24969
24970    while (++index < length) {
24971      if (array[index] === value) {
24972        return index;
24973      }
24974    }
24975    return -1;
24976  }
24977
24978  /**
24979   * A specialized version of `_.lastIndexOf` which performs strict equality
24980   * comparisons of values, i.e. `===`.
24981   *
24982   * @private
24983   * @param {Array} array The array to inspect.
24984   * @param {*} value The value to search for.
24985   * @param {number} fromIndex The index to search from.
24986   * @returns {number} Returns the index of the matched value, else `-1`.
24987   */
24988  function strictLastIndexOf(array, value, fromIndex) {
24989    var index = fromIndex + 1;
24990    while (index--) {
24991      if (array[index] === value) {
24992        return index;
24993      }
24994    }
24995    return index;
24996  }
24997
24998  /**
24999   * Gets the number of symbols in `string`.
25000   *
25001   * @private
25002   * @param {string} string The string to inspect.
25003   * @returns {number} Returns the string size.
25004   */
25005  function stringSize(string) {
25006    return hasUnicode(string)
25007      ? unicodeSize(string)
25008      : asciiSize(string);
25009  }
25010
25011  /**
25012   * Converts `string` to an array.
25013   *
25014   * @private
25015   * @param {string} string The string to convert.
25016   * @returns {Array} Returns the converted array.
25017   */
25018  function stringToArray(string) {
25019    return hasUnicode(string)
25020      ? unicodeToArray(string)
25021      : asciiToArray(string);
25022  }
25023
25024  /**
25025   * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace
25026   * character of `string`.
25027   *
25028   * @private
25029   * @param {string} string The string to inspect.
25030   * @returns {number} Returns the index of the last non-whitespace character.
25031   */
25032  function trimmedEndIndex(string) {
25033    var index = string.length;
25034
25035    while (index-- && reWhitespace.test(string.charAt(index))) {}
25036    return index;
25037  }
25038
25039  /**
25040   * Used by `_.unescape` to convert HTML entities to characters.
25041   *
25042   * @private
25043   * @param {string} chr The matched character to unescape.
25044   * @returns {string} Returns the unescaped character.
25045   */
25046  var unescapeHtmlChar = basePropertyOf(htmlUnescapes);
25047
25048  /**
25049   * Gets the size of a Unicode `string`.
25050   *
25051   * @private
25052   * @param {string} string The string inspect.
25053   * @returns {number} Returns the string size.
25054   */
25055  function unicodeSize(string) {
25056    var result = reUnicode.lastIndex = 0;
25057    while (reUnicode.test(string)) {
25058      ++result;
25059    }
25060    return result;
25061  }
25062
25063  /**
25064   * Converts a Unicode `string` to an array.
25065   *
25066   * @private
25067   * @param {string} string The string to convert.
25068   * @returns {Array} Returns the converted array.
25069   */
25070  function unicodeToArray(string) {
25071    return string.match(reUnicode) || [];
25072  }
25073
25074  /**
25075   * Splits a Unicode `string` into an array of its words.
25076   *
25077   * @private
25078   * @param {string} The string to inspect.
25079   * @returns {Array} Returns the words of `string`.
25080   */
25081  function unicodeWords(string) {
25082    return string.match(reUnicodeWord) || [];
25083  }
25084
25085  /*--------------------------------------------------------------------------*/
25086
25087  /**
25088   * Create a new pristine `lodash` function using the `context` object.
25089   *
25090   * @static
25091   * @memberOf _
25092   * @since 1.1.0
25093   * @category Util
25094   * @param {Object} [context=root] The context object.
25095   * @returns {Function} Returns a new `lodash` function.
25096   * @example
25097   *
25098   * _.mixin({ 'foo': _.constant('foo') });
25099   *
25100   * var lodash = _.runInContext();
25101   * lodash.mixin({ 'bar': lodash.constant('bar') });
25102   *
25103   * _.isFunction(_.foo);
25104   * // => true
25105   * _.isFunction(_.bar);
25106   * // => false
25107   *
25108   * lodash.isFunction(lodash.foo);
25109   * // => false
25110   * lodash.isFunction(lodash.bar);
25111   * // => true
25112   *
25113   * // Create a suped-up `defer` in Node.js.
25114   * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;
25115   */
25116  var runInContext = (function runInContext(context) {
25117    context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));
25118
25119    /** Built-in constructor references. */
25120    var Array = context.Array,
25121        Date = context.Date,
25122        Error = context.Error,
25123        Function = context.Function,
25124        Math = context.Math,
25125        Object = context.Object,
25126        RegExp = context.RegExp,
25127        String = context.String,
25128        TypeError = context.TypeError;
25129
25130    /** Used for built-in method references. */
25131    var arrayProto = Array.prototype,
25132        funcProto = Function.prototype,
25133        objectProto = Object.prototype;
25134
25135    /** Used to detect overreaching core-js shims. */
25136    var coreJsData = context['__core-js_shared__'];
25137
25138    /** Used to resolve the decompiled source of functions. */
25139    var funcToString = funcProto.toString;
25140
25141    /** Used to check objects for own properties. */
25142    var hasOwnProperty = objectProto.hasOwnProperty;
25143
25144    /** Used to generate unique IDs. */
25145    var idCounter = 0;
25146
25147    /** Used to detect methods masquerading as native. */
25148    var maskSrcKey = (function() {
25149      var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
25150      return uid ? ('Symbol(src)_1.' + uid) : '';
25151    }());
25152
25153    /**
25154     * Used to resolve the
25155     * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
25156     * of values.
25157     */
25158    var nativeObjectToString = objectProto.toString;
25159
25160    /** Used to infer the `Object` constructor. */
25161    var objectCtorString = funcToString.call(Object);
25162
25163    /** Used to restore the original `_` reference in `_.noConflict`. */
25164    var oldDash = root._;
25165
25166    /** Used to detect if a method is native. */
25167    var reIsNative = RegExp('^' +
25168      funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
25169      .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
25170    );
25171
25172    /** Built-in value references. */
25173    var Buffer = moduleExports ? context.Buffer : undefined,
25174        Symbol = context.Symbol,
25175        Uint8Array = context.Uint8Array,
25176        allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,
25177        getPrototype = overArg(Object.getPrototypeOf, Object),
25178        objectCreate = Object.create,
25179        propertyIsEnumerable = objectProto.propertyIsEnumerable,
25180        splice = arrayProto.splice,
25181        spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,
25182        symIterator = Symbol ? Symbol.iterator : undefined,
25183        symToStringTag = Symbol ? Symbol.toStringTag : undefined;
25184
25185    var defineProperty = (function() {
25186      try {
25187        var func = getNative(Object, 'defineProperty');
25188        func({}, '', {});
25189        return func;
25190      } catch (e) {}
25191    }());
25192
25193    /** Mocked built-ins. */
25194    var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,
25195        ctxNow = Date && Date.now !== root.Date.now && Date.now,
25196        ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;
25197
25198    /* Built-in method references for those with the same name as other `lodash` methods. */
25199    var nativeCeil = Math.ceil,
25200        nativeFloor = Math.floor,
25201        nativeGetSymbols = Object.getOwnPropertySymbols,
25202        nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,
25203        nativeIsFinite = context.isFinite,
25204        nativeJoin = arrayProto.join,
25205        nativeKeys = overArg(Object.keys, Object),
25206        nativeMax = Math.max,
25207        nativeMin = Math.min,
25208        nativeNow = Date.now,
25209        nativeParseInt = context.parseInt,
25210        nativeRandom = Math.random,
25211        nativeReverse = arrayProto.reverse;
25212
25213    /* Built-in method references that are verified to be native. */
25214    var DataView = getNative(context, 'DataView'),
25215        Map = getNative(context, 'Map'),
25216        Promise = getNative(context, 'Promise'),
25217        Set = getNative(context, 'Set'),
25218        WeakMap = getNative(context, 'WeakMap'),
25219        nativeCreate = getNative(Object, 'create');
25220
25221    /** Used to store function metadata. */
25222    var metaMap = WeakMap && new WeakMap;
25223
25224    /** Used to lookup unminified function names. */
25225    var realNames = {};
25226
25227    /** Used to detect maps, sets, and weakmaps. */
25228    var dataViewCtorString = toSource(DataView),
25229        mapCtorString = toSource(Map),
25230        promiseCtorString = toSource(Promise),
25231        setCtorString = toSource(Set),
25232        weakMapCtorString = toSource(WeakMap);
25233
25234    /** Used to convert symbols to primitives and strings. */
25235    var symbolProto = Symbol ? Symbol.prototype : undefined,
25236        symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,
25237        symbolToString = symbolProto ? symbolProto.toString : undefined;
25238
25239    /*------------------------------------------------------------------------*/
25240
25241    /**
25242     * Creates a `lodash` object which wraps `value` to enable implicit method
25243     * chain sequences. Methods that operate on and return arrays, collections,
25244     * and functions can be chained together. Methods that retrieve a single value
25245     * or may return a primitive value will automatically end the chain sequence
25246     * and return the unwrapped value. Otherwise, the value must be unwrapped
25247     * with `_#value`.
25248     *
25249     * Explicit chain sequences, which must be unwrapped with `_#value`, may be
25250     * enabled using `_.chain`.
25251     *
25252     * The execution of chained methods is lazy, that is, it's deferred until
25253     * `_#value` is implicitly or explicitly called.
25254     *
25255     * Lazy evaluation allows several methods to support shortcut fusion.
25256     * Shortcut fusion is an optimization to merge iteratee calls; this avoids
25257     * the creation of intermediate arrays and can greatly reduce the number of
25258     * iteratee executions. Sections of a chain sequence qualify for shortcut
25259     * fusion if the section is applied to an array and iteratees accept only
25260     * one argument. The heuristic for whether a section qualifies for shortcut
25261     * fusion is subject to change.
25262     *
25263     * Chaining is supported in custom builds as long as the `_#value` method is
25264     * directly or indirectly included in the build.
25265     *
25266     * In addition to lodash methods, wrappers have `Array` and `String` methods.
25267     *
25268     * The wrapper `Array` methods are:
25269     * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`
25270     *
25271     * The wrapper `String` methods are:
25272     * `replace` and `split`
25273     *
25274     * The wrapper methods that support shortcut fusion are:
25275     * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,
25276     * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,
25277     * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`
25278     *
25279     * The chainable wrapper methods are:
25280     * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,
25281     * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,
25282     * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,
25283     * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,
25284     * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,
25285     * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,
25286     * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,
25287     * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,
25288     * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,
25289     * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,
25290     * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,
25291     * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,
25292     * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,
25293     * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,
25294     * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,
25295     * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,
25296     * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,
25297     * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,
25298     * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,
25299     * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,
25300     * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,
25301     * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,
25302     * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,
25303     * `zipObject`, `zipObjectDeep`, and `zipWith`
25304     *
25305     * The wrapper methods that are **not** chainable by default are:
25306     * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,
25307     * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,
25308     * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,
25309     * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,
25310     * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,
25311     * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,
25312     * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,
25313     * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,
25314     * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,
25315     * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,
25316     * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,
25317     * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,
25318     * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,
25319     * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,
25320     * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,
25321     * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,
25322     * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,
25323     * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,
25324     * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,
25325     * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,
25326     * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,
25327     * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,
25328     * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,
25329     * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,
25330     * `upperFirst`, `value`, and `words`
25331     *
25332     * @name _
25333     * @constructor
25334     * @category Seq
25335     * @param {*} value The value to wrap in a `lodash` instance.
25336     * @returns {Object} Returns the new `lodash` wrapper instance.
25337     * @example
25338     *
25339     * function square(n) {
25340     *   return n * n;
25341     * }
25342     *
25343     * var wrapped = _([1, 2, 3]);
25344     *
25345     * // Returns an unwrapped value.
25346     * wrapped.reduce(_.add);
25347     * // => 6
25348     *
25349     * // Returns a wrapped value.
25350     * var squares = wrapped.map(square);
25351     *
25352     * _.isArray(squares);
25353     * // => false
25354     *
25355     * _.isArray(squares.value());
25356     * // => true
25357     */
25358    function lodash(value) {
25359      if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {
25360        if (value instanceof LodashWrapper) {
25361          return value;
25362        }
25363        if (hasOwnProperty.call(value, '__wrapped__')) {
25364          return wrapperClone(value);
25365        }
25366      }
25367      return new LodashWrapper(value);
25368    }
25369
25370    /**
25371     * The base implementation of `_.create` without support for assigning
25372     * properties to the created object.
25373     *
25374     * @private
25375     * @param {Object} proto The object to inherit from.
25376     * @returns {Object} Returns the new object.
25377     */
25378    var baseCreate = (function() {
25379      function object() {}
25380      return function(proto) {
25381        if (!isObject(proto)) {
25382          return {};
25383        }
25384        if (objectCreate) {
25385          return objectCreate(proto);
25386        }
25387        object.prototype = proto;
25388        var result = new object;
25389        object.prototype = undefined;
25390        return result;
25391      };
25392    }());
25393
25394    /**
25395     * The function whose prototype chain sequence wrappers inherit from.
25396     *
25397     * @private
25398     */
25399    function baseLodash() {
25400      // No operation performed.
25401    }
25402
25403    /**
25404     * The base constructor for creating `lodash` wrapper objects.
25405     *
25406     * @private
25407     * @param {*} value The value to wrap.
25408     * @param {boolean} [chainAll] Enable explicit method chain sequences.
25409     */
25410    function LodashWrapper(value, chainAll) {
25411      this.__wrapped__ = value;
25412      this.__actions__ = [];
25413      this.__chain__ = !!chainAll;
25414      this.__index__ = 0;
25415      this.__values__ = undefined;
25416    }
25417
25418    /**
25419     * By default, the template delimiters used by lodash are like those in
25420     * embedded Ruby (ERB) as well as ES2015 template strings. Change the
25421     * following template settings to use alternative delimiters.
25422     *
25423     * @static
25424     * @memberOf _
25425     * @type {Object}
25426     */
25427    lodash.templateSettings = {
25428
25429      /**
25430       * Used to detect `data` property values to be HTML-escaped.
25431       *
25432       * @memberOf _.templateSettings
25433       * @type {RegExp}
25434       */
25435      'escape': reEscape,
25436
25437      /**
25438       * Used to detect code to be evaluated.
25439       *
25440       * @memberOf _.templateSettings
25441       * @type {RegExp}
25442       */
25443      'evaluate': reEvaluate,
25444
25445      /**
25446       * Used to detect `data` property values to inject.
25447       *
25448       * @memberOf _.templateSettings
25449       * @type {RegExp}
25450       */
25451      'interpolate': reInterpolate,
25452
25453      /**
25454       * Used to reference the data object in the template text.
25455       *
25456       * @memberOf _.templateSettings
25457       * @type {string}
25458       */
25459      'variable': '',
25460
25461      /**
25462       * Used to import variables into the compiled template.
25463       *
25464       * @memberOf _.templateSettings
25465       * @type {Object}
25466       */
25467      'imports': {
25468
25469        /**
25470         * A reference to the `lodash` function.
25471         *
25472         * @memberOf _.templateSettings.imports
25473         * @type {Function}
25474         */
25475        '_': lodash
25476      }
25477    };
25478
25479    // Ensure wrappers are instances of `baseLodash`.
25480    lodash.prototype = baseLodash.prototype;
25481    lodash.prototype.constructor = lodash;
25482
25483    LodashWrapper.prototype = baseCreate(baseLodash.prototype);
25484    LodashWrapper.prototype.constructor = LodashWrapper;
25485
25486    /*------------------------------------------------------------------------*/
25487
25488    /**
25489     * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.
25490     *
25491     * @private
25492     * @constructor
25493     * @param {*} value The value to wrap.
25494     */
25495    function LazyWrapper(value) {
25496      this.__wrapped__ = value;
25497      this.__actions__ = [];
25498      this.__dir__ = 1;
25499      this.__filtered__ = false;
25500      this.__iteratees__ = [];
25501      this.__takeCount__ = MAX_ARRAY_LENGTH;
25502      this.__views__ = [];
25503    }
25504
25505    /**
25506     * Creates a clone of the lazy wrapper object.
25507     *
25508     * @private
25509     * @name clone
25510     * @memberOf LazyWrapper
25511     * @returns {Object} Returns the cloned `LazyWrapper` object.
25512     */
25513    function lazyClone() {
25514      var result = new LazyWrapper(this.__wrapped__);
25515      result.__actions__ = copyArray(this.__actions__);
25516      result.__dir__ = this.__dir__;
25517      result.__filtered__ = this.__filtered__;
25518      result.__iteratees__ = copyArray(this.__iteratees__);
25519      result.__takeCount__ = this.__takeCount__;
25520      result.__views__ = copyArray(this.__views__);
25521      return result;
25522    }
25523
25524    /**
25525     * Reverses the direction of lazy iteration.
25526     *
25527     * @private
25528     * @name reverse
25529     * @memberOf LazyWrapper
25530     * @returns {Object} Returns the new reversed `LazyWrapper` object.
25531     */
25532    function lazyReverse() {
25533      if (this.__filtered__) {
25534        var result = new LazyWrapper(this);
25535        result.__dir__ = -1;
25536        result.__filtered__ = true;
25537      } else {
25538        result = this.clone();
25539        result.__dir__ *= -1;
25540      }
25541      return result;
25542    }
25543
25544    /**
25545     * Extracts the unwrapped value from its lazy wrapper.
25546     *
25547     * @private
25548     * @name value
25549     * @memberOf LazyWrapper
25550     * @returns {*} Returns the unwrapped value.
25551     */
25552    function lazyValue() {
25553      var array = this.__wrapped__.value(),
25554          dir = this.__dir__,
25555          isArr = isArray(array),
25556          isRight = dir < 0,
25557          arrLength = isArr ? array.length : 0,
25558          view = getView(0, arrLength, this.__views__),
25559          start = view.start,
25560          end = view.end,
25561          length = end - start,
25562          index = isRight ? end : (start - 1),
25563          iteratees = this.__iteratees__,
25564          iterLength = iteratees.length,
25565          resIndex = 0,
25566          takeCount = nativeMin(length, this.__takeCount__);
25567
25568      if (!isArr || (!isRight && arrLength == length && takeCount == length)) {
25569        return baseWrapperValue(array, this.__actions__);
25570      }
25571      var result = [];
25572
25573      outer:
25574      while (length-- && resIndex < takeCount) {
25575        index += dir;
25576
25577        var iterIndex = -1,
25578            value = array[index];
25579
25580        while (++iterIndex < iterLength) {
25581          var data = iteratees[iterIndex],
25582              iteratee = data.iteratee,
25583              type = data.type,
25584              computed = iteratee(value);
25585
25586          if (type == LAZY_MAP_FLAG) {
25587            value = computed;
25588          } else if (!computed) {
25589            if (type == LAZY_FILTER_FLAG) {
25590              continue outer;
25591            } else {
25592              break outer;
25593            }
25594          }
25595        }
25596        result[resIndex++] = value;
25597      }
25598      return result;
25599    }
25600
25601    // Ensure `LazyWrapper` is an instance of `baseLodash`.
25602    LazyWrapper.prototype = baseCreate(baseLodash.prototype);
25603    LazyWrapper.prototype.constructor = LazyWrapper;
25604
25605    /*------------------------------------------------------------------------*/
25606
25607    /**
25608     * Creates a hash object.
25609     *
25610     * @private
25611     * @constructor
25612     * @param {Array} [entries] The key-value pairs to cache.
25613     */
25614    function Hash(entries) {
25615      var index = -1,
25616          length = entries == null ? 0 : entries.length;
25617
25618      this.clear();
25619      while (++index < length) {
25620        var entry = entries[index];
25621        this.set(entry[0], entry[1]);
25622      }
25623    }
25624
25625    /**
25626     * Removes all key-value entries from the hash.
25627     *
25628     * @private
25629     * @name clear
25630     * @memberOf Hash
25631     */
25632    function hashClear() {
25633      this.__data__ = nativeCreate ? nativeCreate(null) : {};
25634      this.size = 0;
25635    }
25636
25637    /**
25638     * Removes `key` and its value from the hash.
25639     *
25640     * @private
25641     * @name delete
25642     * @memberOf Hash
25643     * @param {Object} hash The hash to modify.
25644     * @param {string} key The key of the value to remove.
25645     * @returns {boolean} Returns `true` if the entry was removed, else `false`.
25646     */
25647    function hashDelete(key) {
25648      var result = this.has(key) && delete this.__data__[key];
25649      this.size -= result ? 1 : 0;
25650      return result;
25651    }
25652
25653    /**
25654     * Gets the hash value for `key`.
25655     *
25656     * @private
25657     * @name get
25658     * @memberOf Hash
25659     * @param {string} key The key of the value to get.
25660     * @returns {*} Returns the entry value.
25661     */
25662    function hashGet(key) {
25663      var data = this.__data__;
25664      if (nativeCreate) {
25665        var result = data[key];
25666        return result === HASH_UNDEFINED ? undefined : result;
25667      }
25668      return hasOwnProperty.call(data, key) ? data[key] : undefined;
25669    }
25670
25671    /**
25672     * Checks if a hash value for `key` exists.
25673     *
25674     * @private
25675     * @name has
25676     * @memberOf Hash
25677     * @param {string} key The key of the entry to check.
25678     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
25679     */
25680    function hashHas(key) {
25681      var data = this.__data__;
25682      return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);
25683    }
25684
25685    /**
25686     * Sets the hash `key` to `value`.
25687     *
25688     * @private
25689     * @name set
25690     * @memberOf Hash
25691     * @param {string} key The key of the value to set.
25692     * @param {*} value The value to set.
25693     * @returns {Object} Returns the hash instance.
25694     */
25695    function hashSet(key, value) {
25696      var data = this.__data__;
25697      this.size += this.has(key) ? 0 : 1;
25698      data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
25699      return this;
25700    }
25701
25702    // Add methods to `Hash`.
25703    Hash.prototype.clear = hashClear;
25704    Hash.prototype['delete'] = hashDelete;
25705    Hash.prototype.get = hashGet;
25706    Hash.prototype.has = hashHas;
25707    Hash.prototype.set = hashSet;
25708
25709    /*------------------------------------------------------------------------*/
25710
25711    /**
25712     * Creates an list cache object.
25713     *
25714     * @private
25715     * @constructor
25716     * @param {Array} [entries] The key-value pairs to cache.
25717     */
25718    function ListCache(entries) {
25719      var index = -1,
25720          length = entries == null ? 0 : entries.length;
25721
25722      this.clear();
25723      while (++index < length) {
25724        var entry = entries[index];
25725        this.set(entry[0], entry[1]);
25726      }
25727    }
25728
25729    /**
25730     * Removes all key-value entries from the list cache.
25731     *
25732     * @private
25733     * @name clear
25734     * @memberOf ListCache
25735     */
25736    function listCacheClear() {
25737      this.__data__ = [];
25738      this.size = 0;
25739    }
25740
25741    /**
25742     * Removes `key` and its value from the list cache.
25743     *
25744     * @private
25745     * @name delete
25746     * @memberOf ListCache
25747     * @param {string} key The key of the value to remove.
25748     * @returns {boolean} Returns `true` if the entry was removed, else `false`.
25749     */
25750    function listCacheDelete(key) {
25751      var data = this.__data__,
25752          index = assocIndexOf(data, key);
25753
25754      if (index < 0) {
25755        return false;
25756      }
25757      var lastIndex = data.length - 1;
25758      if (index == lastIndex) {
25759        data.pop();
25760      } else {
25761        splice.call(data, index, 1);
25762      }
25763      --this.size;
25764      return true;
25765    }
25766
25767    /**
25768     * Gets the list cache value for `key`.
25769     *
25770     * @private
25771     * @name get
25772     * @memberOf ListCache
25773     * @param {string} key The key of the value to get.
25774     * @returns {*} Returns the entry value.
25775     */
25776    function listCacheGet(key) {
25777      var data = this.__data__,
25778          index = assocIndexOf(data, key);
25779
25780      return index < 0 ? undefined : data[index][1];
25781    }
25782
25783    /**
25784     * Checks if a list cache value for `key` exists.
25785     *
25786     * @private
25787     * @name has
25788     * @memberOf ListCache
25789     * @param {string} key The key of the entry to check.
25790     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
25791     */
25792    function listCacheHas(key) {
25793      return assocIndexOf(this.__data__, key) > -1;
25794    }
25795
25796    /**
25797     * Sets the list cache `key` to `value`.
25798     *
25799     * @private
25800     * @name set
25801     * @memberOf ListCache
25802     * @param {string} key The key of the value to set.
25803     * @param {*} value The value to set.
25804     * @returns {Object} Returns the list cache instance.
25805     */
25806    function listCacheSet(key, value) {
25807      var data = this.__data__,
25808          index = assocIndexOf(data, key);
25809
25810      if (index < 0) {
25811        ++this.size;
25812        data.push([key, value]);
25813      } else {
25814        data[index][1] = value;
25815      }
25816      return this;
25817    }
25818
25819    // Add methods to `ListCache`.
25820    ListCache.prototype.clear = listCacheClear;
25821    ListCache.prototype['delete'] = listCacheDelete;
25822    ListCache.prototype.get = listCacheGet;
25823    ListCache.prototype.has = listCacheHas;
25824    ListCache.prototype.set = listCacheSet;
25825
25826    /*------------------------------------------------------------------------*/
25827
25828    /**
25829     * Creates a map cache object to store key-value pairs.
25830     *
25831     * @private
25832     * @constructor
25833     * @param {Array} [entries] The key-value pairs to cache.
25834     */
25835    function MapCache(entries) {
25836      var index = -1,
25837          length = entries == null ? 0 : entries.length;
25838
25839      this.clear();
25840      while (++index < length) {
25841        var entry = entries[index];
25842        this.set(entry[0], entry[1]);
25843      }
25844    }
25845
25846    /**
25847     * Removes all key-value entries from the map.
25848     *
25849     * @private
25850     * @name clear
25851     * @memberOf MapCache
25852     */
25853    function mapCacheClear() {
25854      this.size = 0;
25855      this.__data__ = {
25856        'hash': new Hash,
25857        'map': new (Map || ListCache),
25858        'string': new Hash
25859      };
25860    }
25861
25862    /**
25863     * Removes `key` and its value from the map.
25864     *
25865     * @private
25866     * @name delete
25867     * @memberOf MapCache
25868     * @param {string} key The key of the value to remove.
25869     * @returns {boolean} Returns `true` if the entry was removed, else `false`.
25870     */
25871    function mapCacheDelete(key) {
25872      var result = getMapData(this, key)['delete'](key);
25873      this.size -= result ? 1 : 0;
25874      return result;
25875    }
25876
25877    /**
25878     * Gets the map value for `key`.
25879     *
25880     * @private
25881     * @name get
25882     * @memberOf MapCache
25883     * @param {string} key The key of the value to get.
25884     * @returns {*} Returns the entry value.
25885     */
25886    function mapCacheGet(key) {
25887      return getMapData(this, key).get(key);
25888    }
25889
25890    /**
25891     * Checks if a map value for `key` exists.
25892     *
25893     * @private
25894     * @name has
25895     * @memberOf MapCache
25896     * @param {string} key The key of the entry to check.
25897     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
25898     */
25899    function mapCacheHas(key) {
25900      return getMapData(this, key).has(key);
25901    }
25902
25903    /**
25904     * Sets the map `key` to `value`.
25905     *
25906     * @private
25907     * @name set
25908     * @memberOf MapCache
25909     * @param {string} key The key of the value to set.
25910     * @param {*} value The value to set.
25911     * @returns {Object} Returns the map cache instance.
25912     */
25913    function mapCacheSet(key, value) {
25914      var data = getMapData(this, key),
25915          size = data.size;
25916
25917      data.set(key, value);
25918      this.size += data.size == size ? 0 : 1;
25919      return this;
25920    }
25921
25922    // Add methods to `MapCache`.
25923    MapCache.prototype.clear = mapCacheClear;
25924    MapCache.prototype['delete'] = mapCacheDelete;
25925    MapCache.prototype.get = mapCacheGet;
25926    MapCache.prototype.has = mapCacheHas;
25927    MapCache.prototype.set = mapCacheSet;
25928
25929    /*------------------------------------------------------------------------*/
25930
25931    /**
25932     *
25933     * Creates an array cache object to store unique values.
25934     *
25935     * @private
25936     * @constructor
25937     * @param {Array} [values] The values to cache.
25938     */
25939    function SetCache(values) {
25940      var index = -1,
25941          length = values == null ? 0 : values.length;
25942
25943      this.__data__ = new MapCache;
25944      while (++index < length) {
25945        this.add(values[index]);
25946      }
25947    }
25948
25949    /**
25950     * Adds `value` to the array cache.
25951     *
25952     * @private
25953     * @name add
25954     * @memberOf SetCache
25955     * @alias push
25956     * @param {*} value The value to cache.
25957     * @returns {Object} Returns the cache instance.
25958     */
25959    function setCacheAdd(value) {
25960      this.__data__.set(value, HASH_UNDEFINED);
25961      return this;
25962    }
25963
25964    /**
25965     * Checks if `value` is in the array cache.
25966     *
25967     * @private
25968     * @name has
25969     * @memberOf SetCache
25970     * @param {*} value The value to search for.
25971     * @returns {number} Returns `true` if `value` is found, else `false`.
25972     */
25973    function setCacheHas(value) {
25974      return this.__data__.has(value);
25975    }
25976
25977    // Add methods to `SetCache`.
25978    SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
25979    SetCache.prototype.has = setCacheHas;
25980
25981    /*------------------------------------------------------------------------*/
25982
25983    /**
25984     * Creates a stack cache object to store key-value pairs.
25985     *
25986     * @private
25987     * @constructor
25988     * @param {Array} [entries] The key-value pairs to cache.
25989     */
25990    function Stack(entries) {
25991      var data = this.__data__ = new ListCache(entries);
25992      this.size = data.size;
25993    }
25994
25995    /**
25996     * Removes all key-value entries from the stack.
25997     *
25998     * @private
25999     * @name clear
26000     * @memberOf Stack
26001     */
26002    function stackClear() {
26003      this.__data__ = new ListCache;
26004      this.size = 0;
26005    }
26006
26007    /**
26008     * Removes `key` and its value from the stack.
26009     *
26010     * @private
26011     * @name delete
26012     * @memberOf Stack
26013     * @param {string} key The key of the value to remove.
26014     * @returns {boolean} Returns `true` if the entry was removed, else `false`.
26015     */
26016    function stackDelete(key) {
26017      var data = this.__data__,
26018          result = data['delete'](key);
26019
26020      this.size = data.size;
26021      return result;
26022    }
26023
26024    /**
26025     * Gets the stack value for `key`.
26026     *
26027     * @private
26028     * @name get
26029     * @memberOf Stack
26030     * @param {string} key The key of the value to get.
26031     * @returns {*} Returns the entry value.
26032     */
26033    function stackGet(key) {
26034      return this.__data__.get(key);
26035    }
26036
26037    /**
26038     * Checks if a stack value for `key` exists.
26039     *
26040     * @private
26041     * @name has
26042     * @memberOf Stack
26043     * @param {string} key The key of the entry to check.
26044     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
26045     */
26046    function stackHas(key) {
26047      return this.__data__.has(key);
26048    }
26049
26050    /**
26051     * Sets the stack `key` to `value`.
26052     *
26053     * @private
26054     * @name set
26055     * @memberOf Stack
26056     * @param {string} key The key of the value to set.
26057     * @param {*} value The value to set.
26058     * @returns {Object} Returns the stack cache instance.
26059     */
26060    function stackSet(key, value) {
26061      var data = this.__data__;
26062      if (data instanceof ListCache) {
26063        var pairs = data.__data__;
26064        if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {
26065          pairs.push([key, value]);
26066          this.size = ++data.size;
26067          return this;
26068        }
26069        data = this.__data__ = new MapCache(pairs);
26070      }
26071      data.set(key, value);
26072      this.size = data.size;
26073      return this;
26074    }
26075
26076    // Add methods to `Stack`.
26077    Stack.prototype.clear = stackClear;
26078    Stack.prototype['delete'] = stackDelete;
26079    Stack.prototype.get = stackGet;
26080    Stack.prototype.has = stackHas;
26081    Stack.prototype.set = stackSet;
26082
26083    /*------------------------------------------------------------------------*/
26084
26085    /**
26086     * Creates an array of the enumerable property names of the array-like `value`.
26087     *
26088     * @private
26089     * @param {*} value The value to query.
26090     * @param {boolean} inherited Specify returning inherited property names.
26091     * @returns {Array} Returns the array of property names.
26092     */
26093    function arrayLikeKeys(value, inherited) {
26094      var isArr = isArray(value),
26095          isArg = !isArr && isArguments(value),
26096          isBuff = !isArr && !isArg && isBuffer(value),
26097          isType = !isArr && !isArg && !isBuff && isTypedArray(value),
26098          skipIndexes = isArr || isArg || isBuff || isType,
26099          result = skipIndexes ? baseTimes(value.length, String) : [],
26100          length = result.length;
26101
26102      for (var key in value) {
26103        if ((inherited || hasOwnProperty.call(value, key)) &&
26104            !(skipIndexes && (
26105               // Safari 9 has enumerable `arguments.length` in strict mode.
26106               key == 'length' ||
26107               // Node.js 0.10 has enumerable non-index properties on buffers.
26108               (isBuff && (key == 'offset' || key == 'parent')) ||
26109               // PhantomJS 2 has enumerable non-index properties on typed arrays.
26110               (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||
26111               // Skip index properties.
26112               isIndex(key, length)
26113            ))) {
26114          result.push(key);
26115        }
26116      }
26117      return result;
26118    }
26119
26120    /**
26121     * A specialized version of `_.sample` for arrays.
26122     *
26123     * @private
26124     * @param {Array} array The array to sample.
26125     * @returns {*} Returns the random element.
26126     */
26127    function arraySample(array) {
26128      var length = array.length;
26129      return length ? array[baseRandom(0, length - 1)] : undefined;
26130    }
26131
26132    /**
26133     * A specialized version of `_.sampleSize` for arrays.
26134     *
26135     * @private
26136     * @param {Array} array The array to sample.
26137     * @param {number} n The number of elements to sample.
26138     * @returns {Array} Returns the random elements.
26139     */
26140    function arraySampleSize(array, n) {
26141      return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));
26142    }
26143
26144    /**
26145     * A specialized version of `_.shuffle` for arrays.
26146     *
26147     * @private
26148     * @param {Array} array The array to shuffle.
26149     * @returns {Array} Returns the new shuffled array.
26150     */
26151    function arrayShuffle(array) {
26152      return shuffleSelf(copyArray(array));
26153    }
26154
26155    /**
26156     * This function is like `assignValue` except that it doesn't assign
26157     * `undefined` values.
26158     *
26159     * @private
26160     * @param {Object} object The object to modify.
26161     * @param {string} key The key of the property to assign.
26162     * @param {*} value The value to assign.
26163     */
26164    function assignMergeValue(object, key, value) {
26165      if ((value !== undefined && !eq(object[key], value)) ||
26166          (value === undefined && !(key in object))) {
26167        baseAssignValue(object, key, value);
26168      }
26169    }
26170
26171    /**
26172     * Assigns `value` to `key` of `object` if the existing value is not equivalent
26173     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
26174     * for equality comparisons.
26175     *
26176     * @private
26177     * @param {Object} object The object to modify.
26178     * @param {string} key The key of the property to assign.
26179     * @param {*} value The value to assign.
26180     */
26181    function assignValue(object, key, value) {
26182      var objValue = object[key];
26183      if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||
26184          (value === undefined && !(key in object))) {
26185        baseAssignValue(object, key, value);
26186      }
26187    }
26188
26189    /**
26190     * Gets the index at which the `key` is found in `array` of key-value pairs.
26191     *
26192     * @private
26193     * @param {Array} array The array to inspect.
26194     * @param {*} key The key to search for.
26195     * @returns {number} Returns the index of the matched value, else `-1`.
26196     */
26197    function assocIndexOf(array, key) {
26198      var length = array.length;
26199      while (length--) {
26200        if (eq(array[length][0], key)) {
26201          return length;
26202        }
26203      }
26204      return -1;
26205    }
26206
26207    /**
26208     * Aggregates elements of `collection` on `accumulator` with keys transformed
26209     * by `iteratee` and values set by `setter`.
26210     *
26211     * @private
26212     * @param {Array|Object} collection The collection to iterate over.
26213     * @param {Function} setter The function to set `accumulator` values.
26214     * @param {Function} iteratee The iteratee to transform keys.
26215     * @param {Object} accumulator The initial aggregated object.
26216     * @returns {Function} Returns `accumulator`.
26217     */
26218    function baseAggregator(collection, setter, iteratee, accumulator) {
26219      baseEach(collection, function(value, key, collection) {
26220        setter(accumulator, value, iteratee(value), collection);
26221      });
26222      return accumulator;
26223    }
26224
26225    /**
26226     * The base implementation of `_.assign` without support for multiple sources
26227     * or `customizer` functions.
26228     *
26229     * @private
26230     * @param {Object} object The destination object.
26231     * @param {Object} source The source object.
26232     * @returns {Object} Returns `object`.
26233     */
26234    function baseAssign(object, source) {
26235      return object && copyObject(source, keys(source), object);
26236    }
26237
26238    /**
26239     * The base implementation of `_.assignIn` without support for multiple sources
26240     * or `customizer` functions.
26241     *
26242     * @private
26243     * @param {Object} object The destination object.
26244     * @param {Object} source The source object.
26245     * @returns {Object} Returns `object`.
26246     */
26247    function baseAssignIn(object, source) {
26248      return object && copyObject(source, keysIn(source), object);
26249    }
26250
26251    /**
26252     * The base implementation of `assignValue` and `assignMergeValue` without
26253     * value checks.
26254     *
26255     * @private
26256     * @param {Object} object The object to modify.
26257     * @param {string} key The key of the property to assign.
26258     * @param {*} value The value to assign.
26259     */
26260    function baseAssignValue(object, key, value) {
26261      if (key == '__proto__' && defineProperty) {
26262        defineProperty(object, key, {
26263          'configurable': true,
26264          'enumerable': true,
26265          'value': value,
26266          'writable': true
26267        });
26268      } else {
26269        object[key] = value;
26270      }
26271    }
26272
26273    /**
26274     * The base implementation of `_.at` without support for individual paths.
26275     *
26276     * @private
26277     * @param {Object} object The object to iterate over.
26278     * @param {string[]} paths The property paths to pick.
26279     * @returns {Array} Returns the picked elements.
26280     */
26281    function baseAt(object, paths) {
26282      var index = -1,
26283          length = paths.length,
26284          result = Array(length),
26285          skip = object == null;
26286
26287      while (++index < length) {
26288        result[index] = skip ? undefined : get(object, paths[index]);
26289      }
26290      return result;
26291    }
26292
26293    /**
26294     * The base implementation of `_.clamp` which doesn't coerce arguments.
26295     *
26296     * @private
26297     * @param {number} number The number to clamp.
26298     * @param {number} [lower] The lower bound.
26299     * @param {number} upper The upper bound.
26300     * @returns {number} Returns the clamped number.
26301     */
26302    function baseClamp(number, lower, upper) {
26303      if (number === number) {
26304        if (upper !== undefined) {
26305          number = number <= upper ? number : upper;
26306        }
26307        if (lower !== undefined) {
26308          number = number >= lower ? number : lower;
26309        }
26310      }
26311      return number;
26312    }
26313
26314    /**
26315     * The base implementation of `_.clone` and `_.cloneDeep` which tracks
26316     * traversed objects.
26317     *
26318     * @private
26319     * @param {*} value The value to clone.
26320     * @param {boolean} bitmask The bitmask flags.
26321     *  1 - Deep clone
26322     *  2 - Flatten inherited properties
26323     *  4 - Clone symbols
26324     * @param {Function} [customizer] The function to customize cloning.
26325     * @param {string} [key] The key of `value`.
26326     * @param {Object} [object] The parent object of `value`.
26327     * @param {Object} [stack] Tracks traversed objects and their clone counterparts.
26328     * @returns {*} Returns the cloned value.
26329     */
26330    function baseClone(value, bitmask, customizer, key, object, stack) {
26331      var result,
26332          isDeep = bitmask & CLONE_DEEP_FLAG,
26333          isFlat = bitmask & CLONE_FLAT_FLAG,
26334          isFull = bitmask & CLONE_SYMBOLS_FLAG;
26335
26336      if (customizer) {
26337        result = object ? customizer(value, key, object, stack) : customizer(value);
26338      }
26339      if (result !== undefined) {
26340        return result;
26341      }
26342      if (!isObject(value)) {
26343        return value;
26344      }
26345      var isArr = isArray(value);
26346      if (isArr) {
26347        result = initCloneArray(value);
26348        if (!isDeep) {
26349          return copyArray(value, result);
26350        }
26351      } else {
26352        var tag = getTag(value),
26353            isFunc = tag == funcTag || tag == genTag;
26354
26355        if (isBuffer(value)) {
26356          return cloneBuffer(value, isDeep);
26357        }
26358        if (tag == objectTag || tag == argsTag || (isFunc && !object)) {
26359          result = (isFlat || isFunc) ? {} : initCloneObject(value);
26360          if (!isDeep) {
26361            return isFlat
26362              ? copySymbolsIn(value, baseAssignIn(result, value))
26363              : copySymbols(value, baseAssign(result, value));
26364          }
26365        } else {
26366          if (!cloneableTags[tag]) {
26367            return object ? value : {};
26368          }
26369          result = initCloneByTag(value, tag, isDeep);
26370        }
26371      }
26372      // Check for circular references and return its corresponding clone.
26373      stack || (stack = new Stack);
26374      var stacked = stack.get(value);
26375      if (stacked) {
26376        return stacked;
26377      }
26378      stack.set(value, result);
26379
26380      if (isSet(value)) {
26381        value.forEach(function(subValue) {
26382          result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));
26383        });
26384      } else if (isMap(value)) {
26385        value.forEach(function(subValue, key) {
26386          result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));
26387        });
26388      }
26389
26390      var keysFunc = isFull
26391        ? (isFlat ? getAllKeysIn : getAllKeys)
26392        : (isFlat ? keysIn : keys);
26393
26394      var props = isArr ? undefined : keysFunc(value);
26395      arrayEach(props || value, function(subValue, key) {
26396        if (props) {
26397          key = subValue;
26398          subValue = value[key];
26399        }
26400        // Recursively populate clone (susceptible to call stack limits).
26401        assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));
26402      });
26403      return result;
26404    }
26405
26406    /**
26407     * The base implementation of `_.conforms` which doesn't clone `source`.
26408     *
26409     * @private
26410     * @param {Object} source The object of property predicates to conform to.
26411     * @returns {Function} Returns the new spec function.
26412     */
26413    function baseConforms(source) {
26414      var props = keys(source);
26415      return function(object) {
26416        return baseConformsTo(object, source, props);
26417      };
26418    }
26419
26420    /**
26421     * The base implementation of `_.conformsTo` which accepts `props` to check.
26422     *
26423     * @private
26424     * @param {Object} object The object to inspect.
26425     * @param {Object} source The object of property predicates to conform to.
26426     * @returns {boolean} Returns `true` if `object` conforms, else `false`.
26427     */
26428    function baseConformsTo(object, source, props) {
26429      var length = props.length;
26430      if (object == null) {
26431        return !length;
26432      }
26433      object = Object(object);
26434      while (length--) {
26435        var key = props[length],
26436            predicate = source[key],
26437            value = object[key];
26438
26439        if ((value === undefined && !(key in object)) || !predicate(value)) {
26440          return false;
26441        }
26442      }
26443      return true;
26444    }
26445
26446    /**
26447     * The base implementation of `_.delay` and `_.defer` which accepts `args`
26448     * to provide to `func`.
26449     *
26450     * @private
26451     * @param {Function} func The function to delay.
26452     * @param {number} wait The number of milliseconds to delay invocation.
26453     * @param {Array} args The arguments to provide to `func`.
26454     * @returns {number|Object} Returns the timer id or timeout object.
26455     */
26456    function baseDelay(func, wait, args) {
26457      if (typeof func != 'function') {
26458        throw new TypeError(FUNC_ERROR_TEXT);
26459      }
26460      return setTimeout(function() { func.apply(undefined, args); }, wait);
26461    }
26462
26463    /**
26464     * The base implementation of methods like `_.difference` without support
26465     * for excluding multiple arrays or iteratee shorthands.
26466     *
26467     * @private
26468     * @param {Array} array The array to inspect.
26469     * @param {Array} values The values to exclude.
26470     * @param {Function} [iteratee] The iteratee invoked per element.
26471     * @param {Function} [comparator] The comparator invoked per element.
26472     * @returns {Array} Returns the new array of filtered values.
26473     */
26474    function baseDifference(array, values, iteratee, comparator) {
26475      var index = -1,
26476          includes = arrayIncludes,
26477          isCommon = true,
26478          length = array.length,
26479          result = [],
26480          valuesLength = values.length;
26481
26482      if (!length) {
26483        return result;
26484      }
26485      if (iteratee) {
26486        values = arrayMap(values, baseUnary(iteratee));
26487      }
26488      if (comparator) {
26489        includes = arrayIncludesWith;
26490        isCommon = false;
26491      }
26492      else if (values.length >= LARGE_ARRAY_SIZE) {
26493        includes = cacheHas;
26494        isCommon = false;
26495        values = new SetCache(values);
26496      }
26497      outer:
26498      while (++index < length) {
26499        var value = array[index],
26500            computed = iteratee == null ? value : iteratee(value);
26501
26502        value = (comparator || value !== 0) ? value : 0;
26503        if (isCommon && computed === computed) {
26504          var valuesIndex = valuesLength;
26505          while (valuesIndex--) {
26506            if (values[valuesIndex] === computed) {
26507              continue outer;
26508            }
26509          }
26510          result.push(value);
26511        }
26512        else if (!includes(values, computed, comparator)) {
26513          result.push(value);
26514        }
26515      }
26516      return result;
26517    }
26518
26519    /**
26520     * The base implementation of `_.forEach` without support for iteratee shorthands.
26521     *
26522     * @private
26523     * @param {Array|Object} collection The collection to iterate over.
26524     * @param {Function} iteratee The function invoked per iteration.
26525     * @returns {Array|Object} Returns `collection`.
26526     */
26527    var baseEach = createBaseEach(baseForOwn);
26528
26529    /**
26530     * The base implementation of `_.forEachRight` without support for iteratee shorthands.
26531     *
26532     * @private
26533     * @param {Array|Object} collection The collection to iterate over.
26534     * @param {Function} iteratee The function invoked per iteration.
26535     * @returns {Array|Object} Returns `collection`.
26536     */
26537    var baseEachRight = createBaseEach(baseForOwnRight, true);
26538
26539    /**
26540     * The base implementation of `_.every` without support for iteratee shorthands.
26541     *
26542     * @private
26543     * @param {Array|Object} collection The collection to iterate over.
26544     * @param {Function} predicate The function invoked per iteration.
26545     * @returns {boolean} Returns `true` if all elements pass the predicate check,
26546     *  else `false`
26547     */
26548    function baseEvery(collection, predicate) {
26549      var result = true;
26550      baseEach(collection, function(value, index, collection) {
26551        result = !!predicate(value, index, collection);
26552        return result;
26553      });
26554      return result;
26555    }
26556
26557    /**
26558     * The base implementation of methods like `_.max` and `_.min` which accepts a
26559     * `comparator` to determine the extremum value.
26560     *
26561     * @private
26562     * @param {Array} array The array to iterate over.
26563     * @param {Function} iteratee The iteratee invoked per iteration.
26564     * @param {Function} comparator The comparator used to compare values.
26565     * @returns {*} Returns the extremum value.
26566     */
26567    function baseExtremum(array, iteratee, comparator) {
26568      var index = -1,
26569          length = array.length;
26570
26571      while (++index < length) {
26572        var value = array[index],
26573            current = iteratee(value);
26574
26575        if (current != null && (computed === undefined
26576              ? (current === current && !isSymbol(current))
26577              : comparator(current, computed)
26578            )) {
26579          var computed = current,
26580              result = value;
26581        }
26582      }
26583      return result;
26584    }
26585
26586    /**
26587     * The base implementation of `_.fill` without an iteratee call guard.
26588     *
26589     * @private
26590     * @param {Array} array The array to fill.
26591     * @param {*} value The value to fill `array` with.
26592     * @param {number} [start=0] The start position.
26593     * @param {number} [end=array.length] The end position.
26594     * @returns {Array} Returns `array`.
26595     */
26596    function baseFill(array, value, start, end) {
26597      var length = array.length;
26598
26599      start = toInteger(start);
26600      if (start < 0) {
26601        start = -start > length ? 0 : (length + start);
26602      }
26603      end = (end === undefined || end > length) ? length : toInteger(end);
26604      if (end < 0) {
26605        end += length;
26606      }
26607      end = start > end ? 0 : toLength(end);
26608      while (start < end) {
26609        array[start++] = value;
26610      }
26611      return array;
26612    }
26613
26614    /**
26615     * The base implementation of `_.filter` without support for iteratee shorthands.
26616     *
26617     * @private
26618     * @param {Array|Object} collection The collection to iterate over.
26619     * @param {Function} predicate The function invoked per iteration.
26620     * @returns {Array} Returns the new filtered array.
26621     */
26622    function baseFilter(collection, predicate) {
26623      var result = [];
26624      baseEach(collection, function(value, index, collection) {
26625        if (predicate(value, index, collection)) {
26626          result.push(value);
26627        }
26628      });
26629      return result;
26630    }
26631
26632    /**
26633     * The base implementation of `_.flatten` with support for restricting flattening.
26634     *
26635     * @private
26636     * @param {Array} array The array to flatten.
26637     * @param {number} depth The maximum recursion depth.
26638     * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.
26639     * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.
26640     * @param {Array} [result=[]] The initial result value.
26641     * @returns {Array} Returns the new flattened array.
26642     */
26643    function baseFlatten(array, depth, predicate, isStrict, result) {
26644      var index = -1,
26645          length = array.length;
26646
26647      predicate || (predicate = isFlattenable);
26648      result || (result = []);
26649
26650      while (++index < length) {
26651        var value = array[index];
26652        if (depth > 0 && predicate(value)) {
26653          if (depth > 1) {
26654            // Recursively flatten arrays (susceptible to call stack limits).
26655            baseFlatten(value, depth - 1, predicate, isStrict, result);
26656          } else {
26657            arrayPush(result, value);
26658          }
26659        } else if (!isStrict) {
26660          result[result.length] = value;
26661        }
26662      }
26663      return result;
26664    }
26665
26666    /**
26667     * The base implementation of `baseForOwn` which iterates over `object`
26668     * properties returned by `keysFunc` and invokes `iteratee` for each property.
26669     * Iteratee functions may exit iteration early by explicitly returning `false`.
26670     *
26671     * @private
26672     * @param {Object} object The object to iterate over.
26673     * @param {Function} iteratee The function invoked per iteration.
26674     * @param {Function} keysFunc The function to get the keys of `object`.
26675     * @returns {Object} Returns `object`.
26676     */
26677    var baseFor = createBaseFor();
26678
26679    /**
26680     * This function is like `baseFor` except that it iterates over properties
26681     * in the opposite order.
26682     *
26683     * @private
26684     * @param {Object} object The object to iterate over.
26685     * @param {Function} iteratee The function invoked per iteration.
26686     * @param {Function} keysFunc The function to get the keys of `object`.
26687     * @returns {Object} Returns `object`.
26688     */
26689    var baseForRight = createBaseFor(true);
26690
26691    /**
26692     * The base implementation of `_.forOwn` without support for iteratee shorthands.
26693     *
26694     * @private
26695     * @param {Object} object The object to iterate over.
26696     * @param {Function} iteratee The function invoked per iteration.
26697     * @returns {Object} Returns `object`.
26698     */
26699    function baseForOwn(object, iteratee) {
26700      return object && baseFor(object, iteratee, keys);
26701    }
26702
26703    /**
26704     * The base implementation of `_.forOwnRight` without support for iteratee shorthands.
26705     *
26706     * @private
26707     * @param {Object} object The object to iterate over.
26708     * @param {Function} iteratee The function invoked per iteration.
26709     * @returns {Object} Returns `object`.
26710     */
26711    function baseForOwnRight(object, iteratee) {
26712      return object && baseForRight(object, iteratee, keys);
26713    }
26714
26715    /**
26716     * The base implementation of `_.functions` which creates an array of
26717     * `object` function property names filtered from `props`.
26718     *
26719     * @private
26720     * @param {Object} object The object to inspect.
26721     * @param {Array} props The property names to filter.
26722     * @returns {Array} Returns the function names.
26723     */
26724    function baseFunctions(object, props) {
26725      return arrayFilter(props, function(key) {
26726        return isFunction(object[key]);
26727      });
26728    }
26729
26730    /**
26731     * The base implementation of `_.get` without support for default values.
26732     *
26733     * @private
26734     * @param {Object} object The object to query.
26735     * @param {Array|string} path The path of the property to get.
26736     * @returns {*} Returns the resolved value.
26737     */
26738    function baseGet(object, path) {
26739      path = castPath(path, object);
26740
26741      var index = 0,
26742          length = path.length;
26743
26744      while (object != null && index < length) {
26745        object = object[toKey(path[index++])];
26746      }
26747      return (index && index == length) ? object : undefined;
26748    }
26749
26750    /**
26751     * The base implementation of `getAllKeys` and `getAllKeysIn` which uses
26752     * `keysFunc` and `symbolsFunc` to get the enumerable property names and
26753     * symbols of `object`.
26754     *
26755     * @private
26756     * @param {Object} object The object to query.
26757     * @param {Function} keysFunc The function to get the keys of `object`.
26758     * @param {Function} symbolsFunc The function to get the symbols of `object`.
26759     * @returns {Array} Returns the array of property names and symbols.
26760     */
26761    function baseGetAllKeys(object, keysFunc, symbolsFunc) {
26762      var result = keysFunc(object);
26763      return isArray(object) ? result : arrayPush(result, symbolsFunc(object));
26764    }
26765
26766    /**
26767     * The base implementation of `getTag` without fallbacks for buggy environments.
26768     *
26769     * @private
26770     * @param {*} value The value to query.
26771     * @returns {string} Returns the `toStringTag`.
26772     */
26773    function baseGetTag(value) {
26774      if (value == null) {
26775        return value === undefined ? undefinedTag : nullTag;
26776      }
26777      return (symToStringTag && symToStringTag in Object(value))
26778        ? getRawTag(value)
26779        : objectToString(value);
26780    }
26781
26782    /**
26783     * The base implementation of `_.gt` which doesn't coerce arguments.
26784     *
26785     * @private
26786     * @param {*} value The value to compare.
26787     * @param {*} other The other value to compare.
26788     * @returns {boolean} Returns `true` if `value` is greater than `other`,
26789     *  else `false`.
26790     */
26791    function baseGt(value, other) {
26792      return value > other;
26793    }
26794
26795    /**
26796     * The base implementation of `_.has` without support for deep paths.
26797     *
26798     * @private
26799     * @param {Object} [object] The object to query.
26800     * @param {Array|string} key The key to check.
26801     * @returns {boolean} Returns `true` if `key` exists, else `false`.
26802     */
26803    function baseHas(object, key) {
26804      return object != null && hasOwnProperty.call(object, key);
26805    }
26806
26807    /**
26808     * The base implementation of `_.hasIn` without support for deep paths.
26809     *
26810     * @private
26811     * @param {Object} [object] The object to query.
26812     * @param {Array|string} key The key to check.
26813     * @returns {boolean} Returns `true` if `key` exists, else `false`.
26814     */
26815    function baseHasIn(object, key) {
26816      return object != null && key in Object(object);
26817    }
26818
26819    /**
26820     * The base implementation of `_.inRange` which doesn't coerce arguments.
26821     *
26822     * @private
26823     * @param {number} number The number to check.
26824     * @param {number} start The start of the range.
26825     * @param {number} end The end of the range.
26826     * @returns {boolean} Returns `true` if `number` is in the range, else `false`.
26827     */
26828    function baseInRange(number, start, end) {
26829      return number >= nativeMin(start, end) && number < nativeMax(start, end);
26830    }
26831
26832    /**
26833     * The base implementation of methods like `_.intersection`, without support
26834     * for iteratee shorthands, that accepts an array of arrays to inspect.
26835     *
26836     * @private
26837     * @param {Array} arrays The arrays to inspect.
26838     * @param {Function} [iteratee] The iteratee invoked per element.
26839     * @param {Function} [comparator] The comparator invoked per element.
26840     * @returns {Array} Returns the new array of shared values.
26841     */
26842    function baseIntersection(arrays, iteratee, comparator) {
26843      var includes = comparator ? arrayIncludesWith : arrayIncludes,
26844          length = arrays[0].length,
26845          othLength = arrays.length,
26846          othIndex = othLength,
26847          caches = Array(othLength),
26848          maxLength = Infinity,
26849          result = [];
26850
26851      while (othIndex--) {
26852        var array = arrays[othIndex];
26853        if (othIndex && iteratee) {
26854          array = arrayMap(array, baseUnary(iteratee));
26855        }
26856        maxLength = nativeMin(array.length, maxLength);
26857        caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))
26858          ? new SetCache(othIndex && array)
26859          : undefined;
26860      }
26861      array = arrays[0];
26862
26863      var index = -1,
26864          seen = caches[0];
26865
26866      outer:
26867      while (++index < length && result.length < maxLength) {
26868        var value = array[index],
26869            computed = iteratee ? iteratee(value) : value;
26870
26871        value = (comparator || value !== 0) ? value : 0;
26872        if (!(seen
26873              ? cacheHas(seen, computed)
26874              : includes(result, computed, comparator)
26875            )) {
26876          othIndex = othLength;
26877          while (--othIndex) {
26878            var cache = caches[othIndex];
26879            if (!(cache
26880                  ? cacheHas(cache, computed)
26881                  : includes(arrays[othIndex], computed, comparator))
26882                ) {
26883              continue outer;
26884            }
26885          }
26886          if (seen) {
26887            seen.push(computed);
26888          }
26889          result.push(value);
26890        }
26891      }
26892      return result;
26893    }
26894
26895    /**
26896     * The base implementation of `_.invert` and `_.invertBy` which inverts
26897     * `object` with values transformed by `iteratee` and set by `setter`.
26898     *
26899     * @private
26900     * @param {Object} object The object to iterate over.
26901     * @param {Function} setter The function to set `accumulator` values.
26902     * @param {Function} iteratee The iteratee to transform values.
26903     * @param {Object} accumulator The initial inverted object.
26904     * @returns {Function} Returns `accumulator`.
26905     */
26906    function baseInverter(object, setter, iteratee, accumulator) {
26907      baseForOwn(object, function(value, key, object) {
26908        setter(accumulator, iteratee(value), key, object);
26909      });
26910      return accumulator;
26911    }
26912
26913    /**
26914     * The base implementation of `_.invoke` without support for individual
26915     * method arguments.
26916     *
26917     * @private
26918     * @param {Object} object The object to query.
26919     * @param {Array|string} path The path of the method to invoke.
26920     * @param {Array} args The arguments to invoke the method with.
26921     * @returns {*} Returns the result of the invoked method.
26922     */
26923    function baseInvoke(object, path, args) {
26924      path = castPath(path, object);
26925      object = parent(object, path);
26926      var func = object == null ? object : object[toKey(last(path))];
26927      return func == null ? undefined : apply(func, object, args);
26928    }
26929
26930    /**
26931     * The base implementation of `_.isArguments`.
26932     *
26933     * @private
26934     * @param {*} value The value to check.
26935     * @returns {boolean} Returns `true` if `value` is an `arguments` object,
26936     */
26937    function baseIsArguments(value) {
26938      return isObjectLike(value) && baseGetTag(value) == argsTag;
26939    }
26940
26941    /**
26942     * The base implementation of `_.isArrayBuffer` without Node.js optimizations.
26943     *
26944     * @private
26945     * @param {*} value The value to check.
26946     * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.
26947     */
26948    function baseIsArrayBuffer(value) {
26949      return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;
26950    }
26951
26952    /**
26953     * The base implementation of `_.isDate` without Node.js optimizations.
26954     *
26955     * @private
26956     * @param {*} value The value to check.
26957     * @returns {boolean} Returns `true` if `value` is a date object, else `false`.
26958     */
26959    function baseIsDate(value) {
26960      return isObjectLike(value) && baseGetTag(value) == dateTag;
26961    }
26962
26963    /**
26964     * The base implementation of `_.isEqual` which supports partial comparisons
26965     * and tracks traversed objects.
26966     *
26967     * @private
26968     * @param {*} value The value to compare.
26969     * @param {*} other The other value to compare.
26970     * @param {boolean} bitmask The bitmask flags.
26971     *  1 - Unordered comparison
26972     *  2 - Partial comparison
26973     * @param {Function} [customizer] The function to customize comparisons.
26974     * @param {Object} [stack] Tracks traversed `value` and `other` objects.
26975     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
26976     */
26977    function baseIsEqual(value, other, bitmask, customizer, stack) {
26978      if (value === other) {
26979        return true;
26980      }
26981      if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {
26982        return value !== value && other !== other;
26983      }
26984      return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
26985    }
26986
26987    /**
26988     * A specialized version of `baseIsEqual` for arrays and objects which performs
26989     * deep comparisons and tracks traversed objects enabling objects with circular
26990     * references to be compared.
26991     *
26992     * @private
26993     * @param {Object} object The object to compare.
26994     * @param {Object} other The other object to compare.
26995     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
26996     * @param {Function} customizer The function to customize comparisons.
26997     * @param {Function} equalFunc The function to determine equivalents of values.
26998     * @param {Object} [stack] Tracks traversed `object` and `other` objects.
26999     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
27000     */
27001    function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
27002      var objIsArr = isArray(object),
27003          othIsArr = isArray(other),
27004          objTag = objIsArr ? arrayTag : getTag(object),
27005          othTag = othIsArr ? arrayTag : getTag(other);
27006
27007      objTag = objTag == argsTag ? objectTag : objTag;
27008      othTag = othTag == argsTag ? objectTag : othTag;
27009
27010      var objIsObj = objTag == objectTag,
27011          othIsObj = othTag == objectTag,
27012          isSameTag = objTag == othTag;
27013
27014      if (isSameTag && isBuffer(object)) {
27015        if (!isBuffer(other)) {
27016          return false;
27017        }
27018        objIsArr = true;
27019        objIsObj = false;
27020      }
27021      if (isSameTag && !objIsObj) {
27022        stack || (stack = new Stack);
27023        return (objIsArr || isTypedArray(object))
27024          ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)
27025          : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
27026      }
27027      if (!(bitmask & COMPARE_PARTIAL_FLAG)) {
27028        var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
27029            othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');
27030
27031        if (objIsWrapped || othIsWrapped) {
27032          var objUnwrapped = objIsWrapped ? object.value() : object,
27033              othUnwrapped = othIsWrapped ? other.value() : other;
27034
27035          stack || (stack = new Stack);
27036          return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
27037        }
27038      }
27039      if (!isSameTag) {
27040        return false;
27041      }
27042      stack || (stack = new Stack);
27043      return equalObjects(object, other, bitmask, customizer, equalFunc, stack);
27044    }
27045
27046    /**
27047     * The base implementation of `_.isMap` without Node.js optimizations.
27048     *
27049     * @private
27050     * @param {*} value The value to check.
27051     * @returns {boolean} Returns `true` if `value` is a map, else `false`.
27052     */
27053    function baseIsMap(value) {
27054      return isObjectLike(value) && getTag(value) == mapTag;
27055    }
27056
27057    /**
27058     * The base implementation of `_.isMatch` without support for iteratee shorthands.
27059     *
27060     * @private
27061     * @param {Object} object The object to inspect.
27062     * @param {Object} source The object of property values to match.
27063     * @param {Array} matchData The property names, values, and compare flags to match.
27064     * @param {Function} [customizer] The function to customize comparisons.
27065     * @returns {boolean} Returns `true` if `object` is a match, else `false`.
27066     */
27067    function baseIsMatch(object, source, matchData, customizer) {
27068      var index = matchData.length,
27069          length = index,
27070          noCustomizer = !customizer;
27071
27072      if (object == null) {
27073        return !length;
27074      }
27075      object = Object(object);
27076      while (index--) {
27077        var data = matchData[index];
27078        if ((noCustomizer && data[2])
27079              ? data[1] !== object[data[0]]
27080              : !(data[0] in object)
27081            ) {
27082          return false;
27083        }
27084      }
27085      while (++index < length) {
27086        data = matchData[index];
27087        var key = data[0],
27088            objValue = object[key],
27089            srcValue = data[1];
27090
27091        if (noCustomizer && data[2]) {
27092          if (objValue === undefined && !(key in object)) {
27093            return false;
27094          }
27095        } else {
27096          var stack = new Stack;
27097          if (customizer) {
27098            var result = customizer(objValue, srcValue, key, object, source, stack);
27099          }
27100          if (!(result === undefined
27101                ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)
27102                : result
27103              )) {
27104            return false;
27105          }
27106        }
27107      }
27108      return true;
27109    }
27110
27111    /**
27112     * The base implementation of `_.isNative` without bad shim checks.
27113     *
27114     * @private
27115     * @param {*} value The value to check.
27116     * @returns {boolean} Returns `true` if `value` is a native function,
27117     *  else `false`.
27118     */
27119    function baseIsNative(value) {
27120      if (!isObject(value) || isMasked(value)) {
27121        return false;
27122      }
27123      var pattern = isFunction(value) ? reIsNative : reIsHostCtor;
27124      return pattern.test(toSource(value));
27125    }
27126
27127    /**
27128     * The base implementation of `_.isRegExp` without Node.js optimizations.
27129     *
27130     * @private
27131     * @param {*} value The value to check.
27132     * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.
27133     */
27134    function baseIsRegExp(value) {
27135      return isObjectLike(value) && baseGetTag(value) == regexpTag;
27136    }
27137
27138    /**
27139     * The base implementation of `_.isSet` without Node.js optimizations.
27140     *
27141     * @private
27142     * @param {*} value The value to check.
27143     * @returns {boolean} Returns `true` if `value` is a set, else `false`.
27144     */
27145    function baseIsSet(value) {
27146      return isObjectLike(value) && getTag(value) == setTag;
27147    }
27148
27149    /**
27150     * The base implementation of `_.isTypedArray` without Node.js optimizations.
27151     *
27152     * @private
27153     * @param {*} value The value to check.
27154     * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
27155     */
27156    function baseIsTypedArray(value) {
27157      return isObjectLike(value) &&
27158        isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
27159    }
27160
27161    /**
27162     * The base implementation of `_.iteratee`.
27163     *
27164     * @private
27165     * @param {*} [value=_.identity] The value to convert to an iteratee.
27166     * @returns {Function} Returns the iteratee.
27167     */
27168    function baseIteratee(value) {
27169      // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.
27170      // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.
27171      if (typeof value == 'function') {
27172        return value;
27173      }
27174      if (value == null) {
27175        return identity;
27176      }
27177      if (typeof value == 'object') {
27178        return isArray(value)
27179          ? baseMatchesProperty(value[0], value[1])
27180          : baseMatches(value);
27181      }
27182      return property(value);
27183    }
27184
27185    /**
27186     * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
27187     *
27188     * @private
27189     * @param {Object} object The object to query.
27190     * @returns {Array} Returns the array of property names.
27191     */
27192    function baseKeys(object) {
27193      if (!isPrototype(object)) {
27194        return nativeKeys(object);
27195      }
27196      var result = [];
27197      for (var key in Object(object)) {
27198        if (hasOwnProperty.call(object, key) && key != 'constructor') {
27199          result.push(key);
27200        }
27201      }
27202      return result;
27203    }
27204
27205    /**
27206     * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.
27207     *
27208     * @private
27209     * @param {Object} object The object to query.
27210     * @returns {Array} Returns the array of property names.
27211     */
27212    function baseKeysIn(object) {
27213      if (!isObject(object)) {
27214        return nativeKeysIn(object);
27215      }
27216      var isProto = isPrototype(object),
27217          result = [];
27218
27219      for (var key in object) {
27220        if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {
27221          result.push(key);
27222        }
27223      }
27224      return result;
27225    }
27226
27227    /**
27228     * The base implementation of `_.lt` which doesn't coerce arguments.
27229     *
27230     * @private
27231     * @param {*} value The value to compare.
27232     * @param {*} other The other value to compare.
27233     * @returns {boolean} Returns `true` if `value` is less than `other`,
27234     *  else `false`.
27235     */
27236    function baseLt(value, other) {
27237      return value < other;
27238    }
27239
27240    /**
27241     * The base implementation of `_.map` without support for iteratee shorthands.
27242     *
27243     * @private
27244     * @param {Array|Object} collection The collection to iterate over.
27245     * @param {Function} iteratee The function invoked per iteration.
27246     * @returns {Array} Returns the new mapped array.
27247     */
27248    function baseMap(collection, iteratee) {
27249      var index = -1,
27250          result = isArrayLike(collection) ? Array(collection.length) : [];
27251
27252      baseEach(collection, function(value, key, collection) {
27253        result[++index] = iteratee(value, key, collection);
27254      });
27255      return result;
27256    }
27257
27258    /**
27259     * The base implementation of `_.matches` which doesn't clone `source`.
27260     *
27261     * @private
27262     * @param {Object} source The object of property values to match.
27263     * @returns {Function} Returns the new spec function.
27264     */
27265    function baseMatches(source) {
27266      var matchData = getMatchData(source);
27267      if (matchData.length == 1 && matchData[0][2]) {
27268        return matchesStrictComparable(matchData[0][0], matchData[0][1]);
27269      }
27270      return function(object) {
27271        return object === source || baseIsMatch(object, source, matchData);
27272      };
27273    }
27274
27275    /**
27276     * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.
27277     *
27278     * @private
27279     * @param {string} path The path of the property to get.
27280     * @param {*} srcValue The value to match.
27281     * @returns {Function} Returns the new spec function.
27282     */
27283    function baseMatchesProperty(path, srcValue) {
27284      if (isKey(path) && isStrictComparable(srcValue)) {
27285        return matchesStrictComparable(toKey(path), srcValue);
27286      }
27287      return function(object) {
27288        var objValue = get(object, path);
27289        return (objValue === undefined && objValue === srcValue)
27290          ? hasIn(object, path)
27291          : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);
27292      };
27293    }
27294
27295    /**
27296     * The base implementation of `_.merge` without support for multiple sources.
27297     *
27298     * @private
27299     * @param {Object} object The destination object.
27300     * @param {Object} source The source object.
27301     * @param {number} srcIndex The index of `source`.
27302     * @param {Function} [customizer] The function to customize merged values.
27303     * @param {Object} [stack] Tracks traversed source values and their merged
27304     *  counterparts.
27305     */
27306    function baseMerge(object, source, srcIndex, customizer, stack) {
27307      if (object === source) {
27308        return;
27309      }
27310      baseFor(source, function(srcValue, key) {
27311        stack || (stack = new Stack);
27312        if (isObject(srcValue)) {
27313          baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);
27314        }
27315        else {
27316          var newValue = customizer
27317            ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)
27318            : undefined;
27319
27320          if (newValue === undefined) {
27321            newValue = srcValue;
27322          }
27323          assignMergeValue(object, key, newValue);
27324        }
27325      }, keysIn);
27326    }
27327
27328    /**
27329     * A specialized version of `baseMerge` for arrays and objects which performs
27330     * deep merges and tracks traversed objects enabling objects with circular
27331     * references to be merged.
27332     *
27333     * @private
27334     * @param {Object} object The destination object.
27335     * @param {Object} source The source object.
27336     * @param {string} key The key of the value to merge.
27337     * @param {number} srcIndex The index of `source`.
27338     * @param {Function} mergeFunc The function to merge values.
27339     * @param {Function} [customizer] The function to customize assigned values.
27340     * @param {Object} [stack] Tracks traversed source values and their merged
27341     *  counterparts.
27342     */
27343    function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {
27344      var objValue = safeGet(object, key),
27345          srcValue = safeGet(source, key),
27346          stacked = stack.get(srcValue);
27347
27348      if (stacked) {
27349        assignMergeValue(object, key, stacked);
27350        return;
27351      }
27352      var newValue = customizer
27353        ? customizer(objValue, srcValue, (key + ''), object, source, stack)
27354        : undefined;
27355
27356      var isCommon = newValue === undefined;
27357
27358      if (isCommon) {
27359        var isArr = isArray(srcValue),
27360            isBuff = !isArr && isBuffer(srcValue),
27361            isTyped = !isArr && !isBuff && isTypedArray(srcValue);
27362
27363        newValue = srcValue;
27364        if (isArr || isBuff || isTyped) {
27365          if (isArray(objValue)) {
27366            newValue = objValue;
27367          }
27368          else if (isArrayLikeObject(objValue)) {
27369            newValue = copyArray(objValue);
27370          }
27371          else if (isBuff) {
27372            isCommon = false;
27373            newValue = cloneBuffer(srcValue, true);
27374          }
27375          else if (isTyped) {
27376            isCommon = false;
27377            newValue = cloneTypedArray(srcValue, true);
27378          }
27379          else {
27380            newValue = [];
27381          }
27382        }
27383        else if (isPlainObject(srcValue) || isArguments(srcValue)) {
27384          newValue = objValue;
27385          if (isArguments(objValue)) {
27386            newValue = toPlainObject(objValue);
27387          }
27388          else if (!isObject(objValue) || isFunction(objValue)) {
27389            newValue = initCloneObject(srcValue);
27390          }
27391        }
27392        else {
27393          isCommon = false;
27394        }
27395      }
27396      if (isCommon) {
27397        // Recursively merge objects and arrays (susceptible to call stack limits).
27398        stack.set(srcValue, newValue);
27399        mergeFunc(newValue, srcValue, srcIndex, customizer, stack);
27400        stack['delete'](srcValue);
27401      }
27402      assignMergeValue(object, key, newValue);
27403    }
27404
27405    /**
27406     * The base implementation of `_.nth` which doesn't coerce arguments.
27407     *
27408     * @private
27409     * @param {Array} array The array to query.
27410     * @param {number} n The index of the element to return.
27411     * @returns {*} Returns the nth element of `array`.
27412     */
27413    function baseNth(array, n) {
27414      var length = array.length;
27415      if (!length) {
27416        return;
27417      }
27418      n += n < 0 ? length : 0;
27419      return isIndex(n, length) ? array[n] : undefined;
27420    }
27421
27422    /**
27423     * The base implementation of `_.orderBy` without param guards.
27424     *
27425     * @private
27426     * @param {Array|Object} collection The collection to iterate over.
27427     * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.
27428     * @param {string[]} orders The sort orders of `iteratees`.
27429     * @returns {Array} Returns the new sorted array.
27430     */
27431    function baseOrderBy(collection, iteratees, orders) {
27432      if (iteratees.length) {
27433        iteratees = arrayMap(iteratees, function(iteratee) {
27434          if (isArray(iteratee)) {
27435            return function(value) {
27436              return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);
27437            }
27438          }
27439          return iteratee;
27440        });
27441      } else {
27442        iteratees = [identity];
27443      }
27444
27445      var index = -1;
27446      iteratees = arrayMap(iteratees, baseUnary(getIteratee()));
27447
27448      var result = baseMap(collection, function(value, key, collection) {
27449        var criteria = arrayMap(iteratees, function(iteratee) {
27450          return iteratee(value);
27451        });
27452        return { 'criteria': criteria, 'index': ++index, 'value': value };
27453      });
27454
27455      return baseSortBy(result, function(object, other) {
27456        return compareMultiple(object, other, orders);
27457      });
27458    }
27459
27460    /**
27461     * The base implementation of `_.pick` without support for individual
27462     * property identifiers.
27463     *
27464     * @private
27465     * @param {Object} object The source object.
27466     * @param {string[]} paths The property paths to pick.
27467     * @returns {Object} Returns the new object.
27468     */
27469    function basePick(object, paths) {
27470      return basePickBy(object, paths, function(value, path) {
27471        return hasIn(object, path);
27472      });
27473    }
27474
27475    /**
27476     * The base implementation of  `_.pickBy` without support for iteratee shorthands.
27477     *
27478     * @private
27479     * @param {Object} object The source object.
27480     * @param {string[]} paths The property paths to pick.
27481     * @param {Function} predicate The function invoked per property.
27482     * @returns {Object} Returns the new object.
27483     */
27484    function basePickBy(object, paths, predicate) {
27485      var index = -1,
27486          length = paths.length,
27487          result = {};
27488
27489      while (++index < length) {
27490        var path = paths[index],
27491            value = baseGet(object, path);
27492
27493        if (predicate(value, path)) {
27494          baseSet(result, castPath(path, object), value);
27495        }
27496      }
27497      return result;
27498    }
27499
27500    /**
27501     * A specialized version of `baseProperty` which supports deep paths.
27502     *
27503     * @private
27504     * @param {Array|string} path The path of the property to get.
27505     * @returns {Function} Returns the new accessor function.
27506     */
27507    function basePropertyDeep(path) {
27508      return function(object) {
27509        return baseGet(object, path);
27510      };
27511    }
27512
27513    /**
27514     * The base implementation of `_.pullAllBy` without support for iteratee
27515     * shorthands.
27516     *
27517     * @private
27518     * @param {Array} array The array to modify.
27519     * @param {Array} values The values to remove.
27520     * @param {Function} [iteratee] The iteratee invoked per element.
27521     * @param {Function} [comparator] The comparator invoked per element.
27522     * @returns {Array} Returns `array`.
27523     */
27524    function basePullAll(array, values, iteratee, comparator) {
27525      var indexOf = comparator ? baseIndexOfWith : baseIndexOf,
27526          index = -1,
27527          length = values.length,
27528          seen = array;
27529
27530      if (array === values) {
27531        values = copyArray(values);
27532      }
27533      if (iteratee) {
27534        seen = arrayMap(array, baseUnary(iteratee));
27535      }
27536      while (++index < length) {
27537        var fromIndex = 0,
27538            value = values[index],
27539            computed = iteratee ? iteratee(value) : value;
27540
27541        while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {
27542          if (seen !== array) {
27543            splice.call(seen, fromIndex, 1);
27544          }
27545          splice.call(array, fromIndex, 1);
27546        }
27547      }
27548      return array;
27549    }
27550
27551    /**
27552     * The base implementation of `_.pullAt` without support for individual
27553     * indexes or capturing the removed elements.
27554     *
27555     * @private
27556     * @param {Array} array The array to modify.
27557     * @param {number[]} indexes The indexes of elements to remove.
27558     * @returns {Array} Returns `array`.
27559     */
27560    function basePullAt(array, indexes) {
27561      var length = array ? indexes.length : 0,
27562          lastIndex = length - 1;
27563
27564      while (length--) {
27565        var index = indexes[length];
27566        if (length == lastIndex || index !== previous) {
27567          var previous = index;
27568          if (isIndex(index)) {
27569            splice.call(array, index, 1);
27570          } else {
27571            baseUnset(array, index);
27572          }
27573        }
27574      }
27575      return array;
27576    }
27577
27578    /**
27579     * The base implementation of `_.random` without support for returning
27580     * floating-point numbers.
27581     *
27582     * @private
27583     * @param {number} lower The lower bound.
27584     * @param {number} upper The upper bound.
27585     * @returns {number} Returns the random number.
27586     */
27587    function baseRandom(lower, upper) {
27588      return lower + nativeFloor(nativeRandom() * (upper - lower + 1));
27589    }
27590
27591    /**
27592     * The base implementation of `_.range` and `_.rangeRight` which doesn't
27593     * coerce arguments.
27594     *
27595     * @private
27596     * @param {number} start The start of the range.
27597     * @param {number} end The end of the range.
27598     * @param {number} step The value to increment or decrement by.
27599     * @param {boolean} [fromRight] Specify iterating from right to left.
27600     * @returns {Array} Returns the range of numbers.
27601     */
27602    function baseRange(start, end, step, fromRight) {
27603      var index = -1,
27604          length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),
27605          result = Array(length);
27606
27607      while (length--) {
27608        result[fromRight ? length : ++index] = start;
27609        start += step;
27610      }
27611      return result;
27612    }
27613
27614    /**
27615     * The base implementation of `_.repeat` which doesn't coerce arguments.
27616     *
27617     * @private
27618     * @param {string} string The string to repeat.
27619     * @param {number} n The number of times to repeat the string.
27620     * @returns {string} Returns the repeated string.
27621     */
27622    function baseRepeat(string, n) {
27623      var result = '';
27624      if (!string || n < 1 || n > MAX_SAFE_INTEGER) {
27625        return result;
27626      }
27627      // Leverage the exponentiation by squaring algorithm for a faster repeat.
27628      // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.
27629      do {
27630        if (n % 2) {
27631          result += string;
27632        }
27633        n = nativeFloor(n / 2);
27634        if (n) {
27635          string += string;
27636        }
27637      } while (n);
27638
27639      return result;
27640    }
27641
27642    /**
27643     * The base implementation of `_.rest` which doesn't validate or coerce arguments.
27644     *
27645     * @private
27646     * @param {Function} func The function to apply a rest parameter to.
27647     * @param {number} [start=func.length-1] The start position of the rest parameter.
27648     * @returns {Function} Returns the new function.
27649     */
27650    function baseRest(func, start) {
27651      return setToString(overRest(func, start, identity), func + '');
27652    }
27653
27654    /**
27655     * The base implementation of `_.sample`.
27656     *
27657     * @private
27658     * @param {Array|Object} collection The collection to sample.
27659     * @returns {*} Returns the random element.
27660     */
27661    function baseSample(collection) {
27662      return arraySample(values(collection));
27663    }
27664
27665    /**
27666     * The base implementation of `_.sampleSize` without param guards.
27667     *
27668     * @private
27669     * @param {Array|Object} collection The collection to sample.
27670     * @param {number} n The number of elements to sample.
27671     * @returns {Array} Returns the random elements.
27672     */
27673    function baseSampleSize(collection, n) {
27674      var array = values(collection);
27675      return shuffleSelf(array, baseClamp(n, 0, array.length));
27676    }
27677
27678    /**
27679     * The base implementation of `_.set`.
27680     *
27681     * @private
27682     * @param {Object} object The object to modify.
27683     * @param {Array|string} path The path of the property to set.
27684     * @param {*} value The value to set.
27685     * @param {Function} [customizer] The function to customize path creation.
27686     * @returns {Object} Returns `object`.
27687     */
27688    function baseSet(object, path, value, customizer) {
27689      if (!isObject(object)) {
27690        return object;
27691      }
27692      path = castPath(path, object);
27693
27694      var index = -1,
27695          length = path.length,
27696          lastIndex = length - 1,
27697          nested = object;
27698
27699      while (nested != null && ++index < length) {
27700        var key = toKey(path[index]),
27701            newValue = value;
27702
27703        if (key === '__proto__' || key === 'constructor' || key === 'prototype') {
27704          return object;
27705        }
27706
27707        if (index != lastIndex) {
27708          var objValue = nested[key];
27709          newValue = customizer ? customizer(objValue, key, nested) : undefined;
27710          if (newValue === undefined) {
27711            newValue = isObject(objValue)
27712              ? objValue
27713              : (isIndex(path[index + 1]) ? [] : {});
27714          }
27715        }
27716        assignValue(nested, key, newValue);
27717        nested = nested[key];
27718      }
27719      return object;
27720    }
27721
27722    /**
27723     * The base implementation of `setData` without support for hot loop shorting.
27724     *
27725     * @private
27726     * @param {Function} func The function to associate metadata with.
27727     * @param {*} data The metadata.
27728     * @returns {Function} Returns `func`.
27729     */
27730    var baseSetData = !metaMap ? identity : function(func, data) {
27731      metaMap.set(func, data);
27732      return func;
27733    };
27734
27735    /**
27736     * The base implementation of `setToString` without support for hot loop shorting.
27737     *
27738     * @private
27739     * @param {Function} func The function to modify.
27740     * @param {Function} string The `toString` result.
27741     * @returns {Function} Returns `func`.
27742     */
27743    var baseSetToString = !defineProperty ? identity : function(func, string) {
27744      return defineProperty(func, 'toString', {
27745        'configurable': true,
27746        'enumerable': false,
27747        'value': constant(string),
27748        'writable': true
27749      });
27750    };
27751
27752    /**
27753     * The base implementation of `_.shuffle`.
27754     *
27755     * @private
27756     * @param {Array|Object} collection The collection to shuffle.
27757     * @returns {Array} Returns the new shuffled array.
27758     */
27759    function baseShuffle(collection) {
27760      return shuffleSelf(values(collection));
27761    }
27762
27763    /**
27764     * The base implementation of `_.slice` without an iteratee call guard.
27765     *
27766     * @private
27767     * @param {Array} array The array to slice.
27768     * @param {number} [start=0] The start position.
27769     * @param {number} [end=array.length] The end position.
27770     * @returns {Array} Returns the slice of `array`.
27771     */
27772    function baseSlice(array, start, end) {
27773      var index = -1,
27774          length = array.length;
27775
27776      if (start < 0) {
27777        start = -start > length ? 0 : (length + start);
27778      }
27779      end = end > length ? length : end;
27780      if (end < 0) {
27781        end += length;
27782      }
27783      length = start > end ? 0 : ((end - start) >>> 0);
27784      start >>>= 0;
27785
27786      var result = Array(length);
27787      while (++index < length) {
27788        result[index] = array[index + start];
27789      }
27790      return result;
27791    }
27792
27793    /**
27794     * The base implementation of `_.some` without support for iteratee shorthands.
27795     *
27796     * @private
27797     * @param {Array|Object} collection The collection to iterate over.
27798     * @param {Function} predicate The function invoked per iteration.
27799     * @returns {boolean} Returns `true` if any element passes the predicate check,
27800     *  else `false`.
27801     */
27802    function baseSome(collection, predicate) {
27803      var result;
27804
27805      baseEach(collection, function(value, index, collection) {
27806        result = predicate(value, index, collection);
27807        return !result;
27808      });
27809      return !!result;
27810    }
27811
27812    /**
27813     * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which
27814     * performs a binary search of `array` to determine the index at which `value`
27815     * should be inserted into `array` in order to maintain its sort order.
27816     *
27817     * @private
27818     * @param {Array} array The sorted array to inspect.
27819     * @param {*} value The value to evaluate.
27820     * @param {boolean} [retHighest] Specify returning the highest qualified index.
27821     * @returns {number} Returns the index at which `value` should be inserted
27822     *  into `array`.
27823     */
27824    function baseSortedIndex(array, value, retHighest) {
27825      var low = 0,
27826          high = array == null ? low : array.length;
27827
27828      if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {
27829        while (low < high) {
27830          var mid = (low + high) >>> 1,
27831              computed = array[mid];
27832
27833          if (computed !== null && !isSymbol(computed) &&
27834              (retHighest ? (computed <= value) : (computed < value))) {
27835            low = mid + 1;
27836          } else {
27837            high = mid;
27838          }
27839        }
27840        return high;
27841      }
27842      return baseSortedIndexBy(array, value, identity, retHighest);
27843    }
27844
27845    /**
27846     * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`
27847     * which invokes `iteratee` for `value` and each element of `array` to compute
27848     * their sort ranking. The iteratee is invoked with one argument; (value).
27849     *
27850     * @private
27851     * @param {Array} array The sorted array to inspect.
27852     * @param {*} value The value to evaluate.
27853     * @param {Function} iteratee The iteratee invoked per element.
27854     * @param {boolean} [retHighest] Specify returning the highest qualified index.
27855     * @returns {number} Returns the index at which `value` should be inserted
27856     *  into `array`.
27857     */
27858    function baseSortedIndexBy(array, value, iteratee, retHighest) {
27859      var low = 0,
27860          high = array == null ? 0 : array.length;
27861      if (high === 0) {
27862        return 0;
27863      }
27864
27865      value = iteratee(value);
27866      var valIsNaN = value !== value,
27867          valIsNull = value === null,
27868          valIsSymbol = isSymbol(value),
27869          valIsUndefined = value === undefined;
27870
27871      while (low < high) {
27872        var mid = nativeFloor((low + high) / 2),
27873            computed = iteratee(array[mid]),
27874            othIsDefined = computed !== undefined,
27875            othIsNull = computed === null,
27876            othIsReflexive = computed === computed,
27877            othIsSymbol = isSymbol(computed);
27878
27879        if (valIsNaN) {
27880          var setLow = retHighest || othIsReflexive;
27881        } else if (valIsUndefined) {
27882          setLow = othIsReflexive && (retHighest || othIsDefined);
27883        } else if (valIsNull) {
27884          setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);
27885        } else if (valIsSymbol) {
27886          setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);
27887        } else if (othIsNull || othIsSymbol) {
27888          setLow = false;
27889        } else {
27890          setLow = retHighest ? (computed <= value) : (computed < value);
27891        }
27892        if (setLow) {
27893          low = mid + 1;
27894        } else {
27895          high = mid;
27896        }
27897      }
27898      return nativeMin(high, MAX_ARRAY_INDEX);
27899    }
27900
27901    /**
27902     * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without
27903     * support for iteratee shorthands.
27904     *
27905     * @private
27906     * @param {Array} array The array to inspect.
27907     * @param {Function} [iteratee] The iteratee invoked per element.
27908     * @returns {Array} Returns the new duplicate free array.
27909     */
27910    function baseSortedUniq(array, iteratee) {
27911      var index = -1,
27912          length = array.length,
27913          resIndex = 0,
27914          result = [];
27915
27916      while (++index < length) {
27917        var value = array[index],
27918            computed = iteratee ? iteratee(value) : value;
27919
27920        if (!index || !eq(computed, seen)) {
27921          var seen = computed;
27922          result[resIndex++] = value === 0 ? 0 : value;
27923        }
27924      }
27925      return result;
27926    }
27927
27928    /**
27929     * The base implementation of `_.toNumber` which doesn't ensure correct
27930     * conversions of binary, hexadecimal, or octal string values.
27931     *
27932     * @private
27933     * @param {*} value The value to process.
27934     * @returns {number} Returns the number.
27935     */
27936    function baseToNumber(value) {
27937      if (typeof value == 'number') {
27938        return value;
27939      }
27940      if (isSymbol(value)) {
27941        return NAN;
27942      }
27943      return +value;
27944    }
27945
27946    /**
27947     * The base implementation of `_.toString` which doesn't convert nullish
27948     * values to empty strings.
27949     *
27950     * @private
27951     * @param {*} value The value to process.
27952     * @returns {string} Returns the string.
27953     */
27954    function baseToString(value) {
27955      // Exit early for strings to avoid a performance hit in some environments.
27956      if (typeof value == 'string') {
27957        return value;
27958      }
27959      if (isArray(value)) {
27960        // Recursively convert values (susceptible to call stack limits).
27961        return arrayMap(value, baseToString) + '';
27962      }
27963      if (isSymbol(value)) {
27964        return symbolToString ? symbolToString.call(value) : '';
27965      }
27966      var result = (value + '');
27967      return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
27968    }
27969
27970    /**
27971     * The base implementation of `_.uniqBy` without support for iteratee shorthands.
27972     *
27973     * @private
27974     * @param {Array} array The array to inspect.
27975     * @param {Function} [iteratee] The iteratee invoked per element.
27976     * @param {Function} [comparator] The comparator invoked per element.
27977     * @returns {Array} Returns the new duplicate free array.
27978     */
27979    function baseUniq(array, iteratee, comparator) {
27980      var index = -1,
27981          includes = arrayIncludes,
27982          length = array.length,
27983          isCommon = true,
27984          result = [],
27985          seen = result;
27986
27987      if (comparator) {
27988        isCommon = false;
27989        includes = arrayIncludesWith;
27990      }
27991      else if (length >= LARGE_ARRAY_SIZE) {
27992        var set = iteratee ? null : createSet(array);
27993        if (set) {
27994          return setToArray(set);
27995        }
27996        isCommon = false;
27997        includes = cacheHas;
27998        seen = new SetCache;
27999      }
28000      else {
28001        seen = iteratee ? [] : result;
28002      }
28003      outer:
28004      while (++index < length) {
28005        var value = array[index],
28006            computed = iteratee ? iteratee(value) : value;
28007
28008        value = (comparator || value !== 0) ? value : 0;
28009        if (isCommon && computed === computed) {
28010          var seenIndex = seen.length;
28011          while (seenIndex--) {
28012            if (seen[seenIndex] === computed) {
28013              continue outer;
28014            }
28015          }
28016          if (iteratee) {
28017            seen.push(computed);
28018          }
28019          result.push(value);
28020        }
28021        else if (!includes(seen, computed, comparator)) {
28022          if (seen !== result) {
28023            seen.push(computed);
28024          }
28025          result.push(value);
28026        }
28027      }
28028      return result;
28029    }
28030
28031    /**
28032     * The base implementation of `_.unset`.
28033     *
28034     * @private
28035     * @param {Object} object The object to modify.
28036     * @param {Array|string} path The property path to unset.
28037     * @returns {boolean} Returns `true` if the property is deleted, else `false`.
28038     */
28039    function baseUnset(object, path) {
28040      path = castPath(path, object);
28041      object = parent(object, path);
28042      return object == null || delete object[toKey(last(path))];
28043    }
28044
28045    /**
28046     * The base implementation of `_.update`.
28047     *
28048     * @private
28049     * @param {Object} object The object to modify.
28050     * @param {Array|string} path The path of the property to update.
28051     * @param {Function} updater The function to produce the updated value.
28052     * @param {Function} [customizer] The function to customize path creation.
28053     * @returns {Object} Returns `object`.
28054     */
28055    function baseUpdate(object, path, updater, customizer) {
28056      return baseSet(object, path, updater(baseGet(object, path)), customizer);
28057    }
28058
28059    /**
28060     * The base implementation of methods like `_.dropWhile` and `_.takeWhile`
28061     * without support for iteratee shorthands.
28062     *
28063     * @private
28064     * @param {Array} array The array to query.
28065     * @param {Function} predicate The function invoked per iteration.
28066     * @param {boolean} [isDrop] Specify dropping elements instead of taking them.
28067     * @param {boolean} [fromRight] Specify iterating from right to left.
28068     * @returns {Array} Returns the slice of `array`.
28069     */
28070    function baseWhile(array, predicate, isDrop, fromRight) {
28071      var length = array.length,
28072          index = fromRight ? length : -1;
28073
28074      while ((fromRight ? index-- : ++index < length) &&
28075        predicate(array[index], index, array)) {}
28076
28077      return isDrop
28078        ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))
28079        : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));
28080    }
28081
28082    /**
28083     * The base implementation of `wrapperValue` which returns the result of
28084     * performing a sequence of actions on the unwrapped `value`, where each
28085     * successive action is supplied the return value of the previous.
28086     *
28087     * @private
28088     * @param {*} value The unwrapped value.
28089     * @param {Array} actions Actions to perform to resolve the unwrapped value.
28090     * @returns {*} Returns the resolved value.
28091     */
28092    function baseWrapperValue(value, actions) {
28093      var result = value;
28094      if (result instanceof LazyWrapper) {
28095        result = result.value();
28096      }
28097      return arrayReduce(actions, function(result, action) {
28098        return action.func.apply(action.thisArg, arrayPush([result], action.args));
28099      }, result);
28100    }
28101
28102    /**
28103     * The base implementation of methods like `_.xor`, without support for
28104     * iteratee shorthands, that accepts an array of arrays to inspect.
28105     *
28106     * @private
28107     * @param {Array} arrays The arrays to inspect.
28108     * @param {Function} [iteratee] The iteratee invoked per element.
28109     * @param {Function} [comparator] The comparator invoked per element.
28110     * @returns {Array} Returns the new array of values.
28111     */
28112    function baseXor(arrays, iteratee, comparator) {
28113      var length = arrays.length;
28114      if (length < 2) {
28115        return length ? baseUniq(arrays[0]) : [];
28116      }
28117      var index = -1,
28118          result = Array(length);
28119
28120      while (++index < length) {
28121        var array = arrays[index],
28122            othIndex = -1;
28123
28124        while (++othIndex < length) {
28125          if (othIndex != index) {
28126            result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);
28127          }
28128        }
28129      }
28130      return baseUniq(baseFlatten(result, 1), iteratee, comparator);
28131    }
28132
28133    /**
28134     * This base implementation of `_.zipObject` which assigns values using `assignFunc`.
28135     *
28136     * @private
28137     * @param {Array} props The property identifiers.
28138     * @param {Array} values The property values.
28139     * @param {Function} assignFunc The function to assign values.
28140     * @returns {Object} Returns the new object.
28141     */
28142    function baseZipObject(props, values, assignFunc) {
28143      var index = -1,
28144          length = props.length,
28145          valsLength = values.length,
28146          result = {};
28147
28148      while (++index < length) {
28149        var value = index < valsLength ? values[index] : undefined;
28150        assignFunc(result, props[index], value);
28151      }
28152      return result;
28153    }
28154
28155    /**
28156     * Casts `value` to an empty array if it's not an array like object.
28157     *
28158     * @private
28159     * @param {*} value The value to inspect.
28160     * @returns {Array|Object} Returns the cast array-like object.
28161     */
28162    function castArrayLikeObject(value) {
28163      return isArrayLikeObject(value) ? value : [];
28164    }
28165
28166    /**
28167     * Casts `value` to `identity` if it's not a function.
28168     *
28169     * @private
28170     * @param {*} value The value to inspect.
28171     * @returns {Function} Returns cast function.
28172     */
28173    function castFunction(value) {
28174      return typeof value == 'function' ? value : identity;
28175    }
28176
28177    /**
28178     * Casts `value` to a path array if it's not one.
28179     *
28180     * @private
28181     * @param {*} value The value to inspect.
28182     * @param {Object} [object] The object to query keys on.
28183     * @returns {Array} Returns the cast property path array.
28184     */
28185    function castPath(value, object) {
28186      if (isArray(value)) {
28187        return value;
28188      }
28189      return isKey(value, object) ? [value] : stringToPath(toString(value));
28190    }
28191
28192    /**
28193     * A `baseRest` alias which can be replaced with `identity` by module
28194     * replacement plugins.
28195     *
28196     * @private
28197     * @type {Function}
28198     * @param {Function} func The function to apply a rest parameter to.
28199     * @returns {Function} Returns the new function.
28200     */
28201    var castRest = baseRest;
28202
28203    /**
28204     * Casts `array` to a slice if it's needed.
28205     *
28206     * @private
28207     * @param {Array} array The array to inspect.
28208     * @param {number} start The start position.
28209     * @param {number} [end=array.length] The end position.
28210     * @returns {Array} Returns the cast slice.
28211     */
28212    function castSlice(array, start, end) {
28213      var length = array.length;
28214      end = end === undefined ? length : end;
28215      return (!start && end >= length) ? array : baseSlice(array, start, end);
28216    }
28217
28218    /**
28219     * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).
28220     *
28221     * @private
28222     * @param {number|Object} id The timer id or timeout object of the timer to clear.
28223     */
28224    var clearTimeout = ctxClearTimeout || function(id) {
28225      return root.clearTimeout(id);
28226    };
28227
28228    /**
28229     * Creates a clone of  `buffer`.
28230     *
28231     * @private
28232     * @param {Buffer} buffer The buffer to clone.
28233     * @param {boolean} [isDeep] Specify a deep clone.
28234     * @returns {Buffer} Returns the cloned buffer.
28235     */
28236    function cloneBuffer(buffer, isDeep) {
28237      if (isDeep) {
28238        return buffer.slice();
28239      }
28240      var length = buffer.length,
28241          result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);
28242
28243      buffer.copy(result);
28244      return result;
28245    }
28246
28247    /**
28248     * Creates a clone of `arrayBuffer`.
28249     *
28250     * @private
28251     * @param {ArrayBuffer} arrayBuffer The array buffer to clone.
28252     * @returns {ArrayBuffer} Returns the cloned array buffer.
28253     */
28254    function cloneArrayBuffer(arrayBuffer) {
28255      var result = new arrayBuffer.constructor(arrayBuffer.byteLength);
28256      new Uint8Array(result).set(new Uint8Array(arrayBuffer));
28257      return result;
28258    }
28259
28260    /**
28261     * Creates a clone of `dataView`.
28262     *
28263     * @private
28264     * @param {Object} dataView The data view to clone.
28265     * @param {boolean} [isDeep] Specify a deep clone.
28266     * @returns {Object} Returns the cloned data view.
28267     */
28268    function cloneDataView(dataView, isDeep) {
28269      var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;
28270      return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);
28271    }
28272
28273    /**
28274     * Creates a clone of `regexp`.
28275     *
28276     * @private
28277     * @param {Object} regexp The regexp to clone.
28278     * @returns {Object} Returns the cloned regexp.
28279     */
28280    function cloneRegExp(regexp) {
28281      var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));
28282      result.lastIndex = regexp.lastIndex;
28283      return result;
28284    }
28285
28286    /**
28287     * Creates a clone of the `symbol` object.
28288     *
28289     * @private
28290     * @param {Object} symbol The symbol object to clone.
28291     * @returns {Object} Returns the cloned symbol object.
28292     */
28293    function cloneSymbol(symbol) {
28294      return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};
28295    }
28296
28297    /**
28298     * Creates a clone of `typedArray`.
28299     *
28300     * @private
28301     * @param {Object} typedArray The typed array to clone.
28302     * @param {boolean} [isDeep] Specify a deep clone.
28303     * @returns {Object} Returns the cloned typed array.
28304     */
28305    function cloneTypedArray(typedArray, isDeep) {
28306      var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;
28307      return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);
28308    }
28309
28310    /**
28311     * Compares values to sort them in ascending order.
28312     *
28313     * @private
28314     * @param {*} value The value to compare.
28315     * @param {*} other The other value to compare.
28316     * @returns {number} Returns the sort order indicator for `value`.
28317     */
28318    function compareAscending(value, other) {
28319      if (value !== other) {
28320        var valIsDefined = value !== undefined,
28321            valIsNull = value === null,
28322            valIsReflexive = value === value,
28323            valIsSymbol = isSymbol(value);
28324
28325        var othIsDefined = other !== undefined,
28326            othIsNull = other === null,
28327            othIsReflexive = other === other,
28328            othIsSymbol = isSymbol(other);
28329
28330        if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||
28331            (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||
28332            (valIsNull && othIsDefined && othIsReflexive) ||
28333            (!valIsDefined && othIsReflexive) ||
28334            !valIsReflexive) {
28335          return 1;
28336        }
28337        if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||
28338            (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||
28339            (othIsNull && valIsDefined && valIsReflexive) ||
28340            (!othIsDefined && valIsReflexive) ||
28341            !othIsReflexive) {
28342          return -1;
28343        }
28344      }
28345      return 0;
28346    }
28347
28348    /**
28349     * Used by `_.orderBy` to compare multiple properties of a value to another
28350     * and stable sort them.
28351     *
28352     * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,
28353     * specify an order of "desc" for descending or "asc" for ascending sort order
28354     * of corresponding values.
28355     *
28356     * @private
28357     * @param {Object} object The object to compare.
28358     * @param {Object} other The other object to compare.
28359     * @param {boolean[]|string[]} orders The order to sort by for each property.
28360     * @returns {number} Returns the sort order indicator for `object`.
28361     */
28362    function compareMultiple(object, other, orders) {
28363      var index = -1,
28364          objCriteria = object.criteria,
28365          othCriteria = other.criteria,
28366          length = objCriteria.length,
28367          ordersLength = orders.length;
28368
28369      while (++index < length) {
28370        var result = compareAscending(objCriteria[index], othCriteria[index]);
28371        if (result) {
28372          if (index >= ordersLength) {
28373            return result;
28374          }
28375          var order = orders[index];
28376          return result * (order == 'desc' ? -1 : 1);
28377        }
28378      }
28379      // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications
28380      // that causes it, under certain circumstances, to provide the same value for
28381      // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247
28382      // for more details.
28383      //
28384      // This also ensures a stable sort in V8 and other engines.
28385      // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.
28386      return object.index - other.index;
28387    }
28388
28389    /**
28390     * Creates an array that is the composition of partially applied arguments,
28391     * placeholders, and provided arguments into a single array of arguments.
28392     *
28393     * @private
28394     * @param {Array} args The provided arguments.
28395     * @param {Array} partials The arguments to prepend to those provided.
28396     * @param {Array} holders The `partials` placeholder indexes.
28397     * @params {boolean} [isCurried] Specify composing for a curried function.
28398     * @returns {Array} Returns the new array of composed arguments.
28399     */
28400    function composeArgs(args, partials, holders, isCurried) {
28401      var argsIndex = -1,
28402          argsLength = args.length,
28403          holdersLength = holders.length,
28404          leftIndex = -1,
28405          leftLength = partials.length,
28406          rangeLength = nativeMax(argsLength - holdersLength, 0),
28407          result = Array(leftLength + rangeLength),
28408          isUncurried = !isCurried;
28409
28410      while (++leftIndex < leftLength) {
28411        result[leftIndex] = partials[leftIndex];
28412      }
28413      while (++argsIndex < holdersLength) {
28414        if (isUncurried || argsIndex < argsLength) {
28415          result[holders[argsIndex]] = args[argsIndex];
28416        }
28417      }
28418      while (rangeLength--) {
28419        result[leftIndex++] = args[argsIndex++];
28420      }
28421      return result;
28422    }
28423
28424    /**
28425     * This function is like `composeArgs` except that the arguments composition
28426     * is tailored for `_.partialRight`.
28427     *
28428     * @private
28429     * @param {Array} args The provided arguments.
28430     * @param {Array} partials The arguments to append to those provided.
28431     * @param {Array} holders The `partials` placeholder indexes.
28432     * @params {boolean} [isCurried] Specify composing for a curried function.
28433     * @returns {Array} Returns the new array of composed arguments.
28434     */
28435    function composeArgsRight(args, partials, holders, isCurried) {
28436      var argsIndex = -1,
28437          argsLength = args.length,
28438          holdersIndex = -1,
28439          holdersLength = holders.length,
28440          rightIndex = -1,
28441          rightLength = partials.length,
28442          rangeLength = nativeMax(argsLength - holdersLength, 0),
28443          result = Array(rangeLength + rightLength),
28444          isUncurried = !isCurried;
28445
28446      while (++argsIndex < rangeLength) {
28447        result[argsIndex] = args[argsIndex];
28448      }
28449      var offset = argsIndex;
28450      while (++rightIndex < rightLength) {
28451        result[offset + rightIndex] = partials[rightIndex];
28452      }
28453      while (++holdersIndex < holdersLength) {
28454        if (isUncurried || argsIndex < argsLength) {
28455          result[offset + holders[holdersIndex]] = args[argsIndex++];
28456        }
28457      }
28458      return result;
28459    }
28460
28461    /**
28462     * Copies the values of `source` to `array`.
28463     *
28464     * @private
28465     * @param {Array} source The array to copy values from.
28466     * @param {Array} [array=[]] The array to copy values to.
28467     * @returns {Array} Returns `array`.
28468     */
28469    function copyArray(source, array) {
28470      var index = -1,
28471          length = source.length;
28472
28473      array || (array = Array(length));
28474      while (++index < length) {
28475        array[index] = source[index];
28476      }
28477      return array;
28478    }
28479
28480    /**
28481     * Copies properties of `source` to `object`.
28482     *
28483     * @private
28484     * @param {Object} source The object to copy properties from.
28485     * @param {Array} props The property identifiers to copy.
28486     * @param {Object} [object={}] The object to copy properties to.
28487     * @param {Function} [customizer] The function to customize copied values.
28488     * @returns {Object} Returns `object`.
28489     */
28490    function copyObject(source, props, object, customizer) {
28491      var isNew = !object;
28492      object || (object = {});
28493
28494      var index = -1,
28495          length = props.length;
28496
28497      while (++index < length) {
28498        var key = props[index];
28499
28500        var newValue = customizer
28501          ? customizer(object[key], source[key], key, object, source)
28502          : undefined;
28503
28504        if (newValue === undefined) {
28505          newValue = source[key];
28506        }
28507        if (isNew) {
28508          baseAssignValue(object, key, newValue);
28509        } else {
28510          assignValue(object, key, newValue);
28511        }
28512      }
28513      return object;
28514    }
28515
28516    /**
28517     * Copies own symbols of `source` to `object`.
28518     *
28519     * @private
28520     * @param {Object} source The object to copy symbols from.
28521     * @param {Object} [object={}] The object to copy symbols to.
28522     * @returns {Object} Returns `object`.
28523     */
28524    function copySymbols(source, object) {
28525      return copyObject(source, getSymbols(source), object);
28526    }
28527
28528    /**
28529     * Copies own and inherited symbols of `source` to `object`.
28530     *
28531     * @private
28532     * @param {Object} source The object to copy symbols from.
28533     * @param {Object} [object={}] The object to copy symbols to.
28534     * @returns {Object} Returns `object`.
28535     */
28536    function copySymbolsIn(source, object) {
28537      return copyObject(source, getSymbolsIn(source), object);
28538    }
28539
28540    /**
28541     * Creates a function like `_.groupBy`.
28542     *
28543     * @private
28544     * @param {Function} setter The function to set accumulator values.
28545     * @param {Function} [initializer] The accumulator object initializer.
28546     * @returns {Function} Returns the new aggregator function.
28547     */
28548    function createAggregator(setter, initializer) {
28549      return function(collection, iteratee) {
28550        var func = isArray(collection) ? arrayAggregator : baseAggregator,
28551            accumulator = initializer ? initializer() : {};
28552
28553        return func(collection, setter, getIteratee(iteratee, 2), accumulator);
28554      };
28555    }
28556
28557    /**
28558     * Creates a function like `_.assign`.
28559     *
28560     * @private
28561     * @param {Function} assigner The function to assign values.
28562     * @returns {Function} Returns the new assigner function.
28563     */
28564    function createAssigner(assigner) {
28565      return baseRest(function(object, sources) {
28566        var index = -1,
28567            length = sources.length,
28568            customizer = length > 1 ? sources[length - 1] : undefined,
28569            guard = length > 2 ? sources[2] : undefined;
28570
28571        customizer = (assigner.length > 3 && typeof customizer == 'function')
28572          ? (length--, customizer)
28573          : undefined;
28574
28575        if (guard && isIterateeCall(sources[0], sources[1], guard)) {
28576          customizer = length < 3 ? undefined : customizer;
28577          length = 1;
28578        }
28579        object = Object(object);
28580        while (++index < length) {
28581          var source = sources[index];
28582          if (source) {
28583            assigner(object, source, index, customizer);
28584          }
28585        }
28586        return object;
28587      });
28588    }
28589
28590    /**
28591     * Creates a `baseEach` or `baseEachRight` function.
28592     *
28593     * @private
28594     * @param {Function} eachFunc The function to iterate over a collection.
28595     * @param {boolean} [fromRight] Specify iterating from right to left.
28596     * @returns {Function} Returns the new base function.
28597     */
28598    function createBaseEach(eachFunc, fromRight) {
28599      return function(collection, iteratee) {
28600        if (collection == null) {
28601          return collection;
28602        }
28603        if (!isArrayLike(collection)) {
28604          return eachFunc(collection, iteratee);
28605        }
28606        var length = collection.length,
28607            index = fromRight ? length : -1,
28608            iterable = Object(collection);
28609
28610        while ((fromRight ? index-- : ++index < length)) {
28611          if (iteratee(iterable[index], index, iterable) === false) {
28612            break;
28613          }
28614        }
28615        return collection;
28616      };
28617    }
28618
28619    /**
28620     * Creates a base function for methods like `_.forIn` and `_.forOwn`.
28621     *
28622     * @private
28623     * @param {boolean} [fromRight] Specify iterating from right to left.
28624     * @returns {Function} Returns the new base function.
28625     */
28626    function createBaseFor(fromRight) {
28627      return function(object, iteratee, keysFunc) {
28628        var index = -1,
28629            iterable = Object(object),
28630            props = keysFunc(object),
28631            length = props.length;
28632
28633        while (length--) {
28634          var key = props[fromRight ? length : ++index];
28635          if (iteratee(iterable[key], key, iterable) === false) {
28636            break;
28637          }
28638        }
28639        return object;
28640      };
28641    }
28642
28643    /**
28644     * Creates a function that wraps `func` to invoke it with the optional `this`
28645     * binding of `thisArg`.
28646     *
28647     * @private
28648     * @param {Function} func The function to wrap.
28649     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
28650     * @param {*} [thisArg] The `this` binding of `func`.
28651     * @returns {Function} Returns the new wrapped function.
28652     */
28653    function createBind(func, bitmask, thisArg) {
28654      var isBind = bitmask & WRAP_BIND_FLAG,
28655          Ctor = createCtor(func);
28656
28657      function wrapper() {
28658        var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
28659        return fn.apply(isBind ? thisArg : this, arguments);
28660      }
28661      return wrapper;
28662    }
28663
28664    /**
28665     * Creates a function like `_.lowerFirst`.
28666     *
28667     * @private
28668     * @param {string} methodName The name of the `String` case method to use.
28669     * @returns {Function} Returns the new case function.
28670     */
28671    function createCaseFirst(methodName) {
28672      return function(string) {
28673        string = toString(string);
28674
28675        var strSymbols = hasUnicode(string)
28676          ? stringToArray(string)
28677          : undefined;
28678
28679        var chr = strSymbols
28680          ? strSymbols[0]
28681          : string.charAt(0);
28682
28683        var trailing = strSymbols
28684          ? castSlice(strSymbols, 1).join('')
28685          : string.slice(1);
28686
28687        return chr[methodName]() + trailing;
28688      };
28689    }
28690
28691    /**
28692     * Creates a function like `_.camelCase`.
28693     *
28694     * @private
28695     * @param {Function} callback The function to combine each word.
28696     * @returns {Function} Returns the new compounder function.
28697     */
28698    function createCompounder(callback) {
28699      return function(string) {
28700        return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');
28701      };
28702    }
28703
28704    /**
28705     * Creates a function that produces an instance of `Ctor` regardless of
28706     * whether it was invoked as part of a `new` expression or by `call` or `apply`.
28707     *
28708     * @private
28709     * @param {Function} Ctor The constructor to wrap.
28710     * @returns {Function} Returns the new wrapped function.
28711     */
28712    function createCtor(Ctor) {
28713      return function() {
28714        // Use a `switch` statement to work with class constructors. See
28715        // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist
28716        // for more details.
28717        var args = arguments;
28718        switch (args.length) {
28719          case 0: return new Ctor;
28720          case 1: return new Ctor(args[0]);
28721          case 2: return new Ctor(args[0], args[1]);
28722          case 3: return new Ctor(args[0], args[1], args[2]);
28723          case 4: return new Ctor(args[0], args[1], args[2], args[3]);
28724          case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);
28725          case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);
28726          case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);
28727        }
28728        var thisBinding = baseCreate(Ctor.prototype),
28729            result = Ctor.apply(thisBinding, args);
28730
28731        // Mimic the constructor's `return` behavior.
28732        // See https://es5.github.io/#x13.2.2 for more details.
28733        return isObject(result) ? result : thisBinding;
28734      };
28735    }
28736
28737    /**
28738     * Creates a function that wraps `func` to enable currying.
28739     *
28740     * @private
28741     * @param {Function} func The function to wrap.
28742     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
28743     * @param {number} arity The arity of `func`.
28744     * @returns {Function} Returns the new wrapped function.
28745     */
28746    function createCurry(func, bitmask, arity) {
28747      var Ctor = createCtor(func);
28748
28749      function wrapper() {
28750        var length = arguments.length,
28751            args = Array(length),
28752            index = length,
28753            placeholder = getHolder(wrapper);
28754
28755        while (index--) {
28756          args[index] = arguments[index];
28757        }
28758        var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)
28759          ? []
28760          : replaceHolders(args, placeholder);
28761
28762        length -= holders.length;
28763        if (length < arity) {
28764          return createRecurry(
28765            func, bitmask, createHybrid, wrapper.placeholder, undefined,
28766            args, holders, undefined, undefined, arity - length);
28767        }
28768        var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
28769        return apply(fn, this, args);
28770      }
28771      return wrapper;
28772    }
28773
28774    /**
28775     * Creates a `_.find` or `_.findLast` function.
28776     *
28777     * @private
28778     * @param {Function} findIndexFunc The function to find the collection index.
28779     * @returns {Function} Returns the new find function.
28780     */
28781    function createFind(findIndexFunc) {
28782      return function(collection, predicate, fromIndex) {
28783        var iterable = Object(collection);
28784        if (!isArrayLike(collection)) {
28785          var iteratee = getIteratee(predicate, 3);
28786          collection = keys(collection);
28787          predicate = function(key) { return iteratee(iterable[key], key, iterable); };
28788        }
28789        var index = findIndexFunc(collection, predicate, fromIndex);
28790        return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;
28791      };
28792    }
28793
28794    /**
28795     * Creates a `_.flow` or `_.flowRight` function.
28796     *
28797     * @private
28798     * @param {boolean} [fromRight] Specify iterating from right to left.
28799     * @returns {Function} Returns the new flow function.
28800     */
28801    function createFlow(fromRight) {
28802      return flatRest(function(funcs) {
28803        var length = funcs.length,
28804            index = length,
28805            prereq = LodashWrapper.prototype.thru;
28806
28807        if (fromRight) {
28808          funcs.reverse();
28809        }
28810        while (index--) {
28811          var func = funcs[index];
28812          if (typeof func != 'function') {
28813            throw new TypeError(FUNC_ERROR_TEXT);
28814          }
28815          if (prereq && !wrapper && getFuncName(func) == 'wrapper') {
28816            var wrapper = new LodashWrapper([], true);
28817          }
28818        }
28819        index = wrapper ? index : length;
28820        while (++index < length) {
28821          func = funcs[index];
28822
28823          var funcName = getFuncName(func),
28824              data = funcName == 'wrapper' ? getData(func) : undefined;
28825
28826          if (data && isLaziable(data[0]) &&
28827                data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&
28828                !data[4].length && data[9] == 1
28829              ) {
28830            wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);
28831          } else {
28832            wrapper = (func.length == 1 && isLaziable(func))
28833              ? wrapper[funcName]()
28834              : wrapper.thru(func);
28835          }
28836        }
28837        return function() {
28838          var args = arguments,
28839              value = args[0];
28840
28841          if (wrapper && args.length == 1 && isArray(value)) {
28842            return wrapper.plant(value).value();
28843          }
28844          var index = 0,
28845              result = length ? funcs[index].apply(this, args) : value;
28846
28847          while (++index < length) {
28848            result = funcs[index].call(this, result);
28849          }
28850          return result;
28851        };
28852      });
28853    }
28854
28855    /**
28856     * Creates a function that wraps `func` to invoke it with optional `this`
28857     * binding of `thisArg`, partial application, and currying.
28858     *
28859     * @private
28860     * @param {Function|string} func The function or method name to wrap.
28861     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
28862     * @param {*} [thisArg] The `this` binding of `func`.
28863     * @param {Array} [partials] The arguments to prepend to those provided to
28864     *  the new function.
28865     * @param {Array} [holders] The `partials` placeholder indexes.
28866     * @param {Array} [partialsRight] The arguments to append to those provided
28867     *  to the new function.
28868     * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.
28869     * @param {Array} [argPos] The argument positions of the new function.
28870     * @param {number} [ary] The arity cap of `func`.
28871     * @param {number} [arity] The arity of `func`.
28872     * @returns {Function} Returns the new wrapped function.
28873     */
28874    function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {
28875      var isAry = bitmask & WRAP_ARY_FLAG,
28876          isBind = bitmask & WRAP_BIND_FLAG,
28877          isBindKey = bitmask & WRAP_BIND_KEY_FLAG,
28878          isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),
28879          isFlip = bitmask & WRAP_FLIP_FLAG,
28880          Ctor = isBindKey ? undefined : createCtor(func);
28881
28882      function wrapper() {
28883        var length = arguments.length,
28884            args = Array(length),
28885            index = length;
28886
28887        while (index--) {
28888          args[index] = arguments[index];
28889        }
28890        if (isCurried) {
28891          var placeholder = getHolder(wrapper),
28892              holdersCount = countHolders(args, placeholder);
28893        }
28894        if (partials) {
28895          args = composeArgs(args, partials, holders, isCurried);
28896        }
28897        if (partialsRight) {
28898          args = composeArgsRight(args, partialsRight, holdersRight, isCurried);
28899        }
28900        length -= holdersCount;
28901        if (isCurried && length < arity) {
28902          var newHolders = replaceHolders(args, placeholder);
28903          return createRecurry(
28904            func, bitmask, createHybrid, wrapper.placeholder, thisArg,
28905            args, newHolders, argPos, ary, arity - length
28906          );
28907        }
28908        var thisBinding = isBind ? thisArg : this,
28909            fn = isBindKey ? thisBinding[func] : func;
28910
28911        length = args.length;
28912        if (argPos) {
28913          args = reorder(args, argPos);
28914        } else if (isFlip && length > 1) {
28915          args.reverse();
28916        }
28917        if (isAry && ary < length) {
28918          args.length = ary;
28919        }
28920        if (this && this !== root && this instanceof wrapper) {
28921          fn = Ctor || createCtor(fn);
28922        }
28923        return fn.apply(thisBinding, args);
28924      }
28925      return wrapper;
28926    }
28927
28928    /**
28929     * Creates a function like `_.invertBy`.
28930     *
28931     * @private
28932     * @param {Function} setter The function to set accumulator values.
28933     * @param {Function} toIteratee The function to resolve iteratees.
28934     * @returns {Function} Returns the new inverter function.
28935     */
28936    function createInverter(setter, toIteratee) {
28937      return function(object, iteratee) {
28938        return baseInverter(object, setter, toIteratee(iteratee), {});
28939      };
28940    }
28941
28942    /**
28943     * Creates a function that performs a mathematical operation on two values.
28944     *
28945     * @private
28946     * @param {Function} operator The function to perform the operation.
28947     * @param {number} [defaultValue] The value used for `undefined` arguments.
28948     * @returns {Function} Returns the new mathematical operation function.
28949     */
28950    function createMathOperation(operator, defaultValue) {
28951      return function(value, other) {
28952        var result;
28953        if (value === undefined && other === undefined) {
28954          return defaultValue;
28955        }
28956        if (value !== undefined) {
28957          result = value;
28958        }
28959        if (other !== undefined) {
28960          if (result === undefined) {
28961            return other;
28962          }
28963          if (typeof value == 'string' || typeof other == 'string') {
28964            value = baseToString(value);
28965            other = baseToString(other);
28966          } else {
28967            value = baseToNumber(value);
28968            other = baseToNumber(other);
28969          }
28970          result = operator(value, other);
28971        }
28972        return result;
28973      };
28974    }
28975
28976    /**
28977     * Creates a function like `_.over`.
28978     *
28979     * @private
28980     * @param {Function} arrayFunc The function to iterate over iteratees.
28981     * @returns {Function} Returns the new over function.
28982     */
28983    function createOver(arrayFunc) {
28984      return flatRest(function(iteratees) {
28985        iteratees = arrayMap(iteratees, baseUnary(getIteratee()));
28986        return baseRest(function(args) {
28987          var thisArg = this;
28988          return arrayFunc(iteratees, function(iteratee) {
28989            return apply(iteratee, thisArg, args);
28990          });
28991        });
28992      });
28993    }
28994
28995    /**
28996     * Creates the padding for `string` based on `length`. The `chars` string
28997     * is truncated if the number of characters exceeds `length`.
28998     *
28999     * @private
29000     * @param {number} length The padding length.
29001     * @param {string} [chars=' '] The string used as padding.
29002     * @returns {string} Returns the padding for `string`.
29003     */
29004    function createPadding(length, chars) {
29005      chars = chars === undefined ? ' ' : baseToString(chars);
29006
29007      var charsLength = chars.length;
29008      if (charsLength < 2) {
29009        return charsLength ? baseRepeat(chars, length) : chars;
29010      }
29011      var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));
29012      return hasUnicode(chars)
29013        ? castSlice(stringToArray(result), 0, length).join('')
29014        : result.slice(0, length);
29015    }
29016
29017    /**
29018     * Creates a function that wraps `func` to invoke it with the `this` binding
29019     * of `thisArg` and `partials` prepended to the arguments it receives.
29020     *
29021     * @private
29022     * @param {Function} func The function to wrap.
29023     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
29024     * @param {*} thisArg The `this` binding of `func`.
29025     * @param {Array} partials The arguments to prepend to those provided to
29026     *  the new function.
29027     * @returns {Function} Returns the new wrapped function.
29028     */
29029    function createPartial(func, bitmask, thisArg, partials) {
29030      var isBind = bitmask & WRAP_BIND_FLAG,
29031          Ctor = createCtor(func);
29032
29033      function wrapper() {
29034        var argsIndex = -1,
29035            argsLength = arguments.length,
29036            leftIndex = -1,
29037            leftLength = partials.length,
29038            args = Array(leftLength + argsLength),
29039            fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
29040
29041        while (++leftIndex < leftLength) {
29042          args[leftIndex] = partials[leftIndex];
29043        }
29044        while (argsLength--) {
29045          args[leftIndex++] = arguments[++argsIndex];
29046        }
29047        return apply(fn, isBind ? thisArg : this, args);
29048      }
29049      return wrapper;
29050    }
29051
29052    /**
29053     * Creates a `_.range` or `_.rangeRight` function.
29054     *
29055     * @private
29056     * @param {boolean} [fromRight] Specify iterating from right to left.
29057     * @returns {Function} Returns the new range function.
29058     */
29059    function createRange(fromRight) {
29060      return function(start, end, step) {
29061        if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {
29062          end = step = undefined;
29063        }
29064        // Ensure the sign of `-0` is preserved.
29065        start = toFinite(start);
29066        if (end === undefined) {
29067          end = start;
29068          start = 0;
29069        } else {
29070          end = toFinite(end);
29071        }
29072        step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);
29073        return baseRange(start, end, step, fromRight);
29074      };
29075    }
29076
29077    /**
29078     * Creates a function that performs a relational operation on two values.
29079     *
29080     * @private
29081     * @param {Function} operator The function to perform the operation.
29082     * @returns {Function} Returns the new relational operation function.
29083     */
29084    function createRelationalOperation(operator) {
29085      return function(value, other) {
29086        if (!(typeof value == 'string' && typeof other == 'string')) {
29087          value = toNumber(value);
29088          other = toNumber(other);
29089        }
29090        return operator(value, other);
29091      };
29092    }
29093
29094    /**
29095     * Creates a function that wraps `func` to continue currying.
29096     *
29097     * @private
29098     * @param {Function} func The function to wrap.
29099     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
29100     * @param {Function} wrapFunc The function to create the `func` wrapper.
29101     * @param {*} placeholder The placeholder value.
29102     * @param {*} [thisArg] The `this` binding of `func`.
29103     * @param {Array} [partials] The arguments to prepend to those provided to
29104     *  the new function.
29105     * @param {Array} [holders] The `partials` placeholder indexes.
29106     * @param {Array} [argPos] The argument positions of the new function.
29107     * @param {number} [ary] The arity cap of `func`.
29108     * @param {number} [arity] The arity of `func`.
29109     * @returns {Function} Returns the new wrapped function.
29110     */
29111    function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {
29112      var isCurry = bitmask & WRAP_CURRY_FLAG,
29113          newHolders = isCurry ? holders : undefined,
29114          newHoldersRight = isCurry ? undefined : holders,
29115          newPartials = isCurry ? partials : undefined,
29116          newPartialsRight = isCurry ? undefined : partials;
29117
29118      bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);
29119      bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);
29120
29121      if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {
29122        bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);
29123      }
29124      var newData = [
29125        func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,
29126        newHoldersRight, argPos, ary, arity
29127      ];
29128
29129      var result = wrapFunc.apply(undefined, newData);
29130      if (isLaziable(func)) {
29131        setData(result, newData);
29132      }
29133      result.placeholder = placeholder;
29134      return setWrapToString(result, func, bitmask);
29135    }
29136
29137    /**
29138     * Creates a function like `_.round`.
29139     *
29140     * @private
29141     * @param {string} methodName The name of the `Math` method to use when rounding.
29142     * @returns {Function} Returns the new round function.
29143     */
29144    function createRound(methodName) {
29145      var func = Math[methodName];
29146      return function(number, precision) {
29147        number = toNumber(number);
29148        precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);
29149        if (precision && nativeIsFinite(number)) {
29150          // Shift with exponential notation to avoid floating-point issues.
29151          // See [MDN](https://mdn.io/round#Examples) for more details.
29152          var pair = (toString(number) + 'e').split('e'),
29153              value = func(pair[0] + 'e' + (+pair[1] + precision));
29154
29155          pair = (toString(value) + 'e').split('e');
29156          return +(pair[0] + 'e' + (+pair[1] - precision));
29157        }
29158        return func(number);
29159      };
29160    }
29161
29162    /**
29163     * Creates a set object of `values`.
29164     *
29165     * @private
29166     * @param {Array} values The values to add to the set.
29167     * @returns {Object} Returns the new set.
29168     */
29169    var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {
29170      return new Set(values);
29171    };
29172
29173    /**
29174     * Creates a `_.toPairs` or `_.toPairsIn` function.
29175     *
29176     * @private
29177     * @param {Function} keysFunc The function to get the keys of a given object.
29178     * @returns {Function} Returns the new pairs function.
29179     */
29180    function createToPairs(keysFunc) {
29181      return function(object) {
29182        var tag = getTag(object);
29183        if (tag == mapTag) {
29184          return mapToArray(object);
29185        }
29186        if (tag == setTag) {
29187          return setToPairs(object);
29188        }
29189        return baseToPairs(object, keysFunc(object));
29190      };
29191    }
29192
29193    /**
29194     * Creates a function that either curries or invokes `func` with optional
29195     * `this` binding and partially applied arguments.
29196     *
29197     * @private
29198     * @param {Function|string} func The function or method name to wrap.
29199     * @param {number} bitmask The bitmask flags.
29200     *    1 - `_.bind`
29201     *    2 - `_.bindKey`
29202     *    4 - `_.curry` or `_.curryRight` of a bound function
29203     *    8 - `_.curry`
29204     *   16 - `_.curryRight`
29205     *   32 - `_.partial`
29206     *   64 - `_.partialRight`
29207     *  128 - `_.rearg`
29208     *  256 - `_.ary`
29209     *  512 - `_.flip`
29210     * @param {*} [thisArg] The `this` binding of `func`.
29211     * @param {Array} [partials] The arguments to be partially applied.
29212     * @param {Array} [holders] The `partials` placeholder indexes.
29213     * @param {Array} [argPos] The argument positions of the new function.
29214     * @param {number} [ary] The arity cap of `func`.
29215     * @param {number} [arity] The arity of `func`.
29216     * @returns {Function} Returns the new wrapped function.
29217     */
29218    function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {
29219      var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;
29220      if (!isBindKey && typeof func != 'function') {
29221        throw new TypeError(FUNC_ERROR_TEXT);
29222      }
29223      var length = partials ? partials.length : 0;
29224      if (!length) {
29225        bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);
29226        partials = holders = undefined;
29227      }
29228      ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);
29229      arity = arity === undefined ? arity : toInteger(arity);
29230      length -= holders ? holders.length : 0;
29231
29232      if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {
29233        var partialsRight = partials,
29234            holdersRight = holders;
29235
29236        partials = holders = undefined;
29237      }
29238      var data = isBindKey ? undefined : getData(func);
29239
29240      var newData = [
29241        func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,
29242        argPos, ary, arity
29243      ];
29244
29245      if (data) {
29246        mergeData(newData, data);
29247      }
29248      func = newData[0];
29249      bitmask = newData[1];
29250      thisArg = newData[2];
29251      partials = newData[3];
29252      holders = newData[4];
29253      arity = newData[9] = newData[9] === undefined
29254        ? (isBindKey ? 0 : func.length)
29255        : nativeMax(newData[9] - length, 0);
29256
29257      if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {
29258        bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);
29259      }
29260      if (!bitmask || bitmask == WRAP_BIND_FLAG) {
29261        var result = createBind(func, bitmask, thisArg);
29262      } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {
29263        result = createCurry(func, bitmask, arity);
29264      } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {
29265        result = createPartial(func, bitmask, thisArg, partials);
29266      } else {
29267        result = createHybrid.apply(undefined, newData);
29268      }
29269      var setter = data ? baseSetData : setData;
29270      return setWrapToString(setter(result, newData), func, bitmask);
29271    }
29272
29273    /**
29274     * Used by `_.defaults` to customize its `_.assignIn` use to assign properties
29275     * of source objects to the destination object for all destination properties
29276     * that resolve to `undefined`.
29277     *
29278     * @private
29279     * @param {*} objValue The destination value.
29280     * @param {*} srcValue The source value.
29281     * @param {string} key The key of the property to assign.
29282     * @param {Object} object The parent object of `objValue`.
29283     * @returns {*} Returns the value to assign.
29284     */
29285    function customDefaultsAssignIn(objValue, srcValue, key, object) {
29286      if (objValue === undefined ||
29287          (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {
29288        return srcValue;
29289      }
29290      return objValue;
29291    }
29292
29293    /**
29294     * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source
29295     * objects into destination objects that are passed thru.
29296     *
29297     * @private
29298     * @param {*} objValue The destination value.
29299     * @param {*} srcValue The source value.
29300     * @param {string} key The key of the property to merge.
29301     * @param {Object} object The parent object of `objValue`.
29302     * @param {Object} source The parent object of `srcValue`.
29303     * @param {Object} [stack] Tracks traversed source values and their merged
29304     *  counterparts.
29305     * @returns {*} Returns the value to assign.
29306     */
29307    function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {
29308      if (isObject(objValue) && isObject(srcValue)) {
29309        // Recursively merge objects and arrays (susceptible to call stack limits).
29310        stack.set(srcValue, objValue);
29311        baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);
29312        stack['delete'](srcValue);
29313      }
29314      return objValue;
29315    }
29316
29317    /**
29318     * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain
29319     * objects.
29320     *
29321     * @private
29322     * @param {*} value The value to inspect.
29323     * @param {string} key The key of the property to inspect.
29324     * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.
29325     */
29326    function customOmitClone(value) {
29327      return isPlainObject(value) ? undefined : value;
29328    }
29329
29330    /**
29331     * A specialized version of `baseIsEqualDeep` for arrays with support for
29332     * partial deep comparisons.
29333     *
29334     * @private
29335     * @param {Array} array The array to compare.
29336     * @param {Array} other The other array to compare.
29337     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
29338     * @param {Function} customizer The function to customize comparisons.
29339     * @param {Function} equalFunc The function to determine equivalents of values.
29340     * @param {Object} stack Tracks traversed `array` and `other` objects.
29341     * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
29342     */
29343    function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {
29344      var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
29345          arrLength = array.length,
29346          othLength = other.length;
29347
29348      if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
29349        return false;
29350      }
29351      // Check that cyclic values are equal.
29352      var arrStacked = stack.get(array);
29353      var othStacked = stack.get(other);
29354      if (arrStacked && othStacked) {
29355        return arrStacked == other && othStacked == array;
29356      }
29357      var index = -1,
29358          result = true,
29359          seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;
29360
29361      stack.set(array, other);
29362      stack.set(other, array);
29363
29364      // Ignore non-index properties.
29365      while (++index < arrLength) {
29366        var arrValue = array[index],
29367            othValue = other[index];
29368
29369        if (customizer) {
29370          var compared = isPartial
29371            ? customizer(othValue, arrValue, index, other, array, stack)
29372            : customizer(arrValue, othValue, index, array, other, stack);
29373        }
29374        if (compared !== undefined) {
29375          if (compared) {
29376            continue;
29377          }
29378          result = false;
29379          break;
29380        }
29381        // Recursively compare arrays (susceptible to call stack limits).
29382        if (seen) {
29383          if (!arraySome(other, function(othValue, othIndex) {
29384                if (!cacheHas(seen, othIndex) &&
29385                    (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
29386                  return seen.push(othIndex);
29387                }
29388              })) {
29389            result = false;
29390            break;
29391          }
29392        } else if (!(
29393              arrValue === othValue ||
29394                equalFunc(arrValue, othValue, bitmask, customizer, stack)
29395            )) {
29396          result = false;
29397          break;
29398        }
29399      }
29400      stack['delete'](array);
29401      stack['delete'](other);
29402      return result;
29403    }
29404
29405    /**
29406     * A specialized version of `baseIsEqualDeep` for comparing objects of
29407     * the same `toStringTag`.
29408     *
29409     * **Note:** This function only supports comparing values with tags of
29410     * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
29411     *
29412     * @private
29413     * @param {Object} object The object to compare.
29414     * @param {Object} other The other object to compare.
29415     * @param {string} tag The `toStringTag` of the objects to compare.
29416     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
29417     * @param {Function} customizer The function to customize comparisons.
29418     * @param {Function} equalFunc The function to determine equivalents of values.
29419     * @param {Object} stack Tracks traversed `object` and `other` objects.
29420     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
29421     */
29422    function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
29423      switch (tag) {
29424        case dataViewTag:
29425          if ((object.byteLength != other.byteLength) ||
29426              (object.byteOffset != other.byteOffset)) {
29427            return false;
29428          }
29429          object = object.buffer;
29430          other = other.buffer;
29431
29432        case arrayBufferTag:
29433          if ((object.byteLength != other.byteLength) ||
29434              !equalFunc(new Uint8Array(object), new Uint8Array(other))) {
29435            return false;
29436          }
29437          return true;
29438
29439        case boolTag:
29440        case dateTag:
29441        case numberTag:
29442          // Coerce booleans to `1` or `0` and dates to milliseconds.
29443          // Invalid dates are coerced to `NaN`.
29444          return eq(+object, +other);
29445
29446        case errorTag:
29447          return object.name == other.name && object.message == other.message;
29448
29449        case regexpTag:
29450        case stringTag:
29451          // Coerce regexes to strings and treat strings, primitives and objects,
29452          // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring
29453          // for more details.
29454          return object == (other + '');
29455
29456        case mapTag:
29457          var convert = mapToArray;
29458
29459        case setTag:
29460          var isPartial = bitmask & COMPARE_PARTIAL_FLAG;
29461          convert || (convert = setToArray);
29462
29463          if (object.size != other.size && !isPartial) {
29464            return false;
29465          }
29466          // Assume cyclic values are equal.
29467          var stacked = stack.get(object);
29468          if (stacked) {
29469            return stacked == other;
29470          }
29471          bitmask |= COMPARE_UNORDERED_FLAG;
29472
29473          // Recursively compare objects (susceptible to call stack limits).
29474          stack.set(object, other);
29475          var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);
29476          stack['delete'](object);
29477          return result;
29478
29479        case symbolTag:
29480          if (symbolValueOf) {
29481            return symbolValueOf.call(object) == symbolValueOf.call(other);
29482          }
29483      }
29484      return false;
29485    }
29486
29487    /**
29488     * A specialized version of `baseIsEqualDeep` for objects with support for
29489     * partial deep comparisons.
29490     *
29491     * @private
29492     * @param {Object} object The object to compare.
29493     * @param {Object} other The other object to compare.
29494     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
29495     * @param {Function} customizer The function to customize comparisons.
29496     * @param {Function} equalFunc The function to determine equivalents of values.
29497     * @param {Object} stack Tracks traversed `object` and `other` objects.
29498     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
29499     */
29500    function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
29501      var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
29502          objProps = getAllKeys(object),
29503          objLength = objProps.length,
29504          othProps = getAllKeys(other),
29505          othLength = othProps.length;
29506
29507      if (objLength != othLength && !isPartial) {
29508        return false;
29509      }
29510      var index = objLength;
29511      while (index--) {
29512        var key = objProps[index];
29513        if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {
29514          return false;
29515        }
29516      }
29517      // Check that cyclic values are equal.
29518      var objStacked = stack.get(object);
29519      var othStacked = stack.get(other);
29520      if (objStacked && othStacked) {
29521        return objStacked == other && othStacked == object;
29522      }
29523      var result = true;
29524      stack.set(object, other);
29525      stack.set(other, object);
29526
29527      var skipCtor = isPartial;
29528      while (++index < objLength) {
29529        key = objProps[index];
29530        var objValue = object[key],
29531            othValue = other[key];
29532
29533        if (customizer) {
29534          var compared = isPartial
29535            ? customizer(othValue, objValue, key, other, object, stack)
29536            : customizer(objValue, othValue, key, object, other, stack);
29537        }
29538        // Recursively compare objects (susceptible to call stack limits).
29539        if (!(compared === undefined
29540              ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))
29541              : compared
29542            )) {
29543          result = false;
29544          break;
29545        }
29546        skipCtor || (skipCtor = key == 'constructor');
29547      }
29548      if (result && !skipCtor) {
29549        var objCtor = object.constructor,
29550            othCtor = other.constructor;
29551
29552        // Non `Object` object instances with different constructors are not equal.
29553        if (objCtor != othCtor &&
29554            ('constructor' in object && 'constructor' in other) &&
29555            !(typeof objCtor == 'function' && objCtor instanceof objCtor &&
29556              typeof othCtor == 'function' && othCtor instanceof othCtor)) {
29557          result = false;
29558        }
29559      }
29560      stack['delete'](object);
29561      stack['delete'](other);
29562      return result;
29563    }
29564
29565    /**
29566     * A specialized version of `baseRest` which flattens the rest array.
29567     *
29568     * @private
29569     * @param {Function} func The function to apply a rest parameter to.
29570     * @returns {Function} Returns the new function.
29571     */
29572    function flatRest(func) {
29573      return setToString(overRest(func, undefined, flatten), func + '');
29574    }
29575
29576    /**
29577     * Creates an array of own enumerable property names and symbols of `object`.
29578     *
29579     * @private
29580     * @param {Object} object The object to query.
29581     * @returns {Array} Returns the array of property names and symbols.
29582     */
29583    function getAllKeys(object) {
29584      return baseGetAllKeys(object, keys, getSymbols);
29585    }
29586
29587    /**
29588     * Creates an array of own and inherited enumerable property names and
29589     * symbols of `object`.
29590     *
29591     * @private
29592     * @param {Object} object The object to query.
29593     * @returns {Array} Returns the array of property names and symbols.
29594     */
29595    function getAllKeysIn(object) {
29596      return baseGetAllKeys(object, keysIn, getSymbolsIn);
29597    }
29598
29599    /**
29600     * Gets metadata for `func`.
29601     *
29602     * @private
29603     * @param {Function} func The function to query.
29604     * @returns {*} Returns the metadata for `func`.
29605     */
29606    var getData = !metaMap ? noop : function(func) {
29607      return metaMap.get(func);
29608    };
29609
29610    /**
29611     * Gets the name of `func`.
29612     *
29613     * @private
29614     * @param {Function} func The function to query.
29615     * @returns {string} Returns the function name.
29616     */
29617    function getFuncName(func) {
29618      var result = (func.name + ''),
29619          array = realNames[result],
29620          length = hasOwnProperty.call(realNames, result) ? array.length : 0;
29621
29622      while (length--) {
29623        var data = array[length],
29624            otherFunc = data.func;
29625        if (otherFunc == null || otherFunc == func) {
29626          return data.name;
29627        }
29628      }
29629      return result;
29630    }
29631
29632    /**
29633     * Gets the argument placeholder value for `func`.
29634     *
29635     * @private
29636     * @param {Function} func The function to inspect.
29637     * @returns {*} Returns the placeholder value.
29638     */
29639    function getHolder(func) {
29640      var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;
29641      return object.placeholder;
29642    }
29643
29644    /**
29645     * Gets the appropriate "iteratee" function. If `_.iteratee` is customized,
29646     * this function returns the custom method, otherwise it returns `baseIteratee`.
29647     * If arguments are provided, the chosen function is invoked with them and
29648     * its result is returned.
29649     *
29650     * @private
29651     * @param {*} [value] The value to convert to an iteratee.
29652     * @param {number} [arity] The arity of the created iteratee.
29653     * @returns {Function} Returns the chosen function or its result.
29654     */
29655    function getIteratee() {
29656      var result = lodash.iteratee || iteratee;
29657      result = result === iteratee ? baseIteratee : result;
29658      return arguments.length ? result(arguments[0], arguments[1]) : result;
29659    }
29660
29661    /**
29662     * Gets the data for `map`.
29663     *
29664     * @private
29665     * @param {Object} map The map to query.
29666     * @param {string} key The reference key.
29667     * @returns {*} Returns the map data.
29668     */
29669    function getMapData(map, key) {
29670      var data = map.__data__;
29671      return isKeyable(key)
29672        ? data[typeof key == 'string' ? 'string' : 'hash']
29673        : data.map;
29674    }
29675
29676    /**
29677     * Gets the property names, values, and compare flags of `object`.
29678     *
29679     * @private
29680     * @param {Object} object The object to query.
29681     * @returns {Array} Returns the match data of `object`.
29682     */
29683    function getMatchData(object) {
29684      var result = keys(object),
29685          length = result.length;
29686
29687      while (length--) {
29688        var key = result[length],
29689            value = object[key];
29690
29691        result[length] = [key, value, isStrictComparable(value)];
29692      }
29693      return result;
29694    }
29695
29696    /**
29697     * Gets the native function at `key` of `object`.
29698     *
29699     * @private
29700     * @param {Object} object The object to query.
29701     * @param {string} key The key of the method to get.
29702     * @returns {*} Returns the function if it's native, else `undefined`.
29703     */
29704    function getNative(object, key) {
29705      var value = getValue(object, key);
29706      return baseIsNative(value) ? value : undefined;
29707    }
29708
29709    /**
29710     * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
29711     *
29712     * @private
29713     * @param {*} value The value to query.
29714     * @returns {string} Returns the raw `toStringTag`.
29715     */
29716    function getRawTag(value) {
29717      var isOwn = hasOwnProperty.call(value, symToStringTag),
29718          tag = value[symToStringTag];
29719
29720      try {
29721        value[symToStringTag] = undefined;
29722        var unmasked = true;
29723      } catch (e) {}
29724
29725      var result = nativeObjectToString.call(value);
29726      if (unmasked) {
29727        if (isOwn) {
29728          value[symToStringTag] = tag;
29729        } else {
29730          delete value[symToStringTag];
29731        }
29732      }
29733      return result;
29734    }
29735
29736    /**
29737     * Creates an array of the own enumerable symbols of `object`.
29738     *
29739     * @private
29740     * @param {Object} object The object to query.
29741     * @returns {Array} Returns the array of symbols.
29742     */
29743    var getSymbols = !nativeGetSymbols ? stubArray : function(object) {
29744      if (object == null) {
29745        return [];
29746      }
29747      object = Object(object);
29748      return arrayFilter(nativeGetSymbols(object), function(symbol) {
29749        return propertyIsEnumerable.call(object, symbol);
29750      });
29751    };
29752
29753    /**
29754     * Creates an array of the own and inherited enumerable symbols of `object`.
29755     *
29756     * @private
29757     * @param {Object} object The object to query.
29758     * @returns {Array} Returns the array of symbols.
29759     */
29760    var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {
29761      var result = [];
29762      while (object) {
29763        arrayPush(result, getSymbols(object));
29764        object = getPrototype(object);
29765      }
29766      return result;
29767    };
29768
29769    /**
29770     * Gets the `toStringTag` of `value`.
29771     *
29772     * @private
29773     * @param {*} value The value to query.
29774     * @returns {string} Returns the `toStringTag`.
29775     */
29776    var getTag = baseGetTag;
29777
29778    // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.
29779    if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||
29780        (Map && getTag(new Map) != mapTag) ||
29781        (Promise && getTag(Promise.resolve()) != promiseTag) ||
29782        (Set && getTag(new Set) != setTag) ||
29783        (WeakMap && getTag(new WeakMap) != weakMapTag)) {
29784      getTag = function(value) {
29785        var result = baseGetTag(value),
29786            Ctor = result == objectTag ? value.constructor : undefined,
29787            ctorString = Ctor ? toSource(Ctor) : '';
29788
29789        if (ctorString) {
29790          switch (ctorString) {
29791            case dataViewCtorString: return dataViewTag;
29792            case mapCtorString: return mapTag;
29793            case promiseCtorString: return promiseTag;
29794            case setCtorString: return setTag;
29795            case weakMapCtorString: return weakMapTag;
29796          }
29797        }
29798        return result;
29799      };
29800    }
29801
29802    /**
29803     * Gets the view, applying any `transforms` to the `start` and `end` positions.
29804     *
29805     * @private
29806     * @param {number} start The start of the view.
29807     * @param {number} end The end of the view.
29808     * @param {Array} transforms The transformations to apply to the view.
29809     * @returns {Object} Returns an object containing the `start` and `end`
29810     *  positions of the view.
29811     */
29812    function getView(start, end, transforms) {
29813      var index = -1,
29814          length = transforms.length;
29815
29816      while (++index < length) {
29817        var data = transforms[index],
29818            size = data.size;
29819
29820        switch (data.type) {
29821          case 'drop':      start += size; break;
29822          case 'dropRight': end -= size; break;
29823          case 'take':      end = nativeMin(end, start + size); break;
29824          case 'takeRight': start = nativeMax(start, end - size); break;
29825        }
29826      }
29827      return { 'start': start, 'end': end };
29828    }
29829
29830    /**
29831     * Extracts wrapper details from the `source` body comment.
29832     *
29833     * @private
29834     * @param {string} source The source to inspect.
29835     * @returns {Array} Returns the wrapper details.
29836     */
29837    function getWrapDetails(source) {
29838      var match = source.match(reWrapDetails);
29839      return match ? match[1].split(reSplitDetails) : [];
29840    }
29841
29842    /**
29843     * Checks if `path` exists on `object`.
29844     *
29845     * @private
29846     * @param {Object} object The object to query.
29847     * @param {Array|string} path The path to check.
29848     * @param {Function} hasFunc The function to check properties.
29849     * @returns {boolean} Returns `true` if `path` exists, else `false`.
29850     */
29851    function hasPath(object, path, hasFunc) {
29852      path = castPath(path, object);
29853
29854      var index = -1,
29855          length = path.length,
29856          result = false;
29857
29858      while (++index < length) {
29859        var key = toKey(path[index]);
29860        if (!(result = object != null && hasFunc(object, key))) {
29861          break;
29862        }
29863        object = object[key];
29864      }
29865      if (result || ++index != length) {
29866        return result;
29867      }
29868      length = object == null ? 0 : object.length;
29869      return !!length && isLength(length) && isIndex(key, length) &&
29870        (isArray(object) || isArguments(object));
29871    }
29872
29873    /**
29874     * Initializes an array clone.
29875     *
29876     * @private
29877     * @param {Array} array The array to clone.
29878     * @returns {Array} Returns the initialized clone.
29879     */
29880    function initCloneArray(array) {
29881      var length = array.length,
29882          result = new array.constructor(length);
29883
29884      // Add properties assigned by `RegExp#exec`.
29885      if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {
29886        result.index = array.index;
29887        result.input = array.input;
29888      }
29889      return result;
29890    }
29891
29892    /**
29893     * Initializes an object clone.
29894     *
29895     * @private
29896     * @param {Object} object The object to clone.
29897     * @returns {Object} Returns the initialized clone.
29898     */
29899    function initCloneObject(object) {
29900      return (typeof object.constructor == 'function' && !isPrototype(object))
29901        ? baseCreate(getPrototype(object))
29902        : {};
29903    }
29904
29905    /**
29906     * Initializes an object clone based on its `toStringTag`.
29907     *
29908     * **Note:** This function only supports cloning values with tags of
29909     * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.
29910     *
29911     * @private
29912     * @param {Object} object The object to clone.
29913     * @param {string} tag The `toStringTag` of the object to clone.
29914     * @param {boolean} [isDeep] Specify a deep clone.
29915     * @returns {Object} Returns the initialized clone.
29916     */
29917    function initCloneByTag(object, tag, isDeep) {
29918      var Ctor = object.constructor;
29919      switch (tag) {
29920        case arrayBufferTag:
29921          return cloneArrayBuffer(object);
29922
29923        case boolTag:
29924        case dateTag:
29925          return new Ctor(+object);
29926
29927        case dataViewTag:
29928          return cloneDataView(object, isDeep);
29929
29930        case float32Tag: case float64Tag:
29931        case int8Tag: case int16Tag: case int32Tag:
29932        case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:
29933          return cloneTypedArray(object, isDeep);
29934
29935        case mapTag:
29936          return new Ctor;
29937
29938        case numberTag:
29939        case stringTag:
29940          return new Ctor(object);
29941
29942        case regexpTag:
29943          return cloneRegExp(object);
29944
29945        case setTag:
29946          return new Ctor;
29947
29948        case symbolTag:
29949          return cloneSymbol(object);
29950      }
29951    }
29952
29953    /**
29954     * Inserts wrapper `details` in a comment at the top of the `source` body.
29955     *
29956     * @private
29957     * @param {string} source The source to modify.
29958     * @returns {Array} details The details to insert.
29959     * @returns {string} Returns the modified source.
29960     */
29961    function insertWrapDetails(source, details) {
29962      var length = details.length;
29963      if (!length) {
29964        return source;
29965      }
29966      var lastIndex = length - 1;
29967      details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];
29968      details = details.join(length > 2 ? ', ' : ' ');
29969      return source.replace(reWrapComment, '{\n/* [wrapped with ' + details + '] */\n');
29970    }
29971
29972    /**
29973     * Checks if `value` is a flattenable `arguments` object or array.
29974     *
29975     * @private
29976     * @param {*} value The value to check.
29977     * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.
29978     */
29979    function isFlattenable(value) {
29980      return isArray(value) || isArguments(value) ||
29981        !!(spreadableSymbol && value && value[spreadableSymbol]);
29982    }
29983
29984    /**
29985     * Checks if `value` is a valid array-like index.
29986     *
29987     * @private
29988     * @param {*} value The value to check.
29989     * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
29990     * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
29991     */
29992    function isIndex(value, length) {
29993      var type = typeof value;
29994      length = length == null ? MAX_SAFE_INTEGER : length;
29995
29996      return !!length &&
29997        (type == 'number' ||
29998          (type != 'symbol' && reIsUint.test(value))) &&
29999            (value > -1 && value % 1 == 0 && value < length);
30000    }
30001
30002    /**
30003     * Checks if the given arguments are from an iteratee call.
30004     *
30005     * @private
30006     * @param {*} value The potential iteratee value argument.
30007     * @param {*} index The potential iteratee index or key argument.
30008     * @param {*} object The potential iteratee object argument.
30009     * @returns {boolean} Returns `true` if the arguments are from an iteratee call,
30010     *  else `false`.
30011     */
30012    function isIterateeCall(value, index, object) {
30013      if (!isObject(object)) {
30014        return false;
30015      }
30016      var type = typeof index;
30017      if (type == 'number'
30018            ? (isArrayLike(object) && isIndex(index, object.length))
30019            : (type == 'string' && index in object)
30020          ) {
30021        return eq(object[index], value);
30022      }
30023      return false;
30024    }
30025
30026    /**
30027     * Checks if `value` is a property name and not a property path.
30028     *
30029     * @private
30030     * @param {*} value The value to check.
30031     * @param {Object} [object] The object to query keys on.
30032     * @returns {boolean} Returns `true` if `value` is a property name, else `false`.
30033     */
30034    function isKey(value, object) {
30035      if (isArray(value)) {
30036        return false;
30037      }
30038      var type = typeof value;
30039      if (type == 'number' || type == 'symbol' || type == 'boolean' ||
30040          value == null || isSymbol(value)) {
30041        return true;
30042      }
30043      return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||
30044        (object != null && value in Object(object));
30045    }
30046
30047    /**
30048     * Checks if `value` is suitable for use as unique object key.
30049     *
30050     * @private
30051     * @param {*} value The value to check.
30052     * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
30053     */
30054    function isKeyable(value) {
30055      var type = typeof value;
30056      return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
30057        ? (value !== '__proto__')
30058        : (value === null);
30059    }
30060
30061    /**
30062     * Checks if `func` has a lazy counterpart.
30063     *
30064     * @private
30065     * @param {Function} func The function to check.
30066     * @returns {boolean} Returns `true` if `func` has a lazy counterpart,
30067     *  else `false`.
30068     */
30069    function isLaziable(func) {
30070      var funcName = getFuncName(func),
30071          other = lodash[funcName];
30072
30073      if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {
30074        return false;
30075      }
30076      if (func === other) {
30077        return true;
30078      }
30079      var data = getData(other);
30080      return !!data && func === data[0];
30081    }
30082
30083    /**
30084     * Checks if `func` has its source masked.
30085     *
30086     * @private
30087     * @param {Function} func The function to check.
30088     * @returns {boolean} Returns `true` if `func` is masked, else `false`.
30089     */
30090    function isMasked(func) {
30091      return !!maskSrcKey && (maskSrcKey in func);
30092    }
30093
30094    /**
30095     * Checks if `func` is capable of being masked.
30096     *
30097     * @private
30098     * @param {*} value The value to check.
30099     * @returns {boolean} Returns `true` if `func` is maskable, else `false`.
30100     */
30101    var isMaskable = coreJsData ? isFunction : stubFalse;
30102
30103    /**
30104     * Checks if `value` is likely a prototype object.
30105     *
30106     * @private
30107     * @param {*} value The value to check.
30108     * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
30109     */
30110    function isPrototype(value) {
30111      var Ctor = value && value.constructor,
30112          proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;
30113
30114      return value === proto;
30115    }
30116
30117    /**
30118     * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.
30119     *
30120     * @private
30121     * @param {*} value The value to check.
30122     * @returns {boolean} Returns `true` if `value` if suitable for strict
30123     *  equality comparisons, else `false`.
30124     */
30125    function isStrictComparable(value) {
30126      return value === value && !isObject(value);
30127    }
30128
30129    /**
30130     * A specialized version of `matchesProperty` for source values suitable
30131     * for strict equality comparisons, i.e. `===`.
30132     *
30133     * @private
30134     * @param {string} key The key of the property to get.
30135     * @param {*} srcValue The value to match.
30136     * @returns {Function} Returns the new spec function.
30137     */
30138    function matchesStrictComparable(key, srcValue) {
30139      return function(object) {
30140        if (object == null) {
30141          return false;
30142        }
30143        return object[key] === srcValue &&
30144          (srcValue !== undefined || (key in Object(object)));
30145      };
30146    }
30147
30148    /**
30149     * A specialized version of `_.memoize` which clears the memoized function's
30150     * cache when it exceeds `MAX_MEMOIZE_SIZE`.
30151     *
30152     * @private
30153     * @param {Function} func The function to have its output memoized.
30154     * @returns {Function} Returns the new memoized function.
30155     */
30156    function memoizeCapped(func) {
30157      var result = memoize(func, function(key) {
30158        if (cache.size === MAX_MEMOIZE_SIZE) {
30159          cache.clear();
30160        }
30161        return key;
30162      });
30163
30164      var cache = result.cache;
30165      return result;
30166    }
30167
30168    /**
30169     * Merges the function metadata of `source` into `data`.
30170     *
30171     * Merging metadata reduces the number of wrappers used to invoke a function.
30172     * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`
30173     * may be applied regardless of execution order. Methods like `_.ary` and
30174     * `_.rearg` modify function arguments, making the order in which they are
30175     * executed important, preventing the merging of metadata. However, we make
30176     * an exception for a safe combined case where curried functions have `_.ary`
30177     * and or `_.rearg` applied.
30178     *
30179     * @private
30180     * @param {Array} data The destination metadata.
30181     * @param {Array} source The source metadata.
30182     * @returns {Array} Returns `data`.
30183     */
30184    function mergeData(data, source) {
30185      var bitmask = data[1],
30186          srcBitmask = source[1],
30187          newBitmask = bitmask | srcBitmask,
30188          isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);
30189
30190      var isCombo =
30191        ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||
30192        ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||
30193        ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));
30194
30195      // Exit early if metadata can't be merged.
30196      if (!(isCommon || isCombo)) {
30197        return data;
30198      }
30199      // Use source `thisArg` if available.
30200      if (srcBitmask & WRAP_BIND_FLAG) {
30201        data[2] = source[2];
30202        // Set when currying a bound function.
30203        newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;
30204      }
30205      // Compose partial arguments.
30206      var value = source[3];
30207      if (value) {
30208        var partials = data[3];
30209        data[3] = partials ? composeArgs(partials, value, source[4]) : value;
30210        data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];
30211      }
30212      // Compose partial right arguments.
30213      value = source[5];
30214      if (value) {
30215        partials = data[5];
30216        data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;
30217        data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];
30218      }
30219      // Use source `argPos` if available.
30220      value = source[7];
30221      if (value) {
30222        data[7] = value;
30223      }
30224      // Use source `ary` if it's smaller.
30225      if (srcBitmask & WRAP_ARY_FLAG) {
30226        data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);
30227      }
30228      // Use source `arity` if one is not provided.
30229      if (data[9] == null) {
30230        data[9] = source[9];
30231      }
30232      // Use source `func` and merge bitmasks.
30233      data[0] = source[0];
30234      data[1] = newBitmask;
30235
30236      return data;
30237    }
30238
30239    /**
30240     * This function is like
30241     * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
30242     * except that it includes inherited enumerable properties.
30243     *
30244     * @private
30245     * @param {Object} object The object to query.
30246     * @returns {Array} Returns the array of property names.
30247     */
30248    function nativeKeysIn(object) {
30249      var result = [];
30250      if (object != null) {
30251        for (var key in Object(object)) {
30252          result.push(key);
30253        }
30254      }
30255      return result;
30256    }
30257
30258    /**
30259     * Converts `value` to a string using `Object.prototype.toString`.
30260     *
30261     * @private
30262     * @param {*} value The value to convert.
30263     * @returns {string} Returns the converted string.
30264     */
30265    function objectToString(value) {
30266      return nativeObjectToString.call(value);
30267    }
30268
30269    /**
30270     * A specialized version of `baseRest` which transforms the rest array.
30271     *
30272     * @private
30273     * @param {Function} func The function to apply a rest parameter to.
30274     * @param {number} [start=func.length-1] The start position of the rest parameter.
30275     * @param {Function} transform The rest array transform.
30276     * @returns {Function} Returns the new function.
30277     */
30278    function overRest(func, start, transform) {
30279      start = nativeMax(start === undefined ? (func.length - 1) : start, 0);
30280      return function() {
30281        var args = arguments,
30282            index = -1,
30283            length = nativeMax(args.length - start, 0),
30284            array = Array(length);
30285
30286        while (++index < length) {
30287          array[index] = args[start + index];
30288        }
30289        index = -1;
30290        var otherArgs = Array(start + 1);
30291        while (++index < start) {
30292          otherArgs[index] = args[index];
30293        }
30294        otherArgs[start] = transform(array);
30295        return apply(func, this, otherArgs);
30296      };
30297    }
30298
30299    /**
30300     * Gets the parent value at `path` of `object`.
30301     *
30302     * @private
30303     * @param {Object} object The object to query.
30304     * @param {Array} path The path to get the parent value of.
30305     * @returns {*} Returns the parent value.
30306     */
30307    function parent(object, path) {
30308      return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));
30309    }
30310
30311    /**
30312     * Reorder `array` according to the specified indexes where the element at
30313     * the first index is assigned as the first element, the element at
30314     * the second index is assigned as the second element, and so on.
30315     *
30316     * @private
30317     * @param {Array} array The array to reorder.
30318     * @param {Array} indexes The arranged array indexes.
30319     * @returns {Array} Returns `array`.
30320     */
30321    function reorder(array, indexes) {
30322      var arrLength = array.length,
30323          length = nativeMin(indexes.length, arrLength),
30324          oldArray = copyArray(array);
30325
30326      while (length--) {
30327        var index = indexes[length];
30328        array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;
30329      }
30330      return array;
30331    }
30332
30333    /**
30334     * Gets the value at `key`, unless `key` is "__proto__" or "constructor".
30335     *
30336     * @private
30337     * @param {Object} object The object to query.
30338     * @param {string} key The key of the property to get.
30339     * @returns {*} Returns the property value.
30340     */
30341    function safeGet(object, key) {
30342      if (key === 'constructor' && typeof object[key] === 'function') {
30343        return;
30344      }
30345
30346      if (key == '__proto__') {
30347        return;
30348      }
30349
30350      return object[key];
30351    }
30352
30353    /**
30354     * Sets metadata for `func`.
30355     *
30356     * **Note:** If this function becomes hot, i.e. is invoked a lot in a short
30357     * period of time, it will trip its breaker and transition to an identity
30358     * function to avoid garbage collection pauses in V8. See
30359     * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)
30360     * for more details.
30361     *
30362     * @private
30363     * @param {Function} func The function to associate metadata with.
30364     * @param {*} data The metadata.
30365     * @returns {Function} Returns `func`.
30366     */
30367    var setData = shortOut(baseSetData);
30368
30369    /**
30370     * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).
30371     *
30372     * @private
30373     * @param {Function} func The function to delay.
30374     * @param {number} wait The number of milliseconds to delay invocation.
30375     * @returns {number|Object} Returns the timer id or timeout object.
30376     */
30377    var setTimeout = ctxSetTimeout || function(func, wait) {
30378      return root.setTimeout(func, wait);
30379    };
30380
30381    /**
30382     * Sets the `toString` method of `func` to return `string`.
30383     *
30384     * @private
30385     * @param {Function} func The function to modify.
30386     * @param {Function} string The `toString` result.
30387     * @returns {Function} Returns `func`.
30388     */
30389    var setToString = shortOut(baseSetToString);
30390
30391    /**
30392     * Sets the `toString` method of `wrapper` to mimic the source of `reference`
30393     * with wrapper details in a comment at the top of the source body.
30394     *
30395     * @private
30396     * @param {Function} wrapper The function to modify.
30397     * @param {Function} reference The reference function.
30398     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
30399     * @returns {Function} Returns `wrapper`.
30400     */
30401    function setWrapToString(wrapper, reference, bitmask) {
30402      var source = (reference + '');
30403      return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));
30404    }
30405
30406    /**
30407     * Creates a function that'll short out and invoke `identity` instead
30408     * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`
30409     * milliseconds.
30410     *
30411     * @private
30412     * @param {Function} func The function to restrict.
30413     * @returns {Function} Returns the new shortable function.
30414     */
30415    function shortOut(func) {
30416      var count = 0,
30417          lastCalled = 0;
30418
30419      return function() {
30420        var stamp = nativeNow(),
30421            remaining = HOT_SPAN - (stamp - lastCalled);
30422
30423        lastCalled = stamp;
30424        if (remaining > 0) {
30425          if (++count >= HOT_COUNT) {
30426            return arguments[0];
30427          }
30428        } else {
30429          count = 0;
30430        }
30431        return func.apply(undefined, arguments);
30432      };
30433    }
30434
30435    /**
30436     * A specialized version of `_.shuffle` which mutates and sets the size of `array`.
30437     *
30438     * @private
30439     * @param {Array} array The array to shuffle.
30440     * @param {number} [size=array.length] The size of `array`.
30441     * @returns {Array} Returns `array`.
30442     */
30443    function shuffleSelf(array, size) {
30444      var index = -1,
30445          length = array.length,
30446          lastIndex = length - 1;
30447
30448      size = size === undefined ? length : size;
30449      while (++index < size) {
30450        var rand = baseRandom(index, lastIndex),
30451            value = array[rand];
30452
30453        array[rand] = array[index];
30454        array[index] = value;
30455      }
30456      array.length = size;
30457      return array;
30458    }
30459
30460    /**
30461     * Converts `string` to a property path array.
30462     *
30463     * @private
30464     * @param {string} string The string to convert.
30465     * @returns {Array} Returns the property path array.
30466     */
30467    var stringToPath = memoizeCapped(function(string) {
30468      var result = [];
30469      if (string.charCodeAt(0) === 46 /* . */) {
30470        result.push('');
30471      }
30472      string.replace(rePropName, function(match, number, quote, subString) {
30473        result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));
30474      });
30475      return result;
30476    });
30477
30478    /**
30479     * Converts `value` to a string key if it's not a string or symbol.
30480     *
30481     * @private
30482     * @param {*} value The value to inspect.
30483     * @returns {string|symbol} Returns the key.
30484     */
30485    function toKey(value) {
30486      if (typeof value == 'string' || isSymbol(value)) {
30487        return value;
30488      }
30489      var result = (value + '');
30490      return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
30491    }
30492
30493    /**
30494     * Converts `func` to its source code.
30495     *
30496     * @private
30497     * @param {Function} func The function to convert.
30498     * @returns {string} Returns the source code.
30499     */
30500    function toSource(func) {
30501      if (func != null) {
30502        try {
30503          return funcToString.call(func);
30504        } catch (e) {}
30505        try {
30506          return (func + '');
30507        } catch (e) {}
30508      }
30509      return '';
30510    }
30511
30512    /**
30513     * Updates wrapper `details` based on `bitmask` flags.
30514     *
30515     * @private
30516     * @returns {Array} details The details to modify.
30517     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
30518     * @returns {Array} Returns `details`.
30519     */
30520    function updateWrapDetails(details, bitmask) {
30521      arrayEach(wrapFlags, function(pair) {
30522        var value = '_.' + pair[0];
30523        if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {
30524          details.push(value);
30525        }
30526      });
30527      return details.sort();
30528    }
30529
30530    /**
30531     * Creates a clone of `wrapper`.
30532     *
30533     * @private
30534     * @param {Object} wrapper The wrapper to clone.
30535     * @returns {Object} Returns the cloned wrapper.
30536     */
30537    function wrapperClone(wrapper) {
30538      if (wrapper instanceof LazyWrapper) {
30539        return wrapper.clone();
30540      }
30541      var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);
30542      result.__actions__ = copyArray(wrapper.__actions__);
30543      result.__index__  = wrapper.__index__;
30544      result.__values__ = wrapper.__values__;
30545      return result;
30546    }
30547
30548    /*------------------------------------------------------------------------*/
30549
30550    /**
30551     * Creates an array of elements split into groups the length of `size`.
30552     * If `array` can't be split evenly, the final chunk will be the remaining
30553     * elements.
30554     *
30555     * @static
30556     * @memberOf _
30557     * @since 3.0.0
30558     * @category Array
30559     * @param {Array} array The array to process.
30560     * @param {number} [size=1] The length of each chunk
30561     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
30562     * @returns {Array} Returns the new array of chunks.
30563     * @example
30564     *
30565     * _.chunk(['a', 'b', 'c', 'd'], 2);
30566     * // => [['a', 'b'], ['c', 'd']]
30567     *
30568     * _.chunk(['a', 'b', 'c', 'd'], 3);
30569     * // => [['a', 'b', 'c'], ['d']]
30570     */
30571    function chunk(array, size, guard) {
30572      if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {
30573        size = 1;
30574      } else {
30575        size = nativeMax(toInteger(size), 0);
30576      }
30577      var length = array == null ? 0 : array.length;
30578      if (!length || size < 1) {
30579        return [];
30580      }
30581      var index = 0,
30582          resIndex = 0,
30583          result = Array(nativeCeil(length / size));
30584
30585      while (index < length) {
30586        result[resIndex++] = baseSlice(array, index, (index += size));
30587      }
30588      return result;
30589    }
30590
30591    /**
30592     * Creates an array with all falsey values removed. The values `false`, `null`,
30593     * `0`, `""`, `undefined`, and `NaN` are falsey.
30594     *
30595     * @static
30596     * @memberOf _
30597     * @since 0.1.0
30598     * @category Array
30599     * @param {Array} array The array to compact.
30600     * @returns {Array} Returns the new array of filtered values.
30601     * @example
30602     *
30603     * _.compact([0, 1, false, 2, '', 3]);
30604     * // => [1, 2, 3]
30605     */
30606    function compact(array) {
30607      var index = -1,
30608          length = array == null ? 0 : array.length,
30609          resIndex = 0,
30610          result = [];
30611
30612      while (++index < length) {
30613        var value = array[index];
30614        if (value) {
30615          result[resIndex++] = value;
30616        }
30617      }
30618      return result;
30619    }
30620
30621    /**
30622     * Creates a new array concatenating `array` with any additional arrays
30623     * and/or values.
30624     *
30625     * @static
30626     * @memberOf _
30627     * @since 4.0.0
30628     * @category Array
30629     * @param {Array} array The array to concatenate.
30630     * @param {...*} [values] The values to concatenate.
30631     * @returns {Array} Returns the new concatenated array.
30632     * @example
30633     *
30634     * var array = [1];
30635     * var other = _.concat(array, 2, [3], [[4]]);
30636     *
30637     * console.log(other);
30638     * // => [1, 2, 3, [4]]
30639     *
30640     * console.log(array);
30641     * // => [1]
30642     */
30643    function concat() {
30644      var length = arguments.length;
30645      if (!length) {
30646        return [];
30647      }
30648      var args = Array(length - 1),
30649          array = arguments[0],
30650          index = length;
30651
30652      while (index--) {
30653        args[index - 1] = arguments[index];
30654      }
30655      return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));
30656    }
30657
30658    /**
30659     * Creates an array of `array` values not included in the other given arrays
30660     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
30661     * for equality comparisons. The order and references of result values are
30662     * determined by the first array.
30663     *
30664     * **Note:** Unlike `_.pullAll`, this method returns a new array.
30665     *
30666     * @static
30667     * @memberOf _
30668     * @since 0.1.0
30669     * @category Array
30670     * @param {Array} array The array to inspect.
30671     * @param {...Array} [values] The values to exclude.
30672     * @returns {Array} Returns the new array of filtered values.
30673     * @see _.without, _.xor
30674     * @example
30675     *
30676     * _.difference([2, 1], [2, 3]);
30677     * // => [1]
30678     */
30679    var difference = baseRest(function(array, values) {
30680      return isArrayLikeObject(array)
30681        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))
30682        : [];
30683    });
30684
30685    /**
30686     * This method is like `_.difference` except that it accepts `iteratee` which
30687     * is invoked for each element of `array` and `values` to generate the criterion
30688     * by which they're compared. The order and references of result values are
30689     * determined by the first array. The iteratee is invoked with one argument:
30690     * (value).
30691     *
30692     * **Note:** Unlike `_.pullAllBy`, this method returns a new array.
30693     *
30694     * @static
30695     * @memberOf _
30696     * @since 4.0.0
30697     * @category Array
30698     * @param {Array} array The array to inspect.
30699     * @param {...Array} [values] The values to exclude.
30700     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
30701     * @returns {Array} Returns the new array of filtered values.
30702     * @example
30703     *
30704     * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);
30705     * // => [1.2]
30706     *
30707     * // The `_.property` iteratee shorthand.
30708     * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');
30709     * // => [{ 'x': 2 }]
30710     */
30711    var differenceBy = baseRest(function(array, values) {
30712      var iteratee = last(values);
30713      if (isArrayLikeObject(iteratee)) {
30714        iteratee = undefined;
30715      }
30716      return isArrayLikeObject(array)
30717        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))
30718        : [];
30719    });
30720
30721    /**
30722     * This method is like `_.difference` except that it accepts `comparator`
30723     * which is invoked to compare elements of `array` to `values`. The order and
30724     * references of result values are determined by the first array. The comparator
30725     * is invoked with two arguments: (arrVal, othVal).
30726     *
30727     * **Note:** Unlike `_.pullAllWith`, this method returns a new array.
30728     *
30729     * @static
30730     * @memberOf _
30731     * @since 4.0.0
30732     * @category Array
30733     * @param {Array} array The array to inspect.
30734     * @param {...Array} [values] The values to exclude.
30735     * @param {Function} [comparator] The comparator invoked per element.
30736     * @returns {Array} Returns the new array of filtered values.
30737     * @example
30738     *
30739     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
30740     *
30741     * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);
30742     * // => [{ 'x': 2, 'y': 1 }]
30743     */
30744    var differenceWith = baseRest(function(array, values) {
30745      var comparator = last(values);
30746      if (isArrayLikeObject(comparator)) {
30747        comparator = undefined;
30748      }
30749      return isArrayLikeObject(array)
30750        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)
30751        : [];
30752    });
30753
30754    /**
30755     * Creates a slice of `array` with `n` elements dropped from the beginning.
30756     *
30757     * @static
30758     * @memberOf _
30759     * @since 0.5.0
30760     * @category Array
30761     * @param {Array} array The array to query.
30762     * @param {number} [n=1] The number of elements to drop.
30763     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
30764     * @returns {Array} Returns the slice of `array`.
30765     * @example
30766     *
30767     * _.drop([1, 2, 3]);
30768     * // => [2, 3]
30769     *
30770     * _.drop([1, 2, 3], 2);
30771     * // => [3]
30772     *
30773     * _.drop([1, 2, 3], 5);
30774     * // => []
30775     *
30776     * _.drop([1, 2, 3], 0);
30777     * // => [1, 2, 3]
30778     */
30779    function drop(array, n, guard) {
30780      var length = array == null ? 0 : array.length;
30781      if (!length) {
30782        return [];
30783      }
30784      n = (guard || n === undefined) ? 1 : toInteger(n);
30785      return baseSlice(array, n < 0 ? 0 : n, length);
30786    }
30787
30788    /**
30789     * Creates a slice of `array` with `n` elements dropped from the end.
30790     *
30791     * @static
30792     * @memberOf _
30793     * @since 3.0.0
30794     * @category Array
30795     * @param {Array} array The array to query.
30796     * @param {number} [n=1] The number of elements to drop.
30797     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
30798     * @returns {Array} Returns the slice of `array`.
30799     * @example
30800     *
30801     * _.dropRight([1, 2, 3]);
30802     * // => [1, 2]
30803     *
30804     * _.dropRight([1, 2, 3], 2);
30805     * // => [1]
30806     *
30807     * _.dropRight([1, 2, 3], 5);
30808     * // => []
30809     *
30810     * _.dropRight([1, 2, 3], 0);
30811     * // => [1, 2, 3]
30812     */
30813    function dropRight(array, n, guard) {
30814      var length = array == null ? 0 : array.length;
30815      if (!length) {
30816        return [];
30817      }
30818      n = (guard || n === undefined) ? 1 : toInteger(n);
30819      n = length - n;
30820      return baseSlice(array, 0, n < 0 ? 0 : n);
30821    }
30822
30823    /**
30824     * Creates a slice of `array` excluding elements dropped from the end.
30825     * Elements are dropped until `predicate` returns falsey. The predicate is
30826     * invoked with three arguments: (value, index, array).
30827     *
30828     * @static
30829     * @memberOf _
30830     * @since 3.0.0
30831     * @category Array
30832     * @param {Array} array The array to query.
30833     * @param {Function} [predicate=_.identity] The function invoked per iteration.
30834     * @returns {Array} Returns the slice of `array`.
30835     * @example
30836     *
30837     * var users = [
30838     *   { 'user': 'barney',  'active': true },
30839     *   { 'user': 'fred',    'active': false },
30840     *   { 'user': 'pebbles', 'active': false }
30841     * ];
30842     *
30843     * _.dropRightWhile(users, function(o) { return !o.active; });
30844     * // => objects for ['barney']
30845     *
30846     * // The `_.matches` iteratee shorthand.
30847     * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });
30848     * // => objects for ['barney', 'fred']
30849     *
30850     * // The `_.matchesProperty` iteratee shorthand.
30851     * _.dropRightWhile(users, ['active', false]);
30852     * // => objects for ['barney']
30853     *
30854     * // The `_.property` iteratee shorthand.
30855     * _.dropRightWhile(users, 'active');
30856     * // => objects for ['barney', 'fred', 'pebbles']
30857     */
30858    function dropRightWhile(array, predicate) {
30859      return (array && array.length)
30860        ? baseWhile(array, getIteratee(predicate, 3), true, true)
30861        : [];
30862    }
30863
30864    /**
30865     * Creates a slice of `array` excluding elements dropped from the beginning.
30866     * Elements are dropped until `predicate` returns falsey. The predicate is
30867     * invoked with three arguments: (value, index, array).
30868     *
30869     * @static
30870     * @memberOf _
30871     * @since 3.0.0
30872     * @category Array
30873     * @param {Array} array The array to query.
30874     * @param {Function} [predicate=_.identity] The function invoked per iteration.
30875     * @returns {Array} Returns the slice of `array`.
30876     * @example
30877     *
30878     * var users = [
30879     *   { 'user': 'barney',  'active': false },
30880     *   { 'user': 'fred',    'active': false },
30881     *   { 'user': 'pebbles', 'active': true }
30882     * ];
30883     *
30884     * _.dropWhile(users, function(o) { return !o.active; });
30885     * // => objects for ['pebbles']
30886     *
30887     * // The `_.matches` iteratee shorthand.
30888     * _.dropWhile(users, { 'user': 'barney', 'active': false });
30889     * // => objects for ['fred', 'pebbles']
30890     *
30891     * // The `_.matchesProperty` iteratee shorthand.
30892     * _.dropWhile(users, ['active', false]);
30893     * // => objects for ['pebbles']
30894     *
30895     * // The `_.property` iteratee shorthand.
30896     * _.dropWhile(users, 'active');
30897     * // => objects for ['barney', 'fred', 'pebbles']
30898     */
30899    function dropWhile(array, predicate) {
30900      return (array && array.length)
30901        ? baseWhile(array, getIteratee(predicate, 3), true)
30902        : [];
30903    }
30904
30905    /**
30906     * Fills elements of `array` with `value` from `start` up to, but not
30907     * including, `end`.
30908     *
30909     * **Note:** This method mutates `array`.
30910     *
30911     * @static
30912     * @memberOf _
30913     * @since 3.2.0
30914     * @category Array
30915     * @param {Array} array The array to fill.
30916     * @param {*} value The value to fill `array` with.
30917     * @param {number} [start=0] The start position.
30918     * @param {number} [end=array.length] The end position.
30919     * @returns {Array} Returns `array`.
30920     * @example
30921     *
30922     * var array = [1, 2, 3];
30923     *
30924     * _.fill(array, 'a');
30925     * console.log(array);
30926     * // => ['a', 'a', 'a']
30927     *
30928     * _.fill(Array(3), 2);
30929     * // => [2, 2, 2]
30930     *
30931     * _.fill([4, 6, 8, 10], '*', 1, 3);
30932     * // => [4, '*', '*', 10]
30933     */
30934    function fill(array, value, start, end) {
30935      var length = array == null ? 0 : array.length;
30936      if (!length) {
30937        return [];
30938      }
30939      if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {
30940        start = 0;
30941        end = length;
30942      }
30943      return baseFill(array, value, start, end);
30944    }
30945
30946    /**
30947     * This method is like `_.find` except that it returns the index of the first
30948     * element `predicate` returns truthy for instead of the element itself.
30949     *
30950     * @static
30951     * @memberOf _
30952     * @since 1.1.0
30953     * @category Array
30954     * @param {Array} array The array to inspect.
30955     * @param {Function} [predicate=_.identity] The function invoked per iteration.
30956     * @param {number} [fromIndex=0] The index to search from.
30957     * @returns {number} Returns the index of the found element, else `-1`.
30958     * @example
30959     *
30960     * var users = [
30961     *   { 'user': 'barney',  'active': false },
30962     *   { 'user': 'fred',    'active': false },
30963     *   { 'user': 'pebbles', 'active': true }
30964     * ];
30965     *
30966     * _.findIndex(users, function(o) { return o.user == 'barney'; });
30967     * // => 0
30968     *
30969     * // The `_.matches` iteratee shorthand.
30970     * _.findIndex(users, { 'user': 'fred', 'active': false });
30971     * // => 1
30972     *
30973     * // The `_.matchesProperty` iteratee shorthand.
30974     * _.findIndex(users, ['active', false]);
30975     * // => 0
30976     *
30977     * // The `_.property` iteratee shorthand.
30978     * _.findIndex(users, 'active');
30979     * // => 2
30980     */
30981    function findIndex(array, predicate, fromIndex) {
30982      var length = array == null ? 0 : array.length;
30983      if (!length) {
30984        return -1;
30985      }
30986      var index = fromIndex == null ? 0 : toInteger(fromIndex);
30987      if (index < 0) {
30988        index = nativeMax(length + index, 0);
30989      }
30990      return baseFindIndex(array, getIteratee(predicate, 3), index);
30991    }
30992
30993    /**
30994     * This method is like `_.findIndex` except that it iterates over elements
30995     * of `collection` from right to left.
30996     *
30997     * @static
30998     * @memberOf _
30999     * @since 2.0.0
31000     * @category Array
31001     * @param {Array} array The array to inspect.
31002     * @param {Function} [predicate=_.identity] The function invoked per iteration.
31003     * @param {number} [fromIndex=array.length-1] The index to search from.
31004     * @returns {number} Returns the index of the found element, else `-1`.
31005     * @example
31006     *
31007     * var users = [
31008     *   { 'user': 'barney',  'active': true },
31009     *   { 'user': 'fred',    'active': false },
31010     *   { 'user': 'pebbles', 'active': false }
31011     * ];
31012     *
31013     * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });
31014     * // => 2
31015     *
31016     * // The `_.matches` iteratee shorthand.
31017     * _.findLastIndex(users, { 'user': 'barney', 'active': true });
31018     * // => 0
31019     *
31020     * // The `_.matchesProperty` iteratee shorthand.
31021     * _.findLastIndex(users, ['active', false]);
31022     * // => 2
31023     *
31024     * // The `_.property` iteratee shorthand.
31025     * _.findLastIndex(users, 'active');
31026     * // => 0
31027     */
31028    function findLastIndex(array, predicate, fromIndex) {
31029      var length = array == null ? 0 : array.length;
31030      if (!length) {
31031        return -1;
31032      }
31033      var index = length - 1;
31034      if (fromIndex !== undefined) {
31035        index = toInteger(fromIndex);
31036        index = fromIndex < 0
31037          ? nativeMax(length + index, 0)
31038          : nativeMin(index, length - 1);
31039      }
31040      return baseFindIndex(array, getIteratee(predicate, 3), index, true);
31041    }
31042
31043    /**
31044     * Flattens `array` a single level deep.
31045     *
31046     * @static
31047     * @memberOf _
31048     * @since 0.1.0
31049     * @category Array
31050     * @param {Array} array The array to flatten.
31051     * @returns {Array} Returns the new flattened array.
31052     * @example
31053     *
31054     * _.flatten([1, [2, [3, [4]], 5]]);
31055     * // => [1, 2, [3, [4]], 5]
31056     */
31057    function flatten(array) {
31058      var length = array == null ? 0 : array.length;
31059      return length ? baseFlatten(array, 1) : [];
31060    }
31061
31062    /**
31063     * Recursively flattens `array`.
31064     *
31065     * @static
31066     * @memberOf _
31067     * @since 3.0.0
31068     * @category Array
31069     * @param {Array} array The array to flatten.
31070     * @returns {Array} Returns the new flattened array.
31071     * @example
31072     *
31073     * _.flattenDeep([1, [2, [3, [4]], 5]]);
31074     * // => [1, 2, 3, 4, 5]
31075     */
31076    function flattenDeep(array) {
31077      var length = array == null ? 0 : array.length;
31078      return length ? baseFlatten(array, INFINITY) : [];
31079    }
31080
31081    /**
31082     * Recursively flatten `array` up to `depth` times.
31083     *
31084     * @static
31085     * @memberOf _
31086     * @since 4.4.0
31087     * @category Array
31088     * @param {Array} array The array to flatten.
31089     * @param {number} [depth=1] The maximum recursion depth.
31090     * @returns {Array} Returns the new flattened array.
31091     * @example
31092     *
31093     * var array = [1, [2, [3, [4]], 5]];
31094     *
31095     * _.flattenDepth(array, 1);
31096     * // => [1, 2, [3, [4]], 5]
31097     *
31098     * _.flattenDepth(array, 2);
31099     * // => [1, 2, 3, [4], 5]
31100     */
31101    function flattenDepth(array, depth) {
31102      var length = array == null ? 0 : array.length;
31103      if (!length) {
31104        return [];
31105      }
31106      depth = depth === undefined ? 1 : toInteger(depth);
31107      return baseFlatten(array, depth);
31108    }
31109
31110    /**
31111     * The inverse of `_.toPairs`; this method returns an object composed
31112     * from key-value `pairs`.
31113     *
31114     * @static
31115     * @memberOf _
31116     * @since 4.0.0
31117     * @category Array
31118     * @param {Array} pairs The key-value pairs.
31119     * @returns {Object} Returns the new object.
31120     * @example
31121     *
31122     * _.fromPairs([['a', 1], ['b', 2]]);
31123     * // => { 'a': 1, 'b': 2 }
31124     */
31125    function fromPairs(pairs) {
31126      var index = -1,
31127          length = pairs == null ? 0 : pairs.length,
31128          result = {};
31129
31130      while (++index < length) {
31131        var pair = pairs[index];
31132        result[pair[0]] = pair[1];
31133      }
31134      return result;
31135    }
31136
31137    /**
31138     * Gets the first element of `array`.
31139     *
31140     * @static
31141     * @memberOf _
31142     * @since 0.1.0
31143     * @alias first
31144     * @category Array
31145     * @param {Array} array The array to query.
31146     * @returns {*} Returns the first element of `array`.
31147     * @example
31148     *
31149     * _.head([1, 2, 3]);
31150     * // => 1
31151     *
31152     * _.head([]);
31153     * // => undefined
31154     */
31155    function head(array) {
31156      return (array && array.length) ? array[0] : undefined;
31157    }
31158
31159    /**
31160     * Gets the index at which the first occurrence of `value` is found in `array`
31161     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
31162     * for equality comparisons. If `fromIndex` is negative, it's used as the
31163     * offset from the end of `array`.
31164     *
31165     * @static
31166     * @memberOf _
31167     * @since 0.1.0
31168     * @category Array
31169     * @param {Array} array The array to inspect.
31170     * @param {*} value The value to search for.
31171     * @param {number} [fromIndex=0] The index to search from.
31172     * @returns {number} Returns the index of the matched value, else `-1`.
31173     * @example
31174     *
31175     * _.indexOf([1, 2, 1, 2], 2);
31176     * // => 1
31177     *
31178     * // Search from the `fromIndex`.
31179     * _.indexOf([1, 2, 1, 2], 2, 2);
31180     * // => 3
31181     */
31182    function indexOf(array, value, fromIndex) {
31183      var length = array == null ? 0 : array.length;
31184      if (!length) {
31185        return -1;
31186      }
31187      var index = fromIndex == null ? 0 : toInteger(fromIndex);
31188      if (index < 0) {
31189        index = nativeMax(length + index, 0);
31190      }
31191      return baseIndexOf(array, value, index);
31192    }
31193
31194    /**
31195     * Gets all but the last element of `array`.
31196     *
31197     * @static
31198     * @memberOf _
31199     * @since 0.1.0
31200     * @category Array
31201     * @param {Array} array The array to query.
31202     * @returns {Array} Returns the slice of `array`.
31203     * @example
31204     *
31205     * _.initial([1, 2, 3]);
31206     * // => [1, 2]
31207     */
31208    function initial(array) {
31209      var length = array == null ? 0 : array.length;
31210      return length ? baseSlice(array, 0, -1) : [];
31211    }
31212
31213    /**
31214     * Creates an array of unique values that are included in all given arrays
31215     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
31216     * for equality comparisons. The order and references of result values are
31217     * determined by the first array.
31218     *
31219     * @static
31220     * @memberOf _
31221     * @since 0.1.0
31222     * @category Array
31223     * @param {...Array} [arrays] The arrays to inspect.
31224     * @returns {Array} Returns the new array of intersecting values.
31225     * @example
31226     *
31227     * _.intersection([2, 1], [2, 3]);
31228     * // => [2]
31229     */
31230    var intersection = baseRest(function(arrays) {
31231      var mapped = arrayMap(arrays, castArrayLikeObject);
31232      return (mapped.length && mapped[0] === arrays[0])
31233        ? baseIntersection(mapped)
31234        : [];
31235    });
31236
31237    /**
31238     * This method is like `_.intersection` except that it accepts `iteratee`
31239     * which is invoked for each element of each `arrays` to generate the criterion
31240     * by which they're compared. The order and references of result values are
31241     * determined by the first array. The iteratee is invoked with one argument:
31242     * (value).
31243     *
31244     * @static
31245     * @memberOf _
31246     * @since 4.0.0
31247     * @category Array
31248     * @param {...Array} [arrays] The arrays to inspect.
31249     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
31250     * @returns {Array} Returns the new array of intersecting values.
31251     * @example
31252     *
31253     * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);
31254     * // => [2.1]
31255     *
31256     * // The `_.property` iteratee shorthand.
31257     * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
31258     * // => [{ 'x': 1 }]
31259     */
31260    var intersectionBy = baseRest(function(arrays) {
31261      var iteratee = last(arrays),
31262          mapped = arrayMap(arrays, castArrayLikeObject);
31263
31264      if (iteratee === last(mapped)) {
31265        iteratee = undefined;
31266      } else {
31267        mapped.pop();
31268      }
31269      return (mapped.length && mapped[0] === arrays[0])
31270        ? baseIntersection(mapped, getIteratee(iteratee, 2))
31271        : [];
31272    });
31273
31274    /**
31275     * This method is like `_.intersection` except that it accepts `comparator`
31276     * which is invoked to compare elements of `arrays`. The order and references
31277     * of result values are determined by the first array. The comparator is
31278     * invoked with two arguments: (arrVal, othVal).
31279     *
31280     * @static
31281     * @memberOf _
31282     * @since 4.0.0
31283     * @category Array
31284     * @param {...Array} [arrays] The arrays to inspect.
31285     * @param {Function} [comparator] The comparator invoked per element.
31286     * @returns {Array} Returns the new array of intersecting values.
31287     * @example
31288     *
31289     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
31290     * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];
31291     *
31292     * _.intersectionWith(objects, others, _.isEqual);
31293     * // => [{ 'x': 1, 'y': 2 }]
31294     */
31295    var intersectionWith = baseRest(function(arrays) {
31296      var comparator = last(arrays),
31297          mapped = arrayMap(arrays, castArrayLikeObject);
31298
31299      comparator = typeof comparator == 'function' ? comparator : undefined;
31300      if (comparator) {
31301        mapped.pop();
31302      }
31303      return (mapped.length && mapped[0] === arrays[0])
31304        ? baseIntersection(mapped, undefined, comparator)
31305        : [];
31306    });
31307
31308    /**
31309     * Converts all elements in `array` into a string separated by `separator`.
31310     *
31311     * @static
31312     * @memberOf _
31313     * @since 4.0.0
31314     * @category Array
31315     * @param {Array} array The array to convert.
31316     * @param {string} [separator=','] The element separator.
31317     * @returns {string} Returns the joined string.
31318     * @example
31319     *
31320     * _.join(['a', 'b', 'c'], '~');
31321     * // => 'a~b~c'
31322     */
31323    function join(array, separator) {
31324      return array == null ? '' : nativeJoin.call(array, separator);
31325    }
31326
31327    /**
31328     * Gets the last element of `array`.
31329     *
31330     * @static
31331     * @memberOf _
31332     * @since 0.1.0
31333     * @category Array
31334     * @param {Array} array The array to query.
31335     * @returns {*} Returns the last element of `array`.
31336     * @example
31337     *
31338     * _.last([1, 2, 3]);
31339     * // => 3
31340     */
31341    function last(array) {
31342      var length = array == null ? 0 : array.length;
31343      return length ? array[length - 1] : undefined;
31344    }
31345
31346    /**
31347     * This method is like `_.indexOf` except that it iterates over elements of
31348     * `array` from right to left.
31349     *
31350     * @static
31351     * @memberOf _
31352     * @since 0.1.0
31353     * @category Array
31354     * @param {Array} array The array to inspect.
31355     * @param {*} value The value to search for.
31356     * @param {number} [fromIndex=array.length-1] The index to search from.
31357     * @returns {number} Returns the index of the matched value, else `-1`.
31358     * @example
31359     *
31360     * _.lastIndexOf([1, 2, 1, 2], 2);
31361     * // => 3
31362     *
31363     * // Search from the `fromIndex`.
31364     * _.lastIndexOf([1, 2, 1, 2], 2, 2);
31365     * // => 1
31366     */
31367    function lastIndexOf(array, value, fromIndex) {
31368      var length = array == null ? 0 : array.length;
31369      if (!length) {
31370        return -1;
31371      }
31372      var index = length;
31373      if (fromIndex !== undefined) {
31374        index = toInteger(fromIndex);
31375        index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);
31376      }
31377      return value === value
31378        ? strictLastIndexOf(array, value, index)
31379        : baseFindIndex(array, baseIsNaN, index, true);
31380    }
31381
31382    /**
31383     * Gets the element at index `n` of `array`. If `n` is negative, the nth
31384     * element from the end is returned.
31385     *
31386     * @static
31387     * @memberOf _
31388     * @since 4.11.0
31389     * @category Array
31390     * @param {Array} array The array to query.
31391     * @param {number} [n=0] The index of the element to return.
31392     * @returns {*} Returns the nth element of `array`.
31393     * @example
31394     *
31395     * var array = ['a', 'b', 'c', 'd'];
31396     *
31397     * _.nth(array, 1);
31398     * // => 'b'
31399     *
31400     * _.nth(array, -2);
31401     * // => 'c';
31402     */
31403    function nth(array, n) {
31404      return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;
31405    }
31406
31407    /**
31408     * Removes all given values from `array` using
31409     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
31410     * for equality comparisons.
31411     *
31412     * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`
31413     * to remove elements from an array by predicate.
31414     *
31415     * @static
31416     * @memberOf _
31417     * @since 2.0.0
31418     * @category Array
31419     * @param {Array} array The array to modify.
31420     * @param {...*} [values] The values to remove.
31421     * @returns {Array} Returns `array`.
31422     * @example
31423     *
31424     * var array = ['a', 'b', 'c', 'a', 'b', 'c'];
31425     *
31426     * _.pull(array, 'a', 'c');
31427     * console.log(array);
31428     * // => ['b', 'b']
31429     */
31430    var pull = baseRest(pullAll);
31431
31432    /**
31433     * This method is like `_.pull` except that it accepts an array of values to remove.
31434     *
31435     * **Note:** Unlike `_.difference`, this method mutates `array`.
31436     *
31437     * @static
31438     * @memberOf _
31439     * @since 4.0.0
31440     * @category Array
31441     * @param {Array} array The array to modify.
31442     * @param {Array} values The values to remove.
31443     * @returns {Array} Returns `array`.
31444     * @example
31445     *
31446     * var array = ['a', 'b', 'c', 'a', 'b', 'c'];
31447     *
31448     * _.pullAll(array, ['a', 'c']);
31449     * console.log(array);
31450     * // => ['b', 'b']
31451     */
31452    function pullAll(array, values) {
31453      return (array && array.length && values && values.length)
31454        ? basePullAll(array, values)
31455        : array;
31456    }
31457
31458    /**
31459     * This method is like `_.pullAll` except that it accepts `iteratee` which is
31460     * invoked for each element of `array` and `values` to generate the criterion
31461     * by which they're compared. The iteratee is invoked with one argument: (value).
31462     *
31463     * **Note:** Unlike `_.differenceBy`, this method mutates `array`.
31464     *
31465     * @static
31466     * @memberOf _
31467     * @since 4.0.0
31468     * @category Array
31469     * @param {Array} array The array to modify.
31470     * @param {Array} values The values to remove.
31471     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
31472     * @returns {Array} Returns `array`.
31473     * @example
31474     *
31475     * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];
31476     *
31477     * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');
31478     * console.log(array);
31479     * // => [{ 'x': 2 }]
31480     */
31481    function pullAllBy(array, values, iteratee) {
31482      return (array && array.length && values && values.length)
31483        ? basePullAll(array, values, getIteratee(iteratee, 2))
31484        : array;
31485    }
31486
31487    /**
31488     * This method is like `_.pullAll` except that it accepts `comparator` which
31489     * is invoked to compare elements of `array` to `values`. The comparator is
31490     * invoked with two arguments: (arrVal, othVal).
31491     *
31492     * **Note:** Unlike `_.differenceWith`, this method mutates `array`.
31493     *
31494     * @static
31495     * @memberOf _
31496     * @since 4.6.0
31497     * @category Array
31498     * @param {Array} array The array to modify.
31499     * @param {Array} values The values to remove.
31500     * @param {Function} [comparator] The comparator invoked per element.
31501     * @returns {Array} Returns `array`.
31502     * @example
31503     *
31504     * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];
31505     *
31506     * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);
31507     * console.log(array);
31508     * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]
31509     */
31510    function pullAllWith(array, values, comparator) {
31511      return (array && array.length && values && values.length)
31512        ? basePullAll(array, values, undefined, comparator)
31513        : array;
31514    }
31515
31516    /**
31517     * Removes elements from `array` corresponding to `indexes` and returns an
31518     * array of removed elements.
31519     *
31520     * **Note:** Unlike `_.at`, this method mutates `array`.
31521     *
31522     * @static
31523     * @memberOf _
31524     * @since 3.0.0
31525     * @category Array
31526     * @param {Array} array The array to modify.
31527     * @param {...(number|number[])} [indexes] The indexes of elements to remove.
31528     * @returns {Array} Returns the new array of removed elements.
31529     * @example
31530     *
31531     * var array = ['a', 'b', 'c', 'd'];
31532     * var pulled = _.pullAt(array, [1, 3]);
31533     *
31534     * console.log(array);
31535     * // => ['a', 'c']
31536     *
31537     * console.log(pulled);
31538     * // => ['b', 'd']
31539     */
31540    var pullAt = flatRest(function(array, indexes) {
31541      var length = array == null ? 0 : array.length,
31542          result = baseAt(array, indexes);
31543
31544      basePullAt(array, arrayMap(indexes, function(index) {
31545        return isIndex(index, length) ? +index : index;
31546      }).sort(compareAscending));
31547
31548      return result;
31549    });
31550
31551    /**
31552     * Removes all elements from `array` that `predicate` returns truthy for
31553     * and returns an array of the removed elements. The predicate is invoked
31554     * with three arguments: (value, index, array).
31555     *
31556     * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`
31557     * to pull elements from an array by value.
31558     *
31559     * @static
31560     * @memberOf _
31561     * @since 2.0.0
31562     * @category Array
31563     * @param {Array} array The array to modify.
31564     * @param {Function} [predicate=_.identity] The function invoked per iteration.
31565     * @returns {Array} Returns the new array of removed elements.
31566     * @example
31567     *
31568     * var array = [1, 2, 3, 4];
31569     * var evens = _.remove(array, function(n) {
31570     *   return n % 2 == 0;
31571     * });
31572     *
31573     * console.log(array);
31574     * // => [1, 3]
31575     *
31576     * console.log(evens);
31577     * // => [2, 4]
31578     */
31579    function remove(array, predicate) {
31580      var result = [];
31581      if (!(array && array.length)) {
31582        return result;
31583      }
31584      var index = -1,
31585          indexes = [],
31586          length = array.length;
31587
31588      predicate = getIteratee(predicate, 3);
31589      while (++index < length) {
31590        var value = array[index];
31591        if (predicate(value, index, array)) {
31592          result.push(value);
31593          indexes.push(index);
31594        }
31595      }
31596      basePullAt(array, indexes);
31597      return result;
31598    }
31599
31600    /**
31601     * Reverses `array` so that the first element becomes the last, the second
31602     * element becomes the second to last, and so on.
31603     *
31604     * **Note:** This method mutates `array` and is based on
31605     * [`Array#reverse`](https://mdn.io/Array/reverse).
31606     *
31607     * @static
31608     * @memberOf _
31609     * @since 4.0.0
31610     * @category Array
31611     * @param {Array} array The array to modify.
31612     * @returns {Array} Returns `array`.
31613     * @example
31614     *
31615     * var array = [1, 2, 3];
31616     *
31617     * _.reverse(array);
31618     * // => [3, 2, 1]
31619     *
31620     * console.log(array);
31621     * // => [3, 2, 1]
31622     */
31623    function reverse(array) {
31624      return array == null ? array : nativeReverse.call(array);
31625    }
31626
31627    /**
31628     * Creates a slice of `array` from `start` up to, but not including, `end`.
31629     *
31630     * **Note:** This method is used instead of
31631     * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are
31632     * returned.
31633     *
31634     * @static
31635     * @memberOf _
31636     * @since 3.0.0
31637     * @category Array
31638     * @param {Array} array The array to slice.
31639     * @param {number} [start=0] The start position.
31640     * @param {number} [end=array.length] The end position.
31641     * @returns {Array} Returns the slice of `array`.
31642     */
31643    function slice(array, start, end) {
31644      var length = array == null ? 0 : array.length;
31645      if (!length) {
31646        return [];
31647      }
31648      if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {
31649        start = 0;
31650        end = length;
31651      }
31652      else {
31653        start = start == null ? 0 : toInteger(start);
31654        end = end === undefined ? length : toInteger(end);
31655      }
31656      return baseSlice(array, start, end);
31657    }
31658
31659    /**
31660     * Uses a binary search to determine the lowest index at which `value`
31661     * should be inserted into `array` in order to maintain its sort order.
31662     *
31663     * @static
31664     * @memberOf _
31665     * @since 0.1.0
31666     * @category Array
31667     * @param {Array} array The sorted array to inspect.
31668     * @param {*} value The value to evaluate.
31669     * @returns {number} Returns the index at which `value` should be inserted
31670     *  into `array`.
31671     * @example
31672     *
31673     * _.sortedIndex([30, 50], 40);
31674     * // => 1
31675     */
31676    function sortedIndex(array, value) {
31677      return baseSortedIndex(array, value);
31678    }
31679
31680    /**
31681     * This method is like `_.sortedIndex` except that it accepts `iteratee`
31682     * which is invoked for `value` and each element of `array` to compute their
31683     * sort ranking. The iteratee is invoked with one argument: (value).
31684     *
31685     * @static
31686     * @memberOf _
31687     * @since 4.0.0
31688     * @category Array
31689     * @param {Array} array The sorted array to inspect.
31690     * @param {*} value The value to evaluate.
31691     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
31692     * @returns {number} Returns the index at which `value` should be inserted
31693     *  into `array`.
31694     * @example
31695     *
31696     * var objects = [{ 'x': 4 }, { 'x': 5 }];
31697     *
31698     * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });
31699     * // => 0
31700     *
31701     * // The `_.property` iteratee shorthand.
31702     * _.sortedIndexBy(objects, { 'x': 4 }, 'x');
31703     * // => 0
31704     */
31705    function sortedIndexBy(array, value, iteratee) {
31706      return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));
31707    }
31708
31709    /**
31710     * This method is like `_.indexOf` except that it performs a binary
31711     * search on a sorted `array`.
31712     *
31713     * @static
31714     * @memberOf _
31715     * @since 4.0.0
31716     * @category Array
31717     * @param {Array} array The array to inspect.
31718     * @param {*} value The value to search for.
31719     * @returns {number} Returns the index of the matched value, else `-1`.
31720     * @example
31721     *
31722     * _.sortedIndexOf([4, 5, 5, 5, 6], 5);
31723     * // => 1
31724     */
31725    function sortedIndexOf(array, value) {
31726      var length = array == null ? 0 : array.length;
31727      if (length) {
31728        var index = baseSortedIndex(array, value);
31729        if (index < length && eq(array[index], value)) {
31730          return index;
31731        }
31732      }
31733      return -1;
31734    }
31735
31736    /**
31737     * This method is like `_.sortedIndex` except that it returns the highest
31738     * index at which `value` should be inserted into `array` in order to
31739     * maintain its sort order.
31740     *
31741     * @static
31742     * @memberOf _
31743     * @since 3.0.0
31744     * @category Array
31745     * @param {Array} array The sorted array to inspect.
31746     * @param {*} value The value to evaluate.
31747     * @returns {number} Returns the index at which `value` should be inserted
31748     *  into `array`.
31749     * @example
31750     *
31751     * _.sortedLastIndex([4, 5, 5, 5, 6], 5);
31752     * // => 4
31753     */
31754    function sortedLastIndex(array, value) {
31755      return baseSortedIndex(array, value, true);
31756    }
31757
31758    /**
31759     * This method is like `_.sortedLastIndex` except that it accepts `iteratee`
31760     * which is invoked for `value` and each element of `array` to compute their
31761     * sort ranking. The iteratee is invoked with one argument: (value).
31762     *
31763     * @static
31764     * @memberOf _
31765     * @since 4.0.0
31766     * @category Array
31767     * @param {Array} array The sorted array to inspect.
31768     * @param {*} value The value to evaluate.
31769     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
31770     * @returns {number} Returns the index at which `value` should be inserted
31771     *  into `array`.
31772     * @example
31773     *
31774     * var objects = [{ 'x': 4 }, { 'x': 5 }];
31775     *
31776     * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });
31777     * // => 1
31778     *
31779     * // The `_.property` iteratee shorthand.
31780     * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');
31781     * // => 1
31782     */
31783    function sortedLastIndexBy(array, value, iteratee) {
31784      return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);
31785    }
31786
31787    /**
31788     * This method is like `_.lastIndexOf` except that it performs a binary
31789     * search on a sorted `array`.
31790     *
31791     * @static
31792     * @memberOf _
31793     * @since 4.0.0
31794     * @category Array
31795     * @param {Array} array The array to inspect.
31796     * @param {*} value The value to search for.
31797     * @returns {number} Returns the index of the matched value, else `-1`.
31798     * @example
31799     *
31800     * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);
31801     * // => 3
31802     */
31803    function sortedLastIndexOf(array, value) {
31804      var length = array == null ? 0 : array.length;
31805      if (length) {
31806        var index = baseSortedIndex(array, value, true) - 1;
31807        if (eq(array[index], value)) {
31808          return index;
31809        }
31810      }
31811      return -1;
31812    }
31813
31814    /**
31815     * This method is like `_.uniq` except that it's designed and optimized
31816     * for sorted arrays.
31817     *
31818     * @static
31819     * @memberOf _
31820     * @since 4.0.0
31821     * @category Array
31822     * @param {Array} array The array to inspect.
31823     * @returns {Array} Returns the new duplicate free array.
31824     * @example
31825     *
31826     * _.sortedUniq([1, 1, 2]);
31827     * // => [1, 2]
31828     */
31829    function sortedUniq(array) {
31830      return (array && array.length)
31831        ? baseSortedUniq(array)
31832        : [];
31833    }
31834
31835    /**
31836     * This method is like `_.uniqBy` except that it's designed and optimized
31837     * for sorted arrays.
31838     *
31839     * @static
31840     * @memberOf _
31841     * @since 4.0.0
31842     * @category Array
31843     * @param {Array} array The array to inspect.
31844     * @param {Function} [iteratee] The iteratee invoked per element.
31845     * @returns {Array} Returns the new duplicate free array.
31846     * @example
31847     *
31848     * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);
31849     * // => [1.1, 2.3]
31850     */
31851    function sortedUniqBy(array, iteratee) {
31852      return (array && array.length)
31853        ? baseSortedUniq(array, getIteratee(iteratee, 2))
31854        : [];
31855    }
31856
31857    /**
31858     * Gets all but the first element of `array`.
31859     *
31860     * @static
31861     * @memberOf _
31862     * @since 4.0.0
31863     * @category Array
31864     * @param {Array} array The array to query.
31865     * @returns {Array} Returns the slice of `array`.
31866     * @example
31867     *
31868     * _.tail([1, 2, 3]);
31869     * // => [2, 3]
31870     */
31871    function tail(array) {
31872      var length = array == null ? 0 : array.length;
31873      return length ? baseSlice(array, 1, length) : [];
31874    }
31875
31876    /**
31877     * Creates a slice of `array` with `n` elements taken from the beginning.
31878     *
31879     * @static
31880     * @memberOf _
31881     * @since 0.1.0
31882     * @category Array
31883     * @param {Array} array The array to query.
31884     * @param {number} [n=1] The number of elements to take.
31885     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
31886     * @returns {Array} Returns the slice of `array`.
31887     * @example
31888     *
31889     * _.take([1, 2, 3]);
31890     * // => [1]
31891     *
31892     * _.take([1, 2, 3], 2);
31893     * // => [1, 2]
31894     *
31895     * _.take([1, 2, 3], 5);
31896     * // => [1, 2, 3]
31897     *
31898     * _.take([1, 2, 3], 0);
31899     * // => []
31900     */
31901    function take(array, n, guard) {
31902      if (!(array && array.length)) {
31903        return [];
31904      }
31905      n = (guard || n === undefined) ? 1 : toInteger(n);
31906      return baseSlice(array, 0, n < 0 ? 0 : n);
31907    }
31908
31909    /**
31910     * Creates a slice of `array` with `n` elements taken from the end.
31911     *
31912     * @static
31913     * @memberOf _
31914     * @since 3.0.0
31915     * @category Array
31916     * @param {Array} array The array to query.
31917     * @param {number} [n=1] The number of elements to take.
31918     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
31919     * @returns {Array} Returns the slice of `array`.
31920     * @example
31921     *
31922     * _.takeRight([1, 2, 3]);
31923     * // => [3]
31924     *
31925     * _.takeRight([1, 2, 3], 2);
31926     * // => [2, 3]
31927     *
31928     * _.takeRight([1, 2, 3], 5);
31929     * // => [1, 2, 3]
31930     *
31931     * _.takeRight([1, 2, 3], 0);
31932     * // => []
31933     */
31934    function takeRight(array, n, guard) {
31935      var length = array == null ? 0 : array.length;
31936      if (!length) {
31937        return [];
31938      }
31939      n = (guard || n === undefined) ? 1 : toInteger(n);
31940      n = length - n;
31941      return baseSlice(array, n < 0 ? 0 : n, length);
31942    }
31943
31944    /**
31945     * Creates a slice of `array` with elements taken from the end. Elements are
31946     * taken until `predicate` returns falsey. The predicate is invoked with
31947     * three arguments: (value, index, array).
31948     *
31949     * @static
31950     * @memberOf _
31951     * @since 3.0.0
31952     * @category Array
31953     * @param {Array} array The array to query.
31954     * @param {Function} [predicate=_.identity] The function invoked per iteration.
31955     * @returns {Array} Returns the slice of `array`.
31956     * @example
31957     *
31958     * var users = [
31959     *   { 'user': 'barney',  'active': true },
31960     *   { 'user': 'fred',    'active': false },
31961     *   { 'user': 'pebbles', 'active': false }
31962     * ];
31963     *
31964     * _.takeRightWhile(users, function(o) { return !o.active; });
31965     * // => objects for ['fred', 'pebbles']
31966     *
31967     * // The `_.matches` iteratee shorthand.
31968     * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });
31969     * // => objects for ['pebbles']
31970     *
31971     * // The `_.matchesProperty` iteratee shorthand.
31972     * _.takeRightWhile(users, ['active', false]);
31973     * // => objects for ['fred', 'pebbles']
31974     *
31975     * // The `_.property` iteratee shorthand.
31976     * _.takeRightWhile(users, 'active');
31977     * // => []
31978     */
31979    function takeRightWhile(array, predicate) {
31980      return (array && array.length)
31981        ? baseWhile(array, getIteratee(predicate, 3), false, true)
31982        : [];
31983    }
31984
31985    /**
31986     * Creates a slice of `array` with elements taken from the beginning. Elements
31987     * are taken until `predicate` returns falsey. The predicate is invoked with
31988     * three arguments: (value, index, array).
31989     *
31990     * @static
31991     * @memberOf _
31992     * @since 3.0.0
31993     * @category Array
31994     * @param {Array} array The array to query.
31995     * @param {Function} [predicate=_.identity] The function invoked per iteration.
31996     * @returns {Array} Returns the slice of `array`.
31997     * @example
31998     *
31999     * var users = [
32000     *   { 'user': 'barney',  'active': false },
32001     *   { 'user': 'fred',    'active': false },
32002     *   { 'user': 'pebbles', 'active': true }
32003     * ];
32004     *
32005     * _.takeWhile(users, function(o) { return !o.active; });
32006     * // => objects for ['barney', 'fred']
32007     *
32008     * // The `_.matches` iteratee shorthand.
32009     * _.takeWhile(users, { 'user': 'barney', 'active': false });
32010     * // => objects for ['barney']
32011     *
32012     * // The `_.matchesProperty` iteratee shorthand.
32013     * _.takeWhile(users, ['active', false]);
32014     * // => objects for ['barney', 'fred']
32015     *
32016     * // The `_.property` iteratee shorthand.
32017     * _.takeWhile(users, 'active');
32018     * // => []
32019     */
32020    function takeWhile(array, predicate) {
32021      return (array && array.length)
32022        ? baseWhile(array, getIteratee(predicate, 3))
32023        : [];
32024    }
32025
32026    /**
32027     * Creates an array of unique values, in order, from all given arrays using
32028     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
32029     * for equality comparisons.
32030     *
32031     * @static
32032     * @memberOf _
32033     * @since 0.1.0
32034     * @category Array
32035     * @param {...Array} [arrays] The arrays to inspect.
32036     * @returns {Array} Returns the new array of combined values.
32037     * @example
32038     *
32039     * _.union([2], [1, 2]);
32040     * // => [2, 1]
32041     */
32042    var union = baseRest(function(arrays) {
32043      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));
32044    });
32045
32046    /**
32047     * This method is like `_.union` except that it accepts `iteratee` which is
32048     * invoked for each element of each `arrays` to generate the criterion by
32049     * which uniqueness is computed. Result values are chosen from the first
32050     * array in which the value occurs. The iteratee is invoked with one argument:
32051     * (value).
32052     *
32053     * @static
32054     * @memberOf _
32055     * @since 4.0.0
32056     * @category Array
32057     * @param {...Array} [arrays] The arrays to inspect.
32058     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
32059     * @returns {Array} Returns the new array of combined values.
32060     * @example
32061     *
32062     * _.unionBy([2.1], [1.2, 2.3], Math.floor);
32063     * // => [2.1, 1.2]
32064     *
32065     * // The `_.property` iteratee shorthand.
32066     * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
32067     * // => [{ 'x': 1 }, { 'x': 2 }]
32068     */
32069    var unionBy = baseRest(function(arrays) {
32070      var iteratee = last(arrays);
32071      if (isArrayLikeObject(iteratee)) {
32072        iteratee = undefined;
32073      }
32074      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));
32075    });
32076
32077    /**
32078     * This method is like `_.union` except that it accepts `comparator` which
32079     * is invoked to compare elements of `arrays`. Result values are chosen from
32080     * the first array in which the value occurs. The comparator is invoked
32081     * with two arguments: (arrVal, othVal).
32082     *
32083     * @static
32084     * @memberOf _
32085     * @since 4.0.0
32086     * @category Array
32087     * @param {...Array} [arrays] The arrays to inspect.
32088     * @param {Function} [comparator] The comparator invoked per element.
32089     * @returns {Array} Returns the new array of combined values.
32090     * @example
32091     *
32092     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
32093     * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];
32094     *
32095     * _.unionWith(objects, others, _.isEqual);
32096     * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]
32097     */
32098    var unionWith = baseRest(function(arrays) {
32099      var comparator = last(arrays);
32100      comparator = typeof comparator == 'function' ? comparator : undefined;
32101      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);
32102    });
32103
32104    /**
32105     * Creates a duplicate-free version of an array, using
32106     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
32107     * for equality comparisons, in which only the first occurrence of each element
32108     * is kept. The order of result values is determined by the order they occur
32109     * in the array.
32110     *
32111     * @static
32112     * @memberOf _
32113     * @since 0.1.0
32114     * @category Array
32115     * @param {Array} array The array to inspect.
32116     * @returns {Array} Returns the new duplicate free array.
32117     * @example
32118     *
32119     * _.uniq([2, 1, 2]);
32120     * // => [2, 1]
32121     */
32122    function uniq(array) {
32123      return (array && array.length) ? baseUniq(array) : [];
32124    }
32125
32126    /**
32127     * This method is like `_.uniq` except that it accepts `iteratee` which is
32128     * invoked for each element in `array` to generate the criterion by which
32129     * uniqueness is computed. The order of result values is determined by the
32130     * order they occur in the array. The iteratee is invoked with one argument:
32131     * (value).
32132     *
32133     * @static
32134     * @memberOf _
32135     * @since 4.0.0
32136     * @category Array
32137     * @param {Array} array The array to inspect.
32138     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
32139     * @returns {Array} Returns the new duplicate free array.
32140     * @example
32141     *
32142     * _.uniqBy([2.1, 1.2, 2.3], Math.floor);
32143     * // => [2.1, 1.2]
32144     *
32145     * // The `_.property` iteratee shorthand.
32146     * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');
32147     * // => [{ 'x': 1 }, { 'x': 2 }]
32148     */
32149    function uniqBy(array, iteratee) {
32150      return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];
32151    }
32152
32153    /**
32154     * This method is like `_.uniq` except that it accepts `comparator` which
32155     * is invoked to compare elements of `array`. The order of result values is
32156     * determined by the order they occur in the array.The comparator is invoked
32157     * with two arguments: (arrVal, othVal).
32158     *
32159     * @static
32160     * @memberOf _
32161     * @since 4.0.0
32162     * @category Array
32163     * @param {Array} array The array to inspect.
32164     * @param {Function} [comparator] The comparator invoked per element.
32165     * @returns {Array} Returns the new duplicate free array.
32166     * @example
32167     *
32168     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];
32169     *
32170     * _.uniqWith(objects, _.isEqual);
32171     * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]
32172     */
32173    function uniqWith(array, comparator) {
32174      comparator = typeof comparator == 'function' ? comparator : undefined;
32175      return (array && array.length) ? baseUniq(array, undefined, comparator) : [];
32176    }
32177
32178    /**
32179     * This method is like `_.zip` except that it accepts an array of grouped
32180     * elements and creates an array regrouping the elements to their pre-zip
32181     * configuration.
32182     *
32183     * @static
32184     * @memberOf _
32185     * @since 1.2.0
32186     * @category Array
32187     * @param {Array} array The array of grouped elements to process.
32188     * @returns {Array} Returns the new array of regrouped elements.
32189     * @example
32190     *
32191     * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);
32192     * // => [['a', 1, true], ['b', 2, false]]
32193     *
32194     * _.unzip(zipped);
32195     * // => [['a', 'b'], [1, 2], [true, false]]
32196     */
32197    function unzip(array) {
32198      if (!(array && array.length)) {
32199        return [];
32200      }
32201      var length = 0;
32202      array = arrayFilter(array, function(group) {
32203        if (isArrayLikeObject(group)) {
32204          length = nativeMax(group.length, length);
32205          return true;
32206        }
32207      });
32208      return baseTimes(length, function(index) {
32209        return arrayMap(array, baseProperty(index));
32210      });
32211    }
32212
32213    /**
32214     * This method is like `_.unzip` except that it accepts `iteratee` to specify
32215     * how regrouped values should be combined. The iteratee is invoked with the
32216     * elements of each group: (...group).
32217     *
32218     * @static
32219     * @memberOf _
32220     * @since 3.8.0
32221     * @category Array
32222     * @param {Array} array The array of grouped elements to process.
32223     * @param {Function} [iteratee=_.identity] The function to combine
32224     *  regrouped values.
32225     * @returns {Array} Returns the new array of regrouped elements.
32226     * @example
32227     *
32228     * var zipped = _.zip([1, 2], [10, 20], [100, 200]);
32229     * // => [[1, 10, 100], [2, 20, 200]]
32230     *
32231     * _.unzipWith(zipped, _.add);
32232     * // => [3, 30, 300]
32233     */
32234    function unzipWith(array, iteratee) {
32235      if (!(array && array.length)) {
32236        return [];
32237      }
32238      var result = unzip(array);
32239      if (iteratee == null) {
32240        return result;
32241      }
32242      return arrayMap(result, function(group) {
32243        return apply(iteratee, undefined, group);
32244      });
32245    }
32246
32247    /**
32248     * Creates an array excluding all given values using
32249     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
32250     * for equality comparisons.
32251     *
32252     * **Note:** Unlike `_.pull`, this method returns a new array.
32253     *
32254     * @static
32255     * @memberOf _
32256     * @since 0.1.0
32257     * @category Array
32258     * @param {Array} array The array to inspect.
32259     * @param {...*} [values] The values to exclude.
32260     * @returns {Array} Returns the new array of filtered values.
32261     * @see _.difference, _.xor
32262     * @example
32263     *
32264     * _.without([2, 1, 2, 3], 1, 2);
32265     * // => [3]
32266     */
32267    var without = baseRest(function(array, values) {
32268      return isArrayLikeObject(array)
32269        ? baseDifference(array, values)
32270        : [];
32271    });
32272
32273    /**
32274     * Creates an array of unique values that is the
32275     * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)
32276     * of the given arrays. The order of result values is determined by the order
32277     * they occur in the arrays.
32278     *
32279     * @static
32280     * @memberOf _
32281     * @since 2.4.0
32282     * @category Array
32283     * @param {...Array} [arrays] The arrays to inspect.
32284     * @returns {Array} Returns the new array of filtered values.
32285     * @see _.difference, _.without
32286     * @example
32287     *
32288     * _.xor([2, 1], [2, 3]);
32289     * // => [1, 3]
32290     */
32291    var xor = baseRest(function(arrays) {
32292      return baseXor(arrayFilter(arrays, isArrayLikeObject));
32293    });
32294
32295    /**
32296     * This method is like `_.xor` except that it accepts `iteratee` which is
32297     * invoked for each element of each `arrays` to generate the criterion by
32298     * which by which they're compared. The order of result values is determined
32299     * by the order they occur in the arrays. The iteratee is invoked with one
32300     * argument: (value).
32301     *
32302     * @static
32303     * @memberOf _
32304     * @since 4.0.0
32305     * @category Array
32306     * @param {...Array} [arrays] The arrays to inspect.
32307     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
32308     * @returns {Array} Returns the new array of filtered values.
32309     * @example
32310     *
32311     * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);
32312     * // => [1.2, 3.4]
32313     *
32314     * // The `_.property` iteratee shorthand.
32315     * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
32316     * // => [{ 'x': 2 }]
32317     */
32318    var xorBy = baseRest(function(arrays) {
32319      var iteratee = last(arrays);
32320      if (isArrayLikeObject(iteratee)) {
32321        iteratee = undefined;
32322      }
32323      return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));
32324    });
32325
32326    /**
32327     * This method is like `_.xor` except that it accepts `comparator` which is
32328     * invoked to compare elements of `arrays`. The order of result values is
32329     * determined by the order they occur in the arrays. The comparator is invoked
32330     * with two arguments: (arrVal, othVal).
32331     *
32332     * @static
32333     * @memberOf _
32334     * @since 4.0.0
32335     * @category Array
32336     * @param {...Array} [arrays] The arrays to inspect.
32337     * @param {Function} [comparator] The comparator invoked per element.
32338     * @returns {Array} Returns the new array of filtered values.
32339     * @example
32340     *
32341     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
32342     * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];
32343     *
32344     * _.xorWith(objects, others, _.isEqual);
32345     * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]
32346     */
32347    var xorWith = baseRest(function(arrays) {
32348      var comparator = last(arrays);
32349      comparator = typeof comparator == 'function' ? comparator : undefined;
32350      return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);
32351    });
32352
32353    /**
32354     * Creates an array of grouped elements, the first of which contains the
32355     * first elements of the given arrays, the second of which contains the
32356     * second elements of the given arrays, and so on.
32357     *
32358     * @static
32359     * @memberOf _
32360     * @since 0.1.0
32361     * @category Array
32362     * @param {...Array} [arrays] The arrays to process.
32363     * @returns {Array} Returns the new array of grouped elements.
32364     * @example
32365     *
32366     * _.zip(['a', 'b'], [1, 2], [true, false]);
32367     * // => [['a', 1, true], ['b', 2, false]]
32368     */
32369    var zip = baseRest(unzip);
32370
32371    /**
32372     * This method is like `_.fromPairs` except that it accepts two arrays,
32373     * one of property identifiers and one of corresponding values.
32374     *
32375     * @static
32376     * @memberOf _
32377     * @since 0.4.0
32378     * @category Array
32379     * @param {Array} [props=[]] The property identifiers.
32380     * @param {Array} [values=[]] The property values.
32381     * @returns {Object} Returns the new object.
32382     * @example
32383     *
32384     * _.zipObject(['a', 'b'], [1, 2]);
32385     * // => { 'a': 1, 'b': 2 }
32386     */
32387    function zipObject(props, values) {
32388      return baseZipObject(props || [], values || [], assignValue);
32389    }
32390
32391    /**
32392     * This method is like `_.zipObject` except that it supports property paths.
32393     *
32394     * @static
32395     * @memberOf _
32396     * @since 4.1.0
32397     * @category Array
32398     * @param {Array} [props=[]] The property identifiers.
32399     * @param {Array} [values=[]] The property values.
32400     * @returns {Object} Returns the new object.
32401     * @example
32402     *
32403     * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);
32404     * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }
32405     */
32406    function zipObjectDeep(props, values) {
32407      return baseZipObject(props || [], values || [], baseSet);
32408    }
32409
32410    /**
32411     * This method is like `_.zip` except that it accepts `iteratee` to specify
32412     * how grouped values should be combined. The iteratee is invoked with the
32413     * elements of each group: (...group).
32414     *
32415     * @static
32416     * @memberOf _
32417     * @since 3.8.0
32418     * @category Array
32419     * @param {...Array} [arrays] The arrays to process.
32420     * @param {Function} [iteratee=_.identity] The function to combine
32421     *  grouped values.
32422     * @returns {Array} Returns the new array of grouped elements.
32423     * @example
32424     *
32425     * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {
32426     *   return a + b + c;
32427     * });
32428     * // => [111, 222]
32429     */
32430    var zipWith = baseRest(function(arrays) {
32431      var length = arrays.length,
32432          iteratee = length > 1 ? arrays[length - 1] : undefined;
32433
32434      iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;
32435      return unzipWith(arrays, iteratee);
32436    });
32437
32438    /*------------------------------------------------------------------------*/
32439
32440    /**
32441     * Creates a `lodash` wrapper instance that wraps `value` with explicit method
32442     * chain sequences enabled. The result of such sequences must be unwrapped
32443     * with `_#value`.
32444     *
32445     * @static
32446     * @memberOf _
32447     * @since 1.3.0
32448     * @category Seq
32449     * @param {*} value The value to wrap.
32450     * @returns {Object} Returns the new `lodash` wrapper instance.
32451     * @example
32452     *
32453     * var users = [
32454     *   { 'user': 'barney',  'age': 36 },
32455     *   { 'user': 'fred',    'age': 40 },
32456     *   { 'user': 'pebbles', 'age': 1 }
32457     * ];
32458     *
32459     * var youngest = _
32460     *   .chain(users)
32461     *   .sortBy('age')
32462     *   .map(function(o) {
32463     *     return o.user + ' is ' + o.age;
32464     *   })
32465     *   .head()
32466     *   .value();
32467     * // => 'pebbles is 1'
32468     */
32469    function chain(value) {
32470      var result = lodash(value);
32471      result.__chain__ = true;
32472      return result;
32473    }
32474
32475    /**
32476     * This method invokes `interceptor` and returns `value`. The interceptor
32477     * is invoked with one argument; (value). The purpose of this method is to
32478     * "tap into" a method chain sequence in order to modify intermediate results.
32479     *
32480     * @static
32481     * @memberOf _
32482     * @since 0.1.0
32483     * @category Seq
32484     * @param {*} value The value to provide to `interceptor`.
32485     * @param {Function} interceptor The function to invoke.
32486     * @returns {*} Returns `value`.
32487     * @example
32488     *
32489     * _([1, 2, 3])
32490     *  .tap(function(array) {
32491     *    // Mutate input array.
32492     *    array.pop();
32493     *  })
32494     *  .reverse()
32495     *  .value();
32496     * // => [2, 1]
32497     */
32498    function tap(value, interceptor) {
32499      interceptor(value);
32500      return value;
32501    }
32502
32503    /**
32504     * This method is like `_.tap` except that it returns the result of `interceptor`.
32505     * The purpose of this method is to "pass thru" values replacing intermediate
32506     * results in a method chain sequence.
32507     *
32508     * @static
32509     * @memberOf _
32510     * @since 3.0.0
32511     * @category Seq
32512     * @param {*} value The value to provide to `interceptor`.
32513     * @param {Function} interceptor The function to invoke.
32514     * @returns {*} Returns the result of `interceptor`.
32515     * @example
32516     *
32517     * _('  abc  ')
32518     *  .chain()
32519     *  .trim()
32520     *  .thru(function(value) {
32521     *    return [value];
32522     *  })
32523     *  .value();
32524     * // => ['abc']
32525     */
32526    function thru(value, interceptor) {
32527      return interceptor(value);
32528    }
32529
32530    /**
32531     * This method is the wrapper version of `_.at`.
32532     *
32533     * @name at
32534     * @memberOf _
32535     * @since 1.0.0
32536     * @category Seq
32537     * @param {...(string|string[])} [paths] The property paths to pick.
32538     * @returns {Object} Returns the new `lodash` wrapper instance.
32539     * @example
32540     *
32541     * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };
32542     *
32543     * _(object).at(['a[0].b.c', 'a[1]']).value();
32544     * // => [3, 4]
32545     */
32546    var wrapperAt = flatRest(function(paths) {
32547      var length = paths.length,
32548          start = length ? paths[0] : 0,
32549          value = this.__wrapped__,
32550          interceptor = function(object) { return baseAt(object, paths); };
32551
32552      if (length > 1 || this.__actions__.length ||
32553          !(value instanceof LazyWrapper) || !isIndex(start)) {
32554        return this.thru(interceptor);
32555      }
32556      value = value.slice(start, +start + (length ? 1 : 0));
32557      value.__actions__.push({
32558        'func': thru,
32559        'args': [interceptor],
32560        'thisArg': undefined
32561      });
32562      return new LodashWrapper(value, this.__chain__).thru(function(array) {
32563        if (length && !array.length) {
32564          array.push(undefined);
32565        }
32566        return array;
32567      });
32568    });
32569
32570    /**
32571     * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.
32572     *
32573     * @name chain
32574     * @memberOf _
32575     * @since 0.1.0
32576     * @category Seq
32577     * @returns {Object} Returns the new `lodash` wrapper instance.
32578     * @example
32579     *
32580     * var users = [
32581     *   { 'user': 'barney', 'age': 36 },
32582     *   { 'user': 'fred',   'age': 40 }
32583     * ];
32584     *
32585     * // A sequence without explicit chaining.
32586     * _(users).head();
32587     * // => { 'user': 'barney', 'age': 36 }
32588     *
32589     * // A sequence with explicit chaining.
32590     * _(users)
32591     *   .chain()
32592     *   .head()
32593     *   .pick('user')
32594     *   .value();
32595     * // => { 'user': 'barney' }
32596     */
32597    function wrapperChain() {
32598      return chain(this);
32599    }
32600
32601    /**
32602     * Executes the chain sequence and returns the wrapped result.
32603     *
32604     * @name commit
32605     * @memberOf _
32606     * @since 3.2.0
32607     * @category Seq
32608     * @returns {Object} Returns the new `lodash` wrapper instance.
32609     * @example
32610     *
32611     * var array = [1, 2];
32612     * var wrapped = _(array).push(3);
32613     *
32614     * console.log(array);
32615     * // => [1, 2]
32616     *
32617     * wrapped = wrapped.commit();
32618     * console.log(array);
32619     * // => [1, 2, 3]
32620     *
32621     * wrapped.last();
32622     * // => 3
32623     *
32624     * console.log(array);
32625     * // => [1, 2, 3]
32626     */
32627    function wrapperCommit() {
32628      return new LodashWrapper(this.value(), this.__chain__);
32629    }
32630
32631    /**
32632     * Gets the next value on a wrapped object following the
32633     * [iterator protocol](https://mdn.io/iteration_protocols#iterator).
32634     *
32635     * @name next
32636     * @memberOf _
32637     * @since 4.0.0
32638     * @category Seq
32639     * @returns {Object} Returns the next iterator value.
32640     * @example
32641     *
32642     * var wrapped = _([1, 2]);
32643     *
32644     * wrapped.next();
32645     * // => { 'done': false, 'value': 1 }
32646     *
32647     * wrapped.next();
32648     * // => { 'done': false, 'value': 2 }
32649     *
32650     * wrapped.next();
32651     * // => { 'done': true, 'value': undefined }
32652     */
32653    function wrapperNext() {
32654      if (this.__values__ === undefined) {
32655        this.__values__ = toArray(this.value());
32656      }
32657      var done = this.__index__ >= this.__values__.length,
32658          value = done ? undefined : this.__values__[this.__index__++];
32659
32660      return { 'done': done, 'value': value };
32661    }
32662
32663    /**
32664     * Enables the wrapper to be iterable.
32665     *
32666     * @name Symbol.iterator
32667     * @memberOf _
32668     * @since 4.0.0
32669     * @category Seq
32670     * @returns {Object} Returns the wrapper object.
32671     * @example
32672     *
32673     * var wrapped = _([1, 2]);
32674     *
32675     * wrapped[Symbol.iterator]() === wrapped;
32676     * // => true
32677     *
32678     * Array.from(wrapped);
32679     * // => [1, 2]
32680     */
32681    function wrapperToIterator() {
32682      return this;
32683    }
32684
32685    /**
32686     * Creates a clone of the chain sequence planting `value` as the wrapped value.
32687     *
32688     * @name plant
32689     * @memberOf _
32690     * @since 3.2.0
32691     * @category Seq
32692     * @param {*} value The value to plant.
32693     * @returns {Object} Returns the new `lodash` wrapper instance.
32694     * @example
32695     *
32696     * function square(n) {
32697     *   return n * n;
32698     * }
32699     *
32700     * var wrapped = _([1, 2]).map(square);
32701     * var other = wrapped.plant([3, 4]);
32702     *
32703     * other.value();
32704     * // => [9, 16]
32705     *
32706     * wrapped.value();
32707     * // => [1, 4]
32708     */
32709    function wrapperPlant(value) {
32710      var result,
32711          parent = this;
32712
32713      while (parent instanceof baseLodash) {
32714        var clone = wrapperClone(parent);
32715        clone.__index__ = 0;
32716        clone.__values__ = undefined;
32717        if (result) {
32718          previous.__wrapped__ = clone;
32719        } else {
32720          result = clone;
32721        }
32722        var previous = clone;
32723        parent = parent.__wrapped__;
32724      }
32725      previous.__wrapped__ = value;
32726      return result;
32727    }
32728
32729    /**
32730     * This method is the wrapper version of `_.reverse`.
32731     *
32732     * **Note:** This method mutates the wrapped array.
32733     *
32734     * @name reverse
32735     * @memberOf _
32736     * @since 0.1.0
32737     * @category Seq
32738     * @returns {Object} Returns the new `lodash` wrapper instance.
32739     * @example
32740     *
32741     * var array = [1, 2, 3];
32742     *
32743     * _(array).reverse().value()
32744     * // => [3, 2, 1]
32745     *
32746     * console.log(array);
32747     * // => [3, 2, 1]
32748     */
32749    function wrapperReverse() {
32750      var value = this.__wrapped__;
32751      if (value instanceof LazyWrapper) {
32752        var wrapped = value;
32753        if (this.__actions__.length) {
32754          wrapped = new LazyWrapper(this);
32755        }
32756        wrapped = wrapped.reverse();
32757        wrapped.__actions__.push({
32758          'func': thru,
32759          'args': [reverse],
32760          'thisArg': undefined
32761        });
32762        return new LodashWrapper(wrapped, this.__chain__);
32763      }
32764      return this.thru(reverse);
32765    }
32766
32767    /**
32768     * Executes the chain sequence to resolve the unwrapped value.
32769     *
32770     * @name value
32771     * @memberOf _
32772     * @since 0.1.0
32773     * @alias toJSON, valueOf
32774     * @category Seq
32775     * @returns {*} Returns the resolved unwrapped value.
32776     * @example
32777     *
32778     * _([1, 2, 3]).value();
32779     * // => [1, 2, 3]
32780     */
32781    function wrapperValue() {
32782      return baseWrapperValue(this.__wrapped__, this.__actions__);
32783    }
32784
32785    /*------------------------------------------------------------------------*/
32786
32787    /**
32788     * Creates an object composed of keys generated from the results of running
32789     * each element of `collection` thru `iteratee`. The corresponding value of
32790     * each key is the number of times the key was returned by `iteratee`. The
32791     * iteratee is invoked with one argument: (value).
32792     *
32793     * @static
32794     * @memberOf _
32795     * @since 0.5.0
32796     * @category Collection
32797     * @param {Array|Object} collection The collection to iterate over.
32798     * @param {Function} [iteratee=_.identity] The iteratee to transform keys.
32799     * @returns {Object} Returns the composed aggregate object.
32800     * @example
32801     *
32802     * _.countBy([6.1, 4.2, 6.3], Math.floor);
32803     * // => { '4': 1, '6': 2 }
32804     *
32805     * // The `_.property` iteratee shorthand.
32806     * _.countBy(['one', 'two', 'three'], 'length');
32807     * // => { '3': 2, '5': 1 }
32808     */
32809    var countBy = createAggregator(function(result, value, key) {
32810      if (hasOwnProperty.call(result, key)) {
32811        ++result[key];
32812      } else {
32813        baseAssignValue(result, key, 1);
32814      }
32815    });
32816
32817    /**
32818     * Checks if `predicate` returns truthy for **all** elements of `collection`.
32819     * Iteration is stopped once `predicate` returns falsey. The predicate is
32820     * invoked with three arguments: (value, index|key, collection).
32821     *
32822     * **Note:** This method returns `true` for
32823     * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because
32824     * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of
32825     * elements of empty collections.
32826     *
32827     * @static
32828     * @memberOf _
32829     * @since 0.1.0
32830     * @category Collection
32831     * @param {Array|Object} collection The collection to iterate over.
32832     * @param {Function} [predicate=_.identity] The function invoked per iteration.
32833     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
32834     * @returns {boolean} Returns `true` if all elements pass the predicate check,
32835     *  else `false`.
32836     * @example
32837     *
32838     * _.every([true, 1, null, 'yes'], Boolean);
32839     * // => false
32840     *
32841     * var users = [
32842     *   { 'user': 'barney', 'age': 36, 'active': false },
32843     *   { 'user': 'fred',   'age': 40, 'active': false }
32844     * ];
32845     *
32846     * // The `_.matches` iteratee shorthand.
32847     * _.every(users, { 'user': 'barney', 'active': false });
32848     * // => false
32849     *
32850     * // The `_.matchesProperty` iteratee shorthand.
32851     * _.every(users, ['active', false]);
32852     * // => true
32853     *
32854     * // The `_.property` iteratee shorthand.
32855     * _.every(users, 'active');
32856     * // => false
32857     */
32858    function every(collection, predicate, guard) {
32859      var func = isArray(collection) ? arrayEvery : baseEvery;
32860      if (guard && isIterateeCall(collection, predicate, guard)) {
32861        predicate = undefined;
32862      }
32863      return func(collection, getIteratee(predicate, 3));
32864    }
32865
32866    /**
32867     * Iterates over elements of `collection`, returning an array of all elements
32868     * `predicate` returns truthy for. The predicate is invoked with three
32869     * arguments: (value, index|key, collection).
32870     *
32871     * **Note:** Unlike `_.remove`, this method returns a new array.
32872     *
32873     * @static
32874     * @memberOf _
32875     * @since 0.1.0
32876     * @category Collection
32877     * @param {Array|Object} collection The collection to iterate over.
32878     * @param {Function} [predicate=_.identity] The function invoked per iteration.
32879     * @returns {Array} Returns the new filtered array.
32880     * @see _.reject
32881     * @example
32882     *
32883     * var users = [
32884     *   { 'user': 'barney', 'age': 36, 'active': true },
32885     *   { 'user': 'fred',   'age': 40, 'active': false }
32886     * ];
32887     *
32888     * _.filter(users, function(o) { return !o.active; });
32889     * // => objects for ['fred']
32890     *
32891     * // The `_.matches` iteratee shorthand.
32892     * _.filter(users, { 'age': 36, 'active': true });
32893     * // => objects for ['barney']
32894     *
32895     * // The `_.matchesProperty` iteratee shorthand.
32896     * _.filter(users, ['active', false]);
32897     * // => objects for ['fred']
32898     *
32899     * // The `_.property` iteratee shorthand.
32900     * _.filter(users, 'active');
32901     * // => objects for ['barney']
32902     *
32903     * // Combining several predicates using `_.overEvery` or `_.overSome`.
32904     * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));
32905     * // => objects for ['fred', 'barney']
32906     */
32907    function filter(collection, predicate) {
32908      var func = isArray(collection) ? arrayFilter : baseFilter;
32909      return func(collection, getIteratee(predicate, 3));
32910    }
32911
32912    /**
32913     * Iterates over elements of `collection`, returning the first element
32914     * `predicate` returns truthy for. The predicate is invoked with three
32915     * arguments: (value, index|key, collection).
32916     *
32917     * @static
32918     * @memberOf _
32919     * @since 0.1.0
32920     * @category Collection
32921     * @param {Array|Object} collection The collection to inspect.
32922     * @param {Function} [predicate=_.identity] The function invoked per iteration.
32923     * @param {number} [fromIndex=0] The index to search from.
32924     * @returns {*} Returns the matched element, else `undefined`.
32925     * @example
32926     *
32927     * var users = [
32928     *   { 'user': 'barney',  'age': 36, 'active': true },
32929     *   { 'user': 'fred',    'age': 40, 'active': false },
32930     *   { 'user': 'pebbles', 'age': 1,  'active': true }
32931     * ];
32932     *
32933     * _.find(users, function(o) { return o.age < 40; });
32934     * // => object for 'barney'
32935     *
32936     * // The `_.matches` iteratee shorthand.
32937     * _.find(users, { 'age': 1, 'active': true });
32938     * // => object for 'pebbles'
32939     *
32940     * // The `_.matchesProperty` iteratee shorthand.
32941     * _.find(users, ['active', false]);
32942     * // => object for 'fred'
32943     *
32944     * // The `_.property` iteratee shorthand.
32945     * _.find(users, 'active');
32946     * // => object for 'barney'
32947     */
32948    var find = createFind(findIndex);
32949
32950    /**
32951     * This method is like `_.find` except that it iterates over elements of
32952     * `collection` from right to left.
32953     *
32954     * @static
32955     * @memberOf _
32956     * @since 2.0.0
32957     * @category Collection
32958     * @param {Array|Object} collection The collection to inspect.
32959     * @param {Function} [predicate=_.identity] The function invoked per iteration.
32960     * @param {number} [fromIndex=collection.length-1] The index to search from.
32961     * @returns {*} Returns the matched element, else `undefined`.
32962     * @example
32963     *
32964     * _.findLast([1, 2, 3, 4], function(n) {
32965     *   return n % 2 == 1;
32966     * });
32967     * // => 3
32968     */
32969    var findLast = createFind(findLastIndex);
32970
32971    /**
32972     * Creates a flattened array of values by running each element in `collection`
32973     * thru `iteratee` and flattening the mapped results. The iteratee is invoked
32974     * with three arguments: (value, index|key, collection).
32975     *
32976     * @static
32977     * @memberOf _
32978     * @since 4.0.0
32979     * @category Collection
32980     * @param {Array|Object} collection The collection to iterate over.
32981     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
32982     * @returns {Array} Returns the new flattened array.
32983     * @example
32984     *
32985     * function duplicate(n) {
32986     *   return [n, n];
32987     * }
32988     *
32989     * _.flatMap([1, 2], duplicate);
32990     * // => [1, 1, 2, 2]
32991     */
32992    function flatMap(collection, iteratee) {
32993      return baseFlatten(map(collection, iteratee), 1);
32994    }
32995
32996    /**
32997     * This method is like `_.flatMap` except that it recursively flattens the
32998     * mapped results.
32999     *
33000     * @static
33001     * @memberOf _
33002     * @since 4.7.0
33003     * @category Collection
33004     * @param {Array|Object} collection The collection to iterate over.
33005     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
33006     * @returns {Array} Returns the new flattened array.
33007     * @example
33008     *
33009     * function duplicate(n) {
33010     *   return [[[n, n]]];
33011     * }
33012     *
33013     * _.flatMapDeep([1, 2], duplicate);
33014     * // => [1, 1, 2, 2]
33015     */
33016    function flatMapDeep(collection, iteratee) {
33017      return baseFlatten(map(collection, iteratee), INFINITY);
33018    }
33019
33020    /**
33021     * This method is like `_.flatMap` except that it recursively flattens the
33022     * mapped results up to `depth` times.
33023     *
33024     * @static
33025     * @memberOf _
33026     * @since 4.7.0
33027     * @category Collection
33028     * @param {Array|Object} collection The collection to iterate over.
33029     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
33030     * @param {number} [depth=1] The maximum recursion depth.
33031     * @returns {Array} Returns the new flattened array.
33032     * @example
33033     *
33034     * function duplicate(n) {
33035     *   return [[[n, n]]];
33036     * }
33037     *
33038     * _.flatMapDepth([1, 2], duplicate, 2);
33039     * // => [[1, 1], [2, 2]]
33040     */
33041    function flatMapDepth(collection, iteratee, depth) {
33042      depth = depth === undefined ? 1 : toInteger(depth);
33043      return baseFlatten(map(collection, iteratee), depth);
33044    }
33045
33046    /**
33047     * Iterates over elements of `collection` and invokes `iteratee` for each element.
33048     * The iteratee is invoked with three arguments: (value, index|key, collection).
33049     * Iteratee functions may exit iteration early by explicitly returning `false`.
33050     *
33051     * **Note:** As with other "Collections" methods, objects with a "length"
33052     * property are iterated like arrays. To avoid this behavior use `_.forIn`
33053     * or `_.forOwn` for object iteration.
33054     *
33055     * @static
33056     * @memberOf _
33057     * @since 0.1.0
33058     * @alias each
33059     * @category Collection
33060     * @param {Array|Object} collection The collection to iterate over.
33061     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
33062     * @returns {Array|Object} Returns `collection`.
33063     * @see _.forEachRight
33064     * @example
33065     *
33066     * _.forEach([1, 2], function(value) {
33067     *   console.log(value);
33068     * });
33069     * // => Logs `1` then `2`.
33070     *
33071     * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {
33072     *   console.log(key);
33073     * });
33074     * // => Logs 'a' then 'b' (iteration order is not guaranteed).
33075     */
33076    function forEach(collection, iteratee) {
33077      var func = isArray(collection) ? arrayEach : baseEach;
33078      return func(collection, getIteratee(iteratee, 3));
33079    }
33080
33081    /**
33082     * This method is like `_.forEach` except that it iterates over elements of
33083     * `collection` from right to left.
33084     *
33085     * @static
33086     * @memberOf _
33087     * @since 2.0.0
33088     * @alias eachRight
33089     * @category Collection
33090     * @param {Array|Object} collection The collection to iterate over.
33091     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
33092     * @returns {Array|Object} Returns `collection`.
33093     * @see _.forEach
33094     * @example
33095     *
33096     * _.forEachRight([1, 2], function(value) {
33097     *   console.log(value);
33098     * });
33099     * // => Logs `2` then `1`.
33100     */
33101    function forEachRight(collection, iteratee) {
33102      var func = isArray(collection) ? arrayEachRight : baseEachRight;
33103      return func(collection, getIteratee(iteratee, 3));
33104    }
33105
33106    /**
33107     * Creates an object composed of keys generated from the results of running
33108     * each element of `collection` thru `iteratee`. The order of grouped values
33109     * is determined by the order they occur in `collection`. The corresponding
33110     * value of each key is an array of elements responsible for generating the
33111     * key. The iteratee is invoked with one argument: (value).
33112     *
33113     * @static
33114     * @memberOf _
33115     * @since 0.1.0
33116     * @category Collection
33117     * @param {Array|Object} collection The collection to iterate over.
33118     * @param {Function} [iteratee=_.identity] The iteratee to transform keys.
33119     * @returns {Object} Returns the composed aggregate object.
33120     * @example
33121     *
33122     * _.groupBy([6.1, 4.2, 6.3], Math.floor);
33123     * // => { '4': [4.2], '6': [6.1, 6.3] }
33124     *
33125     * // The `_.property` iteratee shorthand.
33126     * _.groupBy(['one', 'two', 'three'], 'length');
33127     * // => { '3': ['one', 'two'], '5': ['three'] }
33128     */
33129    var groupBy = createAggregator(function(result, value, key) {
33130      if (hasOwnProperty.call(result, key)) {
33131        result[key].push(value);
33132      } else {
33133        baseAssignValue(result, key, [value]);
33134      }
33135    });
33136
33137    /**
33138     * Checks if `value` is in `collection`. If `collection` is a string, it's
33139     * checked for a substring of `value`, otherwise
33140     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
33141     * is used for equality comparisons. If `fromIndex` is negative, it's used as
33142     * the offset from the end of `collection`.
33143     *
33144     * @static
33145     * @memberOf _
33146     * @since 0.1.0
33147     * @category Collection
33148     * @param {Array|Object|string} collection The collection to inspect.
33149     * @param {*} value The value to search for.
33150     * @param {number} [fromIndex=0] The index to search from.
33151     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.
33152     * @returns {boolean} Returns `true` if `value` is found, else `false`.
33153     * @example
33154     *
33155     * _.includes([1, 2, 3], 1);
33156     * // => true
33157     *
33158     * _.includes([1, 2, 3], 1, 2);
33159     * // => false
33160     *
33161     * _.includes({ 'a': 1, 'b': 2 }, 1);
33162     * // => true
33163     *
33164     * _.includes('abcd', 'bc');
33165     * // => true
33166     */
33167    function includes(collection, value, fromIndex, guard) {
33168      collection = isArrayLike(collection) ? collection : values(collection);
33169      fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;
33170
33171      var length = collection.length;
33172      if (fromIndex < 0) {
33173        fromIndex = nativeMax(length + fromIndex, 0);
33174      }
33175      return isString(collection)
33176        ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)
33177        : (!!length && baseIndexOf(collection, value, fromIndex) > -1);
33178    }
33179
33180    /**
33181     * Invokes the method at `path` of each element in `collection`, returning
33182     * an array of the results of each invoked method. Any additional arguments
33183     * are provided to each invoked method. If `path` is a function, it's invoked
33184     * for, and `this` bound to, each element in `collection`.
33185     *
33186     * @static
33187     * @memberOf _
33188     * @since 4.0.0
33189     * @category Collection
33190     * @param {Array|Object} collection The collection to iterate over.
33191     * @param {Array|Function|string} path The path of the method to invoke or
33192     *  the function invoked per iteration.
33193     * @param {...*} [args] The arguments to invoke each method with.
33194     * @returns {Array} Returns the array of results.
33195     * @example
33196     *
33197     * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');
33198     * // => [[1, 5, 7], [1, 2, 3]]
33199     *
33200     * _.invokeMap([123, 456], String.prototype.split, '');
33201     * // => [['1', '2', '3'], ['4', '5', '6']]
33202     */
33203    var invokeMap = baseRest(function(collection, path, args) {
33204      var index = -1,
33205          isFunc = typeof path == 'function',
33206          result = isArrayLike(collection) ? Array(collection.length) : [];
33207
33208      baseEach(collection, function(value) {
33209        result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);
33210      });
33211      return result;
33212    });
33213
33214    /**
33215     * Creates an object composed of keys generated from the results of running
33216     * each element of `collection` thru `iteratee`. The corresponding value of
33217     * each key is the last element responsible for generating the key. The
33218     * iteratee is invoked with one argument: (value).
33219     *
33220     * @static
33221     * @memberOf _
33222     * @since 4.0.0
33223     * @category Collection
33224     * @param {Array|Object} collection The collection to iterate over.
33225     * @param {Function} [iteratee=_.identity] The iteratee to transform keys.
33226     * @returns {Object} Returns the composed aggregate object.
33227     * @example
33228     *
33229     * var array = [
33230     *   { 'dir': 'left', 'code': 97 },
33231     *   { 'dir': 'right', 'code': 100 }
33232     * ];
33233     *
33234     * _.keyBy(array, function(o) {
33235     *   return String.fromCharCode(o.code);
33236     * });
33237     * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }
33238     *
33239     * _.keyBy(array, 'dir');
33240     * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }
33241     */
33242    var keyBy = createAggregator(function(result, value, key) {
33243      baseAssignValue(result, key, value);
33244    });
33245
33246    /**
33247     * Creates an array of values by running each element in `collection` thru
33248     * `iteratee`. The iteratee is invoked with three arguments:
33249     * (value, index|key, collection).
33250     *
33251     * Many lodash methods are guarded to work as iteratees for methods like
33252     * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.
33253     *
33254     * The guarded methods are:
33255     * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,
33256     * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,
33257     * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,
33258     * `template`, `trim`, `trimEnd`, `trimStart`, and `words`
33259     *
33260     * @static
33261     * @memberOf _
33262     * @since 0.1.0
33263     * @category Collection
33264     * @param {Array|Object} collection The collection to iterate over.
33265     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
33266     * @returns {Array} Returns the new mapped array.
33267     * @example
33268     *
33269     * function square(n) {
33270     *   return n * n;
33271     * }
33272     *
33273     * _.map([4, 8], square);
33274     * // => [16, 64]
33275     *
33276     * _.map({ 'a': 4, 'b': 8 }, square);
33277     * // => [16, 64] (iteration order is not guaranteed)
33278     *
33279     * var users = [
33280     *   { 'user': 'barney' },
33281     *   { 'user': 'fred' }
33282     * ];
33283     *
33284     * // The `_.property` iteratee shorthand.
33285     * _.map(users, 'user');
33286     * // => ['barney', 'fred']
33287     */
33288    function map(collection, iteratee) {
33289      var func = isArray(collection) ? arrayMap : baseMap;
33290      return func(collection, getIteratee(iteratee, 3));
33291    }
33292
33293    /**
33294     * This method is like `_.sortBy` except that it allows specifying the sort
33295     * orders of the iteratees to sort by. If `orders` is unspecified, all values
33296     * are sorted in ascending order. Otherwise, specify an order of "desc" for
33297     * descending or "asc" for ascending sort order of corresponding values.
33298     *
33299     * @static
33300     * @memberOf _
33301     * @since 4.0.0
33302     * @category Collection
33303     * @param {Array|Object} collection The collection to iterate over.
33304     * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]
33305     *  The iteratees to sort by.
33306     * @param {string[]} [orders] The sort orders of `iteratees`.
33307     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.
33308     * @returns {Array} Returns the new sorted array.
33309     * @example
33310     *
33311     * var users = [
33312     *   { 'user': 'fred',   'age': 48 },
33313     *   { 'user': 'barney', 'age': 34 },
33314     *   { 'user': 'fred',   'age': 40 },
33315     *   { 'user': 'barney', 'age': 36 }
33316     * ];
33317     *
33318     * // Sort by `user` in ascending order and by `age` in descending order.
33319     * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);
33320     * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]
33321     */
33322    function orderBy(collection, iteratees, orders, guard) {
33323      if (collection == null) {
33324        return [];
33325      }
33326      if (!isArray(iteratees)) {
33327        iteratees = iteratees == null ? [] : [iteratees];
33328      }
33329      orders = guard ? undefined : orders;
33330      if (!isArray(orders)) {
33331        orders = orders == null ? [] : [orders];
33332      }
33333      return baseOrderBy(collection, iteratees, orders);
33334    }
33335
33336    /**
33337     * Creates an array of elements split into two groups, the first of which
33338     * contains elements `predicate` returns truthy for, the second of which
33339     * contains elements `predicate` returns falsey for. The predicate is
33340     * invoked with one argument: (value).
33341     *
33342     * @static
33343     * @memberOf _
33344     * @since 3.0.0
33345     * @category Collection
33346     * @param {Array|Object} collection The collection to iterate over.
33347     * @param {Function} [predicate=_.identity] The function invoked per iteration.
33348     * @returns {Array} Returns the array of grouped elements.
33349     * @example
33350     *
33351     * var users = [
33352     *   { 'user': 'barney',  'age': 36, 'active': false },
33353     *   { 'user': 'fred',    'age': 40, 'active': true },
33354     *   { 'user': 'pebbles', 'age': 1,  'active': false }
33355     * ];
33356     *
33357     * _.partition(users, function(o) { return o.active; });
33358     * // => objects for [['fred'], ['barney', 'pebbles']]
33359     *
33360     * // The `_.matches` iteratee shorthand.
33361     * _.partition(users, { 'age': 1, 'active': false });
33362     * // => objects for [['pebbles'], ['barney', 'fred']]
33363     *
33364     * // The `_.matchesProperty` iteratee shorthand.
33365     * _.partition(users, ['active', false]);
33366     * // => objects for [['barney', 'pebbles'], ['fred']]
33367     *
33368     * // The `_.property` iteratee shorthand.
33369     * _.partition(users, 'active');
33370     * // => objects for [['fred'], ['barney', 'pebbles']]
33371     */
33372    var partition = createAggregator(function(result, value, key) {
33373      result[key ? 0 : 1].push(value);
33374    }, function() { return [[], []]; });
33375
33376    /**
33377     * Reduces `collection` to a value which is the accumulated result of running
33378     * each element in `collection` thru `iteratee`, where each successive
33379     * invocation is supplied the return value of the previous. If `accumulator`
33380     * is not given, the first element of `collection` is used as the initial
33381     * value. The iteratee is invoked with four arguments:
33382     * (accumulator, value, index|key, collection).
33383     *
33384     * Many lodash methods are guarded to work as iteratees for methods like
33385     * `_.reduce`, `_.reduceRight`, and `_.transform`.
33386     *
33387     * The guarded methods are:
33388     * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,
33389     * and `sortBy`
33390     *
33391     * @static
33392     * @memberOf _
33393     * @since 0.1.0
33394     * @category Collection
33395     * @param {Array|Object} collection The collection to iterate over.
33396     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
33397     * @param {*} [accumulator] The initial value.
33398     * @returns {*} Returns the accumulated value.
33399     * @see _.reduceRight
33400     * @example
33401     *
33402     * _.reduce([1, 2], function(sum, n) {
33403     *   return sum + n;
33404     * }, 0);
33405     * // => 3
33406     *
33407     * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {
33408     *   (result[value] || (result[value] = [])).push(key);
33409     *   return result;
33410     * }, {});
33411     * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)
33412     */
33413    function reduce(collection, iteratee, accumulator) {
33414      var func = isArray(collection) ? arrayReduce : baseReduce,
33415          initAccum = arguments.length < 3;
33416
33417      return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);
33418    }
33419
33420    /**
33421     * This method is like `_.reduce` except that it iterates over elements of
33422     * `collection` from right to left.
33423     *
33424     * @static
33425     * @memberOf _
33426     * @since 0.1.0
33427     * @category Collection
33428     * @param {Array|Object} collection The collection to iterate over.
33429     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
33430     * @param {*} [accumulator] The initial value.
33431     * @returns {*} Returns the accumulated value.
33432     * @see _.reduce
33433     * @example
33434     *
33435     * var array = [[0, 1], [2, 3], [4, 5]];
33436     *
33437     * _.reduceRight(array, function(flattened, other) {
33438     *   return flattened.concat(other);
33439     * }, []);
33440     * // => [4, 5, 2, 3, 0, 1]
33441     */
33442    function reduceRight(collection, iteratee, accumulator) {
33443      var func = isArray(collection) ? arrayReduceRight : baseReduce,
33444          initAccum = arguments.length < 3;
33445
33446      return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);
33447    }
33448
33449    /**
33450     * The opposite of `_.filter`; this method returns the elements of `collection`
33451     * that `predicate` does **not** return truthy for.
33452     *
33453     * @static
33454     * @memberOf _
33455     * @since 0.1.0
33456     * @category Collection
33457     * @param {Array|Object} collection The collection to iterate over.
33458     * @param {Function} [predicate=_.identity] The function invoked per iteration.
33459     * @returns {Array} Returns the new filtered array.
33460     * @see _.filter
33461     * @example
33462     *
33463     * var users = [
33464     *   { 'user': 'barney', 'age': 36, 'active': false },
33465     *   { 'user': 'fred',   'age': 40, 'active': true }
33466     * ];
33467     *
33468     * _.reject(users, function(o) { return !o.active; });
33469     * // => objects for ['fred']
33470     *
33471     * // The `_.matches` iteratee shorthand.
33472     * _.reject(users, { 'age': 40, 'active': true });
33473     * // => objects for ['barney']
33474     *
33475     * // The `_.matchesProperty` iteratee shorthand.
33476     * _.reject(users, ['active', false]);
33477     * // => objects for ['fred']
33478     *
33479     * // The `_.property` iteratee shorthand.
33480     * _.reject(users, 'active');
33481     * // => objects for ['barney']
33482     */
33483    function reject(collection, predicate) {
33484      var func = isArray(collection) ? arrayFilter : baseFilter;
33485      return func(collection, negate(getIteratee(predicate, 3)));
33486    }
33487
33488    /**
33489     * Gets a random element from `collection`.
33490     *
33491     * @static
33492     * @memberOf _
33493     * @since 2.0.0
33494     * @category Collection
33495     * @param {Array|Object} collection The collection to sample.
33496     * @returns {*} Returns the random element.
33497     * @example
33498     *
33499     * _.sample([1, 2, 3, 4]);
33500     * // => 2
33501     */
33502    function sample(collection) {
33503      var func = isArray(collection) ? arraySample : baseSample;
33504      return func(collection);
33505    }
33506
33507    /**
33508     * Gets `n` random elements at unique keys from `collection` up to the
33509     * size of `collection`.
33510     *
33511     * @static
33512     * @memberOf _
33513     * @since 4.0.0
33514     * @category Collection
33515     * @param {Array|Object} collection The collection to sample.
33516     * @param {number} [n=1] The number of elements to sample.
33517     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
33518     * @returns {Array} Returns the random elements.
33519     * @example
33520     *
33521     * _.sampleSize([1, 2, 3], 2);
33522     * // => [3, 1]
33523     *
33524     * _.sampleSize([1, 2, 3], 4);
33525     * // => [2, 3, 1]
33526     */
33527    function sampleSize(collection, n, guard) {
33528      if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {
33529        n = 1;
33530      } else {
33531        n = toInteger(n);
33532      }
33533      var func = isArray(collection) ? arraySampleSize : baseSampleSize;
33534      return func(collection, n);
33535    }
33536
33537    /**
33538     * Creates an array of shuffled values, using a version of the
33539     * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).
33540     *
33541     * @static
33542     * @memberOf _
33543     * @since 0.1.0
33544     * @category Collection
33545     * @param {Array|Object} collection The collection to shuffle.
33546     * @returns {Array} Returns the new shuffled array.
33547     * @example
33548     *
33549     * _.shuffle([1, 2, 3, 4]);
33550     * // => [4, 1, 3, 2]
33551     */
33552    function shuffle(collection) {
33553      var func = isArray(collection) ? arrayShuffle : baseShuffle;
33554      return func(collection);
33555    }
33556
33557    /**
33558     * Gets the size of `collection` by returning its length for array-like
33559     * values or the number of own enumerable string keyed properties for objects.
33560     *
33561     * @static
33562     * @memberOf _
33563     * @since 0.1.0
33564     * @category Collection
33565     * @param {Array|Object|string} collection The collection to inspect.
33566     * @returns {number} Returns the collection size.
33567     * @example
33568     *
33569     * _.size([1, 2, 3]);
33570     * // => 3
33571     *
33572     * _.size({ 'a': 1, 'b': 2 });
33573     * // => 2
33574     *
33575     * _.size('pebbles');
33576     * // => 7
33577     */
33578    function size(collection) {
33579      if (collection == null) {
33580        return 0;
33581      }
33582      if (isArrayLike(collection)) {
33583        return isString(collection) ? stringSize(collection) : collection.length;
33584      }
33585      var tag = getTag(collection);
33586      if (tag == mapTag || tag == setTag) {
33587        return collection.size;
33588      }
33589      return baseKeys(collection).length;
33590    }
33591
33592    /**
33593     * Checks if `predicate` returns truthy for **any** element of `collection`.
33594     * Iteration is stopped once `predicate` returns truthy. The predicate is
33595     * invoked with three arguments: (value, index|key, collection).
33596     *
33597     * @static
33598     * @memberOf _
33599     * @since 0.1.0
33600     * @category Collection
33601     * @param {Array|Object} collection The collection to iterate over.
33602     * @param {Function} [predicate=_.identity] The function invoked per iteration.
33603     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
33604     * @returns {boolean} Returns `true` if any element passes the predicate check,
33605     *  else `false`.
33606     * @example
33607     *
33608     * _.some([null, 0, 'yes', false], Boolean);
33609     * // => true
33610     *
33611     * var users = [
33612     *   { 'user': 'barney', 'active': true },
33613     *   { 'user': 'fred',   'active': false }
33614     * ];
33615     *
33616     * // The `_.matches` iteratee shorthand.
33617     * _.some(users, { 'user': 'barney', 'active': false });
33618     * // => false
33619     *
33620     * // The `_.matchesProperty` iteratee shorthand.
33621     * _.some(users, ['active', false]);
33622     * // => true
33623     *
33624     * // The `_.property` iteratee shorthand.
33625     * _.some(users, 'active');
33626     * // => true
33627     */
33628    function some(collection, predicate, guard) {
33629      var func = isArray(collection) ? arraySome : baseSome;
33630      if (guard && isIterateeCall(collection, predicate, guard)) {
33631        predicate = undefined;
33632      }
33633      return func(collection, getIteratee(predicate, 3));
33634    }
33635
33636    /**
33637     * Creates an array of elements, sorted in ascending order by the results of
33638     * running each element in a collection thru each iteratee. This method
33639     * performs a stable sort, that is, it preserves the original sort order of
33640     * equal elements. The iteratees are invoked with one argument: (value).
33641     *
33642     * @static
33643     * @memberOf _
33644     * @since 0.1.0
33645     * @category Collection
33646     * @param {Array|Object} collection The collection to iterate over.
33647     * @param {...(Function|Function[])} [iteratees=[_.identity]]
33648     *  The iteratees to sort by.
33649     * @returns {Array} Returns the new sorted array.
33650     * @example
33651     *
33652     * var users = [
33653     *   { 'user': 'fred',   'age': 48 },
33654     *   { 'user': 'barney', 'age': 36 },
33655     *   { 'user': 'fred',   'age': 30 },
33656     *   { 'user': 'barney', 'age': 34 }
33657     * ];
33658     *
33659     * _.sortBy(users, [function(o) { return o.user; }]);
33660     * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]
33661     *
33662     * _.sortBy(users, ['user', 'age']);
33663     * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]
33664     */
33665    var sortBy = baseRest(function(collection, iteratees) {
33666      if (collection == null) {
33667        return [];
33668      }
33669      var length = iteratees.length;
33670      if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {
33671        iteratees = [];
33672      } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {
33673        iteratees = [iteratees[0]];
33674      }
33675      return baseOrderBy(collection, baseFlatten(iteratees, 1), []);
33676    });
33677
33678    /*------------------------------------------------------------------------*/
33679
33680    /**
33681     * Gets the timestamp of the number of milliseconds that have elapsed since
33682     * the Unix epoch (1 January 1970 00:00:00 UTC).
33683     *
33684     * @static
33685     * @memberOf _
33686     * @since 2.4.0
33687     * @category Date
33688     * @returns {number} Returns the timestamp.
33689     * @example
33690     *
33691     * _.defer(function(stamp) {
33692     *   console.log(_.now() - stamp);
33693     * }, _.now());
33694     * // => Logs the number of milliseconds it took for the deferred invocation.
33695     */
33696    var now = ctxNow || function() {
33697      return root.Date.now();
33698    };
33699
33700    /*------------------------------------------------------------------------*/
33701
33702    /**
33703     * The opposite of `_.before`; this method creates a function that invokes
33704     * `func` once it's called `n` or more times.
33705     *
33706     * @static
33707     * @memberOf _
33708     * @since 0.1.0
33709     * @category Function
33710     * @param {number} n The number of calls before `func` is invoked.
33711     * @param {Function} func The function to restrict.
33712     * @returns {Function} Returns the new restricted function.
33713     * @example
33714     *
33715     * var saves = ['profile', 'settings'];
33716     *
33717     * var done = _.after(saves.length, function() {
33718     *   console.log('done saving!');
33719     * });
33720     *
33721     * _.forEach(saves, function(type) {
33722     *   asyncSave({ 'type': type, 'complete': done });
33723     * });
33724     * // => Logs 'done saving!' after the two async saves have completed.
33725     */
33726    function after(n, func) {
33727      if (typeof func != 'function') {
33728        throw new TypeError(FUNC_ERROR_TEXT);
33729      }
33730      n = toInteger(n);
33731      return function() {
33732        if (--n < 1) {
33733          return func.apply(this, arguments);
33734        }
33735      };
33736    }
33737
33738    /**
33739     * Creates a function that invokes `func`, with up to `n` arguments,
33740     * ignoring any additional arguments.
33741     *
33742     * @static
33743     * @memberOf _
33744     * @since 3.0.0
33745     * @category Function
33746     * @param {Function} func The function to cap arguments for.
33747     * @param {number} [n=func.length] The arity cap.
33748     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
33749     * @returns {Function} Returns the new capped function.
33750     * @example
33751     *
33752     * _.map(['6', '8', '10'], _.ary(parseInt, 1));
33753     * // => [6, 8, 10]
33754     */
33755    function ary(func, n, guard) {
33756      n = guard ? undefined : n;
33757      n = (func && n == null) ? func.length : n;
33758      return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);
33759    }
33760
33761    /**
33762     * Creates a function that invokes `func`, with the `this` binding and arguments
33763     * of the created function, while it's called less than `n` times. Subsequent
33764     * calls to the created function return the result of the last `func` invocation.
33765     *
33766     * @static
33767     * @memberOf _
33768     * @since 3.0.0
33769     * @category Function
33770     * @param {number} n The number of calls at which `func` is no longer invoked.
33771     * @param {Function} func The function to restrict.
33772     * @returns {Function} Returns the new restricted function.
33773     * @example
33774     *
33775     * jQuery(element).on('click', _.before(5, addContactToList));
33776     * // => Allows adding up to 4 contacts to the list.
33777     */
33778    function before(n, func) {
33779      var result;
33780      if (typeof func != 'function') {
33781        throw new TypeError(FUNC_ERROR_TEXT);
33782      }
33783      n = toInteger(n);
33784      return function() {
33785        if (--n > 0) {
33786          result = func.apply(this, arguments);
33787        }
33788        if (n <= 1) {
33789          func = undefined;
33790        }
33791        return result;
33792      };
33793    }
33794
33795    /**
33796     * Creates a function that invokes `func` with the `this` binding of `thisArg`
33797     * and `partials` prepended to the arguments it receives.
33798     *
33799     * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,
33800     * may be used as a placeholder for partially applied arguments.
33801     *
33802     * **Note:** Unlike native `Function#bind`, this method doesn't set the "length"
33803     * property of bound functions.
33804     *
33805     * @static
33806     * @memberOf _
33807     * @since 0.1.0
33808     * @category Function
33809     * @param {Function} func The function to bind.
33810     * @param {*} thisArg The `this` binding of `func`.
33811     * @param {...*} [partials] The arguments to be partially applied.
33812     * @returns {Function} Returns the new bound function.
33813     * @example
33814     *
33815     * function greet(greeting, punctuation) {
33816     *   return greeting + ' ' + this.user + punctuation;
33817     * }
33818     *
33819     * var object = { 'user': 'fred' };
33820     *
33821     * var bound = _.bind(greet, object, 'hi');
33822     * bound('!');
33823     * // => 'hi fred!'
33824     *
33825     * // Bound with placeholders.
33826     * var bound = _.bind(greet, object, _, '!');
33827     * bound('hi');
33828     * // => 'hi fred!'
33829     */
33830    var bind = baseRest(function(func, thisArg, partials) {
33831      var bitmask = WRAP_BIND_FLAG;
33832      if (partials.length) {
33833        var holders = replaceHolders(partials, getHolder(bind));
33834        bitmask |= WRAP_PARTIAL_FLAG;
33835      }
33836      return createWrap(func, bitmask, thisArg, partials, holders);
33837    });
33838
33839    /**
33840     * Creates a function that invokes the method at `object[key]` with `partials`
33841     * prepended to the arguments it receives.
33842     *
33843     * This method differs from `_.bind` by allowing bound functions to reference
33844     * methods that may be redefined or don't yet exist. See
33845     * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)
33846     * for more details.
33847     *
33848     * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic
33849     * builds, may be used as a placeholder for partially applied arguments.
33850     *
33851     * @static
33852     * @memberOf _
33853     * @since 0.10.0
33854     * @category Function
33855     * @param {Object} object The object to invoke the method on.
33856     * @param {string} key The key of the method.
33857     * @param {...*} [partials] The arguments to be partially applied.
33858     * @returns {Function} Returns the new bound function.
33859     * @example
33860     *
33861     * var object = {
33862     *   'user': 'fred',
33863     *   'greet': function(greeting, punctuation) {
33864     *     return greeting + ' ' + this.user + punctuation;
33865     *   }
33866     * };
33867     *
33868     * var bound = _.bindKey(object, 'greet', 'hi');
33869     * bound('!');
33870     * // => 'hi fred!'
33871     *
33872     * object.greet = function(greeting, punctuation) {
33873     *   return greeting + 'ya ' + this.user + punctuation;
33874     * };
33875     *
33876     * bound('!');
33877     * // => 'hiya fred!'
33878     *
33879     * // Bound with placeholders.
33880     * var bound = _.bindKey(object, 'greet', _, '!');
33881     * bound('hi');
33882     * // => 'hiya fred!'
33883     */
33884    var bindKey = baseRest(function(object, key, partials) {
33885      var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;
33886      if (partials.length) {
33887        var holders = replaceHolders(partials, getHolder(bindKey));
33888        bitmask |= WRAP_PARTIAL_FLAG;
33889      }
33890      return createWrap(key, bitmask, object, partials, holders);
33891    });
33892
33893    /**
33894     * Creates a function that accepts arguments of `func` and either invokes
33895     * `func` returning its result, if at least `arity` number of arguments have
33896     * been provided, or returns a function that accepts the remaining `func`
33897     * arguments, and so on. The arity of `func` may be specified if `func.length`
33898     * is not sufficient.
33899     *
33900     * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,
33901     * may be used as a placeholder for provided arguments.
33902     *
33903     * **Note:** This method doesn't set the "length" property of curried functions.
33904     *
33905     * @static
33906     * @memberOf _
33907     * @since 2.0.0
33908     * @category Function
33909     * @param {Function} func The function to curry.
33910     * @param {number} [arity=func.length] The arity of `func`.
33911     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
33912     * @returns {Function} Returns the new curried function.
33913     * @example
33914     *
33915     * var abc = function(a, b, c) {
33916     *   return [a, b, c];
33917     * };
33918     *
33919     * var curried = _.curry(abc);
33920     *
33921     * curried(1)(2)(3);
33922     * // => [1, 2, 3]
33923     *
33924     * curried(1, 2)(3);
33925     * // => [1, 2, 3]
33926     *
33927     * curried(1, 2, 3);
33928     * // => [1, 2, 3]
33929     *
33930     * // Curried with placeholders.
33931     * curried(1)(_, 3)(2);
33932     * // => [1, 2, 3]
33933     */
33934    function curry(func, arity, guard) {
33935      arity = guard ? undefined : arity;
33936      var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);
33937      result.placeholder = curry.placeholder;
33938      return result;
33939    }
33940
33941    /**
33942     * This method is like `_.curry` except that arguments are applied to `func`
33943     * in the manner of `_.partialRight` instead of `_.partial`.
33944     *
33945     * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic
33946     * builds, may be used as a placeholder for provided arguments.
33947     *
33948     * **Note:** This method doesn't set the "length" property of curried functions.
33949     *
33950     * @static
33951     * @memberOf _
33952     * @since 3.0.0
33953     * @category Function
33954     * @param {Function} func The function to curry.
33955     * @param {number} [arity=func.length] The arity of `func`.
33956     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
33957     * @returns {Function} Returns the new curried function.
33958     * @example
33959     *
33960     * var abc = function(a, b, c) {
33961     *   return [a, b, c];
33962     * };
33963     *
33964     * var curried = _.curryRight(abc);
33965     *
33966     * curried(3)(2)(1);
33967     * // => [1, 2, 3]
33968     *
33969     * curried(2, 3)(1);
33970     * // => [1, 2, 3]
33971     *
33972     * curried(1, 2, 3);
33973     * // => [1, 2, 3]
33974     *
33975     * // Curried with placeholders.
33976     * curried(3)(1, _)(2);
33977     * // => [1, 2, 3]
33978     */
33979    function curryRight(func, arity, guard) {
33980      arity = guard ? undefined : arity;
33981      var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);
33982      result.placeholder = curryRight.placeholder;
33983      return result;
33984    }
33985
33986    /**
33987     * Creates a debounced function that delays invoking `func` until after `wait`
33988     * milliseconds have elapsed since the last time the debounced function was
33989     * invoked. The debounced function comes with a `cancel` method to cancel
33990     * delayed `func` invocations and a `flush` method to immediately invoke them.
33991     * Provide `options` to indicate whether `func` should be invoked on the
33992     * leading and/or trailing edge of the `wait` timeout. The `func` is invoked
33993     * with the last arguments provided to the debounced function. Subsequent
33994     * calls to the debounced function return the result of the last `func`
33995     * invocation.
33996     *
33997     * **Note:** If `leading` and `trailing` options are `true`, `func` is
33998     * invoked on the trailing edge of the timeout only if the debounced function
33999     * is invoked more than once during the `wait` timeout.
34000     *
34001     * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
34002     * until to the next tick, similar to `setTimeout` with a timeout of `0`.
34003     *
34004     * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
34005     * for details over the differences between `_.debounce` and `_.throttle`.
34006     *
34007     * @static
34008     * @memberOf _
34009     * @since 0.1.0
34010     * @category Function
34011     * @param {Function} func The function to debounce.
34012     * @param {number} [wait=0] The number of milliseconds to delay.
34013     * @param {Object} [options={}] The options object.
34014     * @param {boolean} [options.leading=false]
34015     *  Specify invoking on the leading edge of the timeout.
34016     * @param {number} [options.maxWait]
34017     *  The maximum time `func` is allowed to be delayed before it's invoked.
34018     * @param {boolean} [options.trailing=true]
34019     *  Specify invoking on the trailing edge of the timeout.
34020     * @returns {Function} Returns the new debounced function.
34021     * @example
34022     *
34023     * // Avoid costly calculations while the window size is in flux.
34024     * jQuery(window).on('resize', _.debounce(calculateLayout, 150));
34025     *
34026     * // Invoke `sendMail` when clicked, debouncing subsequent calls.
34027     * jQuery(element).on('click', _.debounce(sendMail, 300, {
34028     *   'leading': true,
34029     *   'trailing': false
34030     * }));
34031     *
34032     * // Ensure `batchLog` is invoked once after 1 second of debounced calls.
34033     * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });
34034     * var source = new EventSource('/stream');
34035     * jQuery(source).on('message', debounced);
34036     *
34037     * // Cancel the trailing debounced invocation.
34038     * jQuery(window).on('popstate', debounced.cancel);
34039     */
34040    function debounce(func, wait, options) {
34041      var lastArgs,
34042          lastThis,
34043          maxWait,
34044          result,
34045          timerId,
34046          lastCallTime,
34047          lastInvokeTime = 0,
34048          leading = false,
34049          maxing = false,
34050          trailing = true;
34051
34052      if (typeof func != 'function') {
34053        throw new TypeError(FUNC_ERROR_TEXT);
34054      }
34055      wait = toNumber(wait) || 0;
34056      if (isObject(options)) {
34057        leading = !!options.leading;
34058        maxing = 'maxWait' in options;
34059        maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;
34060        trailing = 'trailing' in options ? !!options.trailing : trailing;
34061      }
34062
34063      function invokeFunc(time) {
34064        var args = lastArgs,
34065            thisArg = lastThis;
34066
34067        lastArgs = lastThis = undefined;
34068        lastInvokeTime = time;
34069        result = func.apply(thisArg, args);
34070        return result;
34071      }
34072
34073      function leadingEdge(time) {
34074        // Reset any `maxWait` timer.
34075        lastInvokeTime = time;
34076        // Start the timer for the trailing edge.
34077        timerId = setTimeout(timerExpired, wait);
34078        // Invoke the leading edge.
34079        return leading ? invokeFunc(time) : result;
34080      }
34081
34082      function remainingWait(time) {
34083        var timeSinceLastCall = time - lastCallTime,
34084            timeSinceLastInvoke = time - lastInvokeTime,
34085            timeWaiting = wait - timeSinceLastCall;
34086
34087        return maxing
34088          ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)
34089          : timeWaiting;
34090      }
34091
34092      function shouldInvoke(time) {
34093        var timeSinceLastCall = time - lastCallTime,
34094            timeSinceLastInvoke = time - lastInvokeTime;
34095
34096        // Either this is the first call, activity has stopped and we're at the
34097        // trailing edge, the system time has gone backwards and we're treating
34098        // it as the trailing edge, or we've hit the `maxWait` limit.
34099        return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||
34100          (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));
34101      }
34102
34103      function timerExpired() {
34104        var time = now();
34105        if (shouldInvoke(time)) {
34106          return trailingEdge(time);
34107        }
34108        // Restart the timer.
34109        timerId = setTimeout(timerExpired, remainingWait(time));
34110      }
34111
34112      function trailingEdge(time) {
34113        timerId = undefined;
34114
34115        // Only invoke if we have `lastArgs` which means `func` has been
34116        // debounced at least once.
34117        if (trailing && lastArgs) {
34118          return invokeFunc(time);
34119        }
34120        lastArgs = lastThis = undefined;
34121        return result;
34122      }
34123
34124      function cancel() {
34125        if (timerId !== undefined) {
34126          clearTimeout(timerId);
34127        }
34128        lastInvokeTime = 0;
34129        lastArgs = lastCallTime = lastThis = timerId = undefined;
34130      }
34131
34132      function flush() {
34133        return timerId === undefined ? result : trailingEdge(now());
34134      }
34135
34136      function debounced() {
34137        var time = now(),
34138            isInvoking = shouldInvoke(time);
34139
34140        lastArgs = arguments;
34141        lastThis = this;
34142        lastCallTime = time;
34143
34144        if (isInvoking) {
34145          if (timerId === undefined) {
34146            return leadingEdge(lastCallTime);
34147          }
34148          if (maxing) {
34149            // Handle invocations in a tight loop.
34150            clearTimeout(timerId);
34151            timerId = setTimeout(timerExpired, wait);
34152            return invokeFunc(lastCallTime);
34153          }
34154        }
34155        if (timerId === undefined) {
34156          timerId = setTimeout(timerExpired, wait);
34157        }
34158        return result;
34159      }
34160      debounced.cancel = cancel;
34161      debounced.flush = flush;
34162      return debounced;
34163    }
34164
34165    /**
34166     * Defers invoking the `func` until the current call stack has cleared. Any
34167     * additional arguments are provided to `func` when it's invoked.
34168     *
34169     * @static
34170     * @memberOf _
34171     * @since 0.1.0
34172     * @category Function
34173     * @param {Function} func The function to defer.
34174     * @param {...*} [args] The arguments to invoke `func` with.
34175     * @returns {number} Returns the timer id.
34176     * @example
34177     *
34178     * _.defer(function(text) {
34179     *   console.log(text);
34180     * }, 'deferred');
34181     * // => Logs 'deferred' after one millisecond.
34182     */
34183    var defer = baseRest(function(func, args) {
34184      return baseDelay(func, 1, args);
34185    });
34186
34187    /**
34188     * Invokes `func` after `wait` milliseconds. Any additional arguments are
34189     * provided to `func` when it's invoked.
34190     *
34191     * @static
34192     * @memberOf _
34193     * @since 0.1.0
34194     * @category Function
34195     * @param {Function} func The function to delay.
34196     * @param {number} wait The number of milliseconds to delay invocation.
34197     * @param {...*} [args] The arguments to invoke `func` with.
34198     * @returns {number} Returns the timer id.
34199     * @example
34200     *
34201     * _.delay(function(text) {
34202     *   console.log(text);
34203     * }, 1000, 'later');
34204     * // => Logs 'later' after one second.
34205     */
34206    var delay = baseRest(function(func, wait, args) {
34207      return baseDelay(func, toNumber(wait) || 0, args);
34208    });
34209
34210    /**
34211     * Creates a function that invokes `func` with arguments reversed.
34212     *
34213     * @static
34214     * @memberOf _
34215     * @since 4.0.0
34216     * @category Function
34217     * @param {Function} func The function to flip arguments for.
34218     * @returns {Function} Returns the new flipped function.
34219     * @example
34220     *
34221     * var flipped = _.flip(function() {
34222     *   return _.toArray(arguments);
34223     * });
34224     *
34225     * flipped('a', 'b', 'c', 'd');
34226     * // => ['d', 'c', 'b', 'a']
34227     */
34228    function flip(func) {
34229      return createWrap(func, WRAP_FLIP_FLAG);
34230    }
34231
34232    /**
34233     * Creates a function that memoizes the result of `func`. If `resolver` is
34234     * provided, it determines the cache key for storing the result based on the
34235     * arguments provided to the memoized function. By default, the first argument
34236     * provided to the memoized function is used as the map cache key. The `func`
34237     * is invoked with the `this` binding of the memoized function.
34238     *
34239     * **Note:** The cache is exposed as the `cache` property on the memoized
34240     * function. Its creation may be customized by replacing the `_.memoize.Cache`
34241     * constructor with one whose instances implement the
34242     * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)
34243     * method interface of `clear`, `delete`, `get`, `has`, and `set`.
34244     *
34245     * @static
34246     * @memberOf _
34247     * @since 0.1.0
34248     * @category Function
34249     * @param {Function} func The function to have its output memoized.
34250     * @param {Function} [resolver] The function to resolve the cache key.
34251     * @returns {Function} Returns the new memoized function.
34252     * @example
34253     *
34254     * var object = { 'a': 1, 'b': 2 };
34255     * var other = { 'c': 3, 'd': 4 };
34256     *
34257     * var values = _.memoize(_.values);
34258     * values(object);
34259     * // => [1, 2]
34260     *
34261     * values(other);
34262     * // => [3, 4]
34263     *
34264     * object.a = 2;
34265     * values(object);
34266     * // => [1, 2]
34267     *
34268     * // Modify the result cache.
34269     * values.cache.set(object, ['a', 'b']);
34270     * values(object);
34271     * // => ['a', 'b']
34272     *
34273     * // Replace `_.memoize.Cache`.
34274     * _.memoize.Cache = WeakMap;
34275     */
34276    function memoize(func, resolver) {
34277      if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {
34278        throw new TypeError(FUNC_ERROR_TEXT);
34279      }
34280      var memoized = function() {
34281        var args = arguments,
34282            key = resolver ? resolver.apply(this, args) : args[0],
34283            cache = memoized.cache;
34284
34285        if (cache.has(key)) {
34286          return cache.get(key);
34287        }
34288        var result = func.apply(this, args);
34289        memoized.cache = cache.set(key, result) || cache;
34290        return result;
34291      };
34292      memoized.cache = new (memoize.Cache || MapCache);
34293      return memoized;
34294    }
34295
34296    // Expose `MapCache`.
34297    memoize.Cache = MapCache;
34298
34299    /**
34300     * Creates a function that negates the result of the predicate `func`. The
34301     * `func` predicate is invoked with the `this` binding and arguments of the
34302     * created function.
34303     *
34304     * @static
34305     * @memberOf _
34306     * @since 3.0.0
34307     * @category Function
34308     * @param {Function} predicate The predicate to negate.
34309     * @returns {Function} Returns the new negated function.
34310     * @example
34311     *
34312     * function isEven(n) {
34313     *   return n % 2 == 0;
34314     * }
34315     *
34316     * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));
34317     * // => [1, 3, 5]
34318     */
34319    function negate(predicate) {
34320      if (typeof predicate != 'function') {
34321        throw new TypeError(FUNC_ERROR_TEXT);
34322      }
34323      return function() {
34324        var args = arguments;
34325        switch (args.length) {
34326          case 0: return !predicate.call(this);
34327          case 1: return !predicate.call(this, args[0]);
34328          case 2: return !predicate.call(this, args[0], args[1]);
34329          case 3: return !predicate.call(this, args[0], args[1], args[2]);
34330        }
34331        return !predicate.apply(this, args);
34332      };
34333    }
34334
34335    /**
34336     * Creates a function that is restricted to invoking `func` once. Repeat calls
34337     * to the function return the value of the first invocation. The `func` is
34338     * invoked with the `this` binding and arguments of the created function.
34339     *
34340     * @static
34341     * @memberOf _
34342     * @since 0.1.0
34343     * @category Function
34344     * @param {Function} func The function to restrict.
34345     * @returns {Function} Returns the new restricted function.
34346     * @example
34347     *
34348     * var initialize = _.once(createApplication);
34349     * initialize();
34350     * initialize();
34351     * // => `createApplication` is invoked once
34352     */
34353    function once(func) {
34354      return before(2, func);
34355    }
34356
34357    /**
34358     * Creates a function that invokes `func` with its arguments transformed.
34359     *
34360     * @static
34361     * @since 4.0.0
34362     * @memberOf _
34363     * @category Function
34364     * @param {Function} func The function to wrap.
34365     * @param {...(Function|Function[])} [transforms=[_.identity]]
34366     *  The argument transforms.
34367     * @returns {Function} Returns the new function.
34368     * @example
34369     *
34370     * function doubled(n) {
34371     *   return n * 2;
34372     * }
34373     *
34374     * function square(n) {
34375     *   return n * n;
34376     * }
34377     *
34378     * var func = _.overArgs(function(x, y) {
34379     *   return [x, y];
34380     * }, [square, doubled]);
34381     *
34382     * func(9, 3);
34383     * // => [81, 6]
34384     *
34385     * func(10, 5);
34386     * // => [100, 10]
34387     */
34388    var overArgs = castRest(function(func, transforms) {
34389      transforms = (transforms.length == 1 && isArray(transforms[0]))
34390        ? arrayMap(transforms[0], baseUnary(getIteratee()))
34391        : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));
34392
34393      var funcsLength = transforms.length;
34394      return baseRest(function(args) {
34395        var index = -1,
34396            length = nativeMin(args.length, funcsLength);
34397
34398        while (++index < length) {
34399          args[index] = transforms[index].call(this, args[index]);
34400        }
34401        return apply(func, this, args);
34402      });
34403    });
34404
34405    /**
34406     * Creates a function that invokes `func` with `partials` prepended to the
34407     * arguments it receives. This method is like `_.bind` except it does **not**
34408     * alter the `this` binding.
34409     *
34410     * The `_.partial.placeholder` value, which defaults to `_` in monolithic
34411     * builds, may be used as a placeholder for partially applied arguments.
34412     *
34413     * **Note:** This method doesn't set the "length" property of partially
34414     * applied functions.
34415     *
34416     * @static
34417     * @memberOf _
34418     * @since 0.2.0
34419     * @category Function
34420     * @param {Function} func The function to partially apply arguments to.
34421     * @param {...*} [partials] The arguments to be partially applied.
34422     * @returns {Function} Returns the new partially applied function.
34423     * @example
34424     *
34425     * function greet(greeting, name) {
34426     *   return greeting + ' ' + name;
34427     * }
34428     *
34429     * var sayHelloTo = _.partial(greet, 'hello');
34430     * sayHelloTo('fred');
34431     * // => 'hello fred'
34432     *
34433     * // Partially applied with placeholders.
34434     * var greetFred = _.partial(greet, _, 'fred');
34435     * greetFred('hi');
34436     * // => 'hi fred'
34437     */
34438    var partial = baseRest(function(func, partials) {
34439      var holders = replaceHolders(partials, getHolder(partial));
34440      return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);
34441    });
34442
34443    /**
34444     * This method is like `_.partial` except that partially applied arguments
34445     * are appended to the arguments it receives.
34446     *
34447     * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic
34448     * builds, may be used as a placeholder for partially applied arguments.
34449     *
34450     * **Note:** This method doesn't set the "length" property of partially
34451     * applied functions.
34452     *
34453     * @static
34454     * @memberOf _
34455     * @since 1.0.0
34456     * @category Function
34457     * @param {Function} func The function to partially apply arguments to.
34458     * @param {...*} [partials] The arguments to be partially applied.
34459     * @returns {Function} Returns the new partially applied function.
34460     * @example
34461     *
34462     * function greet(greeting, name) {
34463     *   return greeting + ' ' + name;
34464     * }
34465     *
34466     * var greetFred = _.partialRight(greet, 'fred');
34467     * greetFred('hi');
34468     * // => 'hi fred'
34469     *
34470     * // Partially applied with placeholders.
34471     * var sayHelloTo = _.partialRight(greet, 'hello', _);
34472     * sayHelloTo('fred');
34473     * // => 'hello fred'
34474     */
34475    var partialRight = baseRest(function(func, partials) {
34476      var holders = replaceHolders(partials, getHolder(partialRight));
34477      return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);
34478    });
34479
34480    /**
34481     * Creates a function that invokes `func` with arguments arranged according
34482     * to the specified `indexes` where the argument value at the first index is
34483     * provided as the first argument, the argument value at the second index is
34484     * provided as the second argument, and so on.
34485     *
34486     * @static
34487     * @memberOf _
34488     * @since 3.0.0
34489     * @category Function
34490     * @param {Function} func The function to rearrange arguments for.
34491     * @param {...(number|number[])} indexes The arranged argument indexes.
34492     * @returns {Function} Returns the new function.
34493     * @example
34494     *
34495     * var rearged = _.rearg(function(a, b, c) {
34496     *   return [a, b, c];
34497     * }, [2, 0, 1]);
34498     *
34499     * rearged('b', 'c', 'a')
34500     * // => ['a', 'b', 'c']
34501     */
34502    var rearg = flatRest(function(func, indexes) {
34503      return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);
34504    });
34505
34506    /**
34507     * Creates a function that invokes `func` with the `this` binding of the
34508     * created function and arguments from `start` and beyond provided as
34509     * an array.
34510     *
34511     * **Note:** This method is based on the
34512     * [rest parameter](https://mdn.io/rest_parameters).
34513     *
34514     * @static
34515     * @memberOf _
34516     * @since 4.0.0
34517     * @category Function
34518     * @param {Function} func The function to apply a rest parameter to.
34519     * @param {number} [start=func.length-1] The start position of the rest parameter.
34520     * @returns {Function} Returns the new function.
34521     * @example
34522     *
34523     * var say = _.rest(function(what, names) {
34524     *   return what + ' ' + _.initial(names).join(', ') +
34525     *     (_.size(names) > 1 ? ', & ' : '') + _.last(names);
34526     * });
34527     *
34528     * say('hello', 'fred', 'barney', 'pebbles');
34529     * // => 'hello fred, barney, & pebbles'
34530     */
34531    function rest(func, start) {
34532      if (typeof func != 'function') {
34533        throw new TypeError(FUNC_ERROR_TEXT);
34534      }
34535      start = start === undefined ? start : toInteger(start);
34536      return baseRest(func, start);
34537    }
34538
34539    /**
34540     * Creates a function that invokes `func` with the `this` binding of the
34541     * create function and an array of arguments much like
34542     * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).
34543     *
34544     * **Note:** This method is based on the
34545     * [spread operator](https://mdn.io/spread_operator).
34546     *
34547     * @static
34548     * @memberOf _
34549     * @since 3.2.0
34550     * @category Function
34551     * @param {Function} func The function to spread arguments over.
34552     * @param {number} [start=0] The start position of the spread.
34553     * @returns {Function} Returns the new function.
34554     * @example
34555     *
34556     * var say = _.spread(function(who, what) {
34557     *   return who + ' says ' + what;
34558     * });
34559     *
34560     * say(['fred', 'hello']);
34561     * // => 'fred says hello'
34562     *
34563     * var numbers = Promise.all([
34564     *   Promise.resolve(40),
34565     *   Promise.resolve(36)
34566     * ]);
34567     *
34568     * numbers.then(_.spread(function(x, y) {
34569     *   return x + y;
34570     * }));
34571     * // => a Promise of 76
34572     */
34573    function spread(func, start) {
34574      if (typeof func != 'function') {
34575        throw new TypeError(FUNC_ERROR_TEXT);
34576      }
34577      start = start == null ? 0 : nativeMax(toInteger(start), 0);
34578      return baseRest(function(args) {
34579        var array = args[start],
34580            otherArgs = castSlice(args, 0, start);
34581
34582        if (array) {
34583          arrayPush(otherArgs, array);
34584        }
34585        return apply(func, this, otherArgs);
34586      });
34587    }
34588
34589    /**
34590     * Creates a throttled function that only invokes `func` at most once per
34591     * every `wait` milliseconds. The throttled function comes with a `cancel`
34592     * method to cancel delayed `func` invocations and a `flush` method to
34593     * immediately invoke them. Provide `options` to indicate whether `func`
34594     * should be invoked on the leading and/or trailing edge of the `wait`
34595     * timeout. The `func` is invoked with the last arguments provided to the
34596     * throttled function. Subsequent calls to the throttled function return the
34597     * result of the last `func` invocation.
34598     *
34599     * **Note:** If `leading` and `trailing` options are `true`, `func` is
34600     * invoked on the trailing edge of the timeout only if the throttled function
34601     * is invoked more than once during the `wait` timeout.
34602     *
34603     * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
34604     * until to the next tick, similar to `setTimeout` with a timeout of `0`.
34605     *
34606     * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
34607     * for details over the differences between `_.throttle` and `_.debounce`.
34608     *
34609     * @static
34610     * @memberOf _
34611     * @since 0.1.0
34612     * @category Function
34613     * @param {Function} func The function to throttle.
34614     * @param {number} [wait=0] The number of milliseconds to throttle invocations to.
34615     * @param {Object} [options={}] The options object.
34616     * @param {boolean} [options.leading=true]
34617     *  Specify invoking on the leading edge of the timeout.
34618     * @param {boolean} [options.trailing=true]
34619     *  Specify invoking on the trailing edge of the timeout.
34620     * @returns {Function} Returns the new throttled function.
34621     * @example
34622     *
34623     * // Avoid excessively updating the position while scrolling.
34624     * jQuery(window).on('scroll', _.throttle(updatePosition, 100));
34625     *
34626     * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.
34627     * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });
34628     * jQuery(element).on('click', throttled);
34629     *
34630     * // Cancel the trailing throttled invocation.
34631     * jQuery(window).on('popstate', throttled.cancel);
34632     */
34633    function throttle(func, wait, options) {
34634      var leading = true,
34635          trailing = true;
34636
34637      if (typeof func != 'function') {
34638        throw new TypeError(FUNC_ERROR_TEXT);
34639      }
34640      if (isObject(options)) {
34641        leading = 'leading' in options ? !!options.leading : leading;
34642        trailing = 'trailing' in options ? !!options.trailing : trailing;
34643      }
34644      return debounce(func, wait, {
34645        'leading': leading,
34646        'maxWait': wait,
34647        'trailing': trailing
34648      });
34649    }
34650
34651    /**
34652     * Creates a function that accepts up to one argument, ignoring any
34653     * additional arguments.
34654     *
34655     * @static
34656     * @memberOf _
34657     * @since 4.0.0
34658     * @category Function
34659     * @param {Function} func The function to cap arguments for.
34660     * @returns {Function} Returns the new capped function.
34661     * @example
34662     *
34663     * _.map(['6', '8', '10'], _.unary(parseInt));
34664     * // => [6, 8, 10]
34665     */
34666    function unary(func) {
34667      return ary(func, 1);
34668    }
34669
34670    /**
34671     * Creates a function that provides `value` to `wrapper` as its first
34672     * argument. Any additional arguments provided to the function are appended
34673     * to those provided to the `wrapper`. The wrapper is invoked with the `this`
34674     * binding of the created function.
34675     *
34676     * @static
34677     * @memberOf _
34678     * @since 0.1.0
34679     * @category Function
34680     * @param {*} value The value to wrap.
34681     * @param {Function} [wrapper=identity] The wrapper function.
34682     * @returns {Function} Returns the new function.
34683     * @example
34684     *
34685     * var p = _.wrap(_.escape, function(func, text) {
34686     *   return '<p>' + func(text) + '</p>';
34687     * });
34688     *
34689     * p('fred, barney, & pebbles');
34690     * // => '<p>fred, barney, &amp; pebbles</p>'
34691     */
34692    function wrap(value, wrapper) {
34693      return partial(castFunction(wrapper), value);
34694    }
34695
34696    /*------------------------------------------------------------------------*/
34697
34698    /**
34699     * Casts `value` as an array if it's not one.
34700     *
34701     * @static
34702     * @memberOf _
34703     * @since 4.4.0
34704     * @category Lang
34705     * @param {*} value The value to inspect.
34706     * @returns {Array} Returns the cast array.
34707     * @example
34708     *
34709     * _.castArray(1);
34710     * // => [1]
34711     *
34712     * _.castArray({ 'a': 1 });
34713     * // => [{ 'a': 1 }]
34714     *
34715     * _.castArray('abc');
34716     * // => ['abc']
34717     *
34718     * _.castArray(null);
34719     * // => [null]
34720     *
34721     * _.castArray(undefined);
34722     * // => [undefined]
34723     *
34724     * _.castArray();
34725     * // => []
34726     *
34727     * var array = [1, 2, 3];
34728     * console.log(_.castArray(array) === array);
34729     * // => true
34730     */
34731    function castArray() {
34732      if (!arguments.length) {
34733        return [];
34734      }
34735      var value = arguments[0];
34736      return isArray(value) ? value : [value];
34737    }
34738
34739    /**
34740     * Creates a shallow clone of `value`.
34741     *
34742     * **Note:** This method is loosely based on the
34743     * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)
34744     * and supports cloning arrays, array buffers, booleans, date objects, maps,
34745     * numbers, `Object` objects, regexes, sets, strings, symbols, and typed
34746     * arrays. The own enumerable properties of `arguments` objects are cloned
34747     * as plain objects. An empty object is returned for uncloneable values such
34748     * as error objects, functions, DOM nodes, and WeakMaps.
34749     *
34750     * @static
34751     * @memberOf _
34752     * @since 0.1.0
34753     * @category Lang
34754     * @param {*} value The value to clone.
34755     * @returns {*} Returns the cloned value.
34756     * @see _.cloneDeep
34757     * @example
34758     *
34759     * var objects = [{ 'a': 1 }, { 'b': 2 }];
34760     *
34761     * var shallow = _.clone(objects);
34762     * console.log(shallow[0] === objects[0]);
34763     * // => true
34764     */
34765    function clone(value) {
34766      return baseClone(value, CLONE_SYMBOLS_FLAG);
34767    }
34768
34769    /**
34770     * This method is like `_.clone` except that it accepts `customizer` which
34771     * is invoked to produce the cloned value. If `customizer` returns `undefined`,
34772     * cloning is handled by the method instead. The `customizer` is invoked with
34773     * up to four arguments; (value [, index|key, object, stack]).
34774     *
34775     * @static
34776     * @memberOf _
34777     * @since 4.0.0
34778     * @category Lang
34779     * @param {*} value The value to clone.
34780     * @param {Function} [customizer] The function to customize cloning.
34781     * @returns {*} Returns the cloned value.
34782     * @see _.cloneDeepWith
34783     * @example
34784     *
34785     * function customizer(value) {
34786     *   if (_.isElement(value)) {
34787     *     return value.cloneNode(false);
34788     *   }
34789     * }
34790     *
34791     * var el = _.cloneWith(document.body, customizer);
34792     *
34793     * console.log(el === document.body);
34794     * // => false
34795     * console.log(el.nodeName);
34796     * // => 'BODY'
34797     * console.log(el.childNodes.length);
34798     * // => 0
34799     */
34800    function cloneWith(value, customizer) {
34801      customizer = typeof customizer == 'function' ? customizer : undefined;
34802      return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);
34803    }
34804
34805    /**
34806     * This method is like `_.clone` except that it recursively clones `value`.
34807     *
34808     * @static
34809     * @memberOf _
34810     * @since 1.0.0
34811     * @category Lang
34812     * @param {*} value The value to recursively clone.
34813     * @returns {*} Returns the deep cloned value.
34814     * @see _.clone
34815     * @example
34816     *
34817     * var objects = [{ 'a': 1 }, { 'b': 2 }];
34818     *
34819     * var deep = _.cloneDeep(objects);
34820     * console.log(deep[0] === objects[0]);
34821     * // => false
34822     */
34823    function cloneDeep(value) {
34824      return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);
34825    }
34826
34827    /**
34828     * This method is like `_.cloneWith` except that it recursively clones `value`.
34829     *
34830     * @static
34831     * @memberOf _
34832     * @since 4.0.0
34833     * @category Lang
34834     * @param {*} value The value to recursively clone.
34835     * @param {Function} [customizer] The function to customize cloning.
34836     * @returns {*} Returns the deep cloned value.
34837     * @see _.cloneWith
34838     * @example
34839     *
34840     * function customizer(value) {
34841     *   if (_.isElement(value)) {
34842     *     return value.cloneNode(true);
34843     *   }
34844     * }
34845     *
34846     * var el = _.cloneDeepWith(document.body, customizer);
34847     *
34848     * console.log(el === document.body);
34849     * // => false
34850     * console.log(el.nodeName);
34851     * // => 'BODY'
34852     * console.log(el.childNodes.length);
34853     * // => 20
34854     */
34855    function cloneDeepWith(value, customizer) {
34856      customizer = typeof customizer == 'function' ? customizer : undefined;
34857      return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);
34858    }
34859
34860    /**
34861     * Checks if `object` conforms to `source` by invoking the predicate
34862     * properties of `source` with the corresponding property values of `object`.
34863     *
34864     * **Note:** This method is equivalent to `_.conforms` when `source` is
34865     * partially applied.
34866     *
34867     * @static
34868     * @memberOf _
34869     * @since 4.14.0
34870     * @category Lang
34871     * @param {Object} object The object to inspect.
34872     * @param {Object} source The object of property predicates to conform to.
34873     * @returns {boolean} Returns `true` if `object` conforms, else `false`.
34874     * @example
34875     *
34876     * var object = { 'a': 1, 'b': 2 };
34877     *
34878     * _.conformsTo(object, { 'b': function(n) { return n > 1; } });
34879     * // => true
34880     *
34881     * _.conformsTo(object, { 'b': function(n) { return n > 2; } });
34882     * // => false
34883     */
34884    function conformsTo(object, source) {
34885      return source == null || baseConformsTo(object, source, keys(source));
34886    }
34887
34888    /**
34889     * Performs a
34890     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
34891     * comparison between two values to determine if they are equivalent.
34892     *
34893     * @static
34894     * @memberOf _
34895     * @since 4.0.0
34896     * @category Lang
34897     * @param {*} value The value to compare.
34898     * @param {*} other The other value to compare.
34899     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
34900     * @example
34901     *
34902     * var object = { 'a': 1 };
34903     * var other = { 'a': 1 };
34904     *
34905     * _.eq(object, object);
34906     * // => true
34907     *
34908     * _.eq(object, other);
34909     * // => false
34910     *
34911     * _.eq('a', 'a');
34912     * // => true
34913     *
34914     * _.eq('a', Object('a'));
34915     * // => false
34916     *
34917     * _.eq(NaN, NaN);
34918     * // => true
34919     */
34920    function eq(value, other) {
34921      return value === other || (value !== value && other !== other);
34922    }
34923
34924    /**
34925     * Checks if `value` is greater than `other`.
34926     *
34927     * @static
34928     * @memberOf _
34929     * @since 3.9.0
34930     * @category Lang
34931     * @param {*} value The value to compare.
34932     * @param {*} other The other value to compare.
34933     * @returns {boolean} Returns `true` if `value` is greater than `other`,
34934     *  else `false`.
34935     * @see _.lt
34936     * @example
34937     *
34938     * _.gt(3, 1);
34939     * // => true
34940     *
34941     * _.gt(3, 3);
34942     * // => false
34943     *
34944     * _.gt(1, 3);
34945     * // => false
34946     */
34947    var gt = createRelationalOperation(baseGt);
34948
34949    /**
34950     * Checks if `value` is greater than or equal to `other`.
34951     *
34952     * @static
34953     * @memberOf _
34954     * @since 3.9.0
34955     * @category Lang
34956     * @param {*} value The value to compare.
34957     * @param {*} other The other value to compare.
34958     * @returns {boolean} Returns `true` if `value` is greater than or equal to
34959     *  `other`, else `false`.
34960     * @see _.lte
34961     * @example
34962     *
34963     * _.gte(3, 1);
34964     * // => true
34965     *
34966     * _.gte(3, 3);
34967     * // => true
34968     *
34969     * _.gte(1, 3);
34970     * // => false
34971     */
34972    var gte = createRelationalOperation(function(value, other) {
34973      return value >= other;
34974    });
34975
34976    /**
34977     * Checks if `value` is likely an `arguments` object.
34978     *
34979     * @static
34980     * @memberOf _
34981     * @since 0.1.0
34982     * @category Lang
34983     * @param {*} value The value to check.
34984     * @returns {boolean} Returns `true` if `value` is an `arguments` object,
34985     *  else `false`.
34986     * @example
34987     *
34988     * _.isArguments(function() { return arguments; }());
34989     * // => true
34990     *
34991     * _.isArguments([1, 2, 3]);
34992     * // => false
34993     */
34994    var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {
34995      return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&
34996        !propertyIsEnumerable.call(value, 'callee');
34997    };
34998
34999    /**
35000     * Checks if `value` is classified as an `Array` object.
35001     *
35002     * @static
35003     * @memberOf _
35004     * @since 0.1.0
35005     * @category Lang
35006     * @param {*} value The value to check.
35007     * @returns {boolean} Returns `true` if `value` is an array, else `false`.
35008     * @example
35009     *
35010     * _.isArray([1, 2, 3]);
35011     * // => true
35012     *
35013     * _.isArray(document.body.children);
35014     * // => false
35015     *
35016     * _.isArray('abc');
35017     * // => false
35018     *
35019     * _.isArray(_.noop);
35020     * // => false
35021     */
35022    var isArray = Array.isArray;
35023
35024    /**
35025     * Checks if `value` is classified as an `ArrayBuffer` object.
35026     *
35027     * @static
35028     * @memberOf _
35029     * @since 4.3.0
35030     * @category Lang
35031     * @param {*} value The value to check.
35032     * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.
35033     * @example
35034     *
35035     * _.isArrayBuffer(new ArrayBuffer(2));
35036     * // => true
35037     *
35038     * _.isArrayBuffer(new Array(2));
35039     * // => false
35040     */
35041    var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;
35042
35043    /**
35044     * Checks if `value` is array-like. A value is considered array-like if it's
35045     * not a function and has a `value.length` that's an integer greater than or
35046     * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
35047     *
35048     * @static
35049     * @memberOf _
35050     * @since 4.0.0
35051     * @category Lang
35052     * @param {*} value The value to check.
35053     * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
35054     * @example
35055     *
35056     * _.isArrayLike([1, 2, 3]);
35057     * // => true
35058     *
35059     * _.isArrayLike(document.body.children);
35060     * // => true
35061     *
35062     * _.isArrayLike('abc');
35063     * // => true
35064     *
35065     * _.isArrayLike(_.noop);
35066     * // => false
35067     */
35068    function isArrayLike(value) {
35069      return value != null && isLength(value.length) && !isFunction(value);
35070    }
35071
35072    /**
35073     * This method is like `_.isArrayLike` except that it also checks if `value`
35074     * is an object.
35075     *
35076     * @static
35077     * @memberOf _
35078     * @since 4.0.0
35079     * @category Lang
35080     * @param {*} value The value to check.
35081     * @returns {boolean} Returns `true` if `value` is an array-like object,
35082     *  else `false`.
35083     * @example
35084     *
35085     * _.isArrayLikeObject([1, 2, 3]);
35086     * // => true
35087     *
35088     * _.isArrayLikeObject(document.body.children);
35089     * // => true
35090     *
35091     * _.isArrayLikeObject('abc');
35092     * // => false
35093     *
35094     * _.isArrayLikeObject(_.noop);
35095     * // => false
35096     */
35097    function isArrayLikeObject(value) {
35098      return isObjectLike(value) && isArrayLike(value);
35099    }
35100
35101    /**
35102     * Checks if `value` is classified as a boolean primitive or object.
35103     *
35104     * @static
35105     * @memberOf _
35106     * @since 0.1.0
35107     * @category Lang
35108     * @param {*} value The value to check.
35109     * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.
35110     * @example
35111     *
35112     * _.isBoolean(false);
35113     * // => true
35114     *
35115     * _.isBoolean(null);
35116     * // => false
35117     */
35118    function isBoolean(value) {
35119      return value === true || value === false ||
35120        (isObjectLike(value) && baseGetTag(value) == boolTag);
35121    }
35122
35123    /**
35124     * Checks if `value` is a buffer.
35125     *
35126     * @static
35127     * @memberOf _
35128     * @since 4.3.0
35129     * @category Lang
35130     * @param {*} value The value to check.
35131     * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.
35132     * @example
35133     *
35134     * _.isBuffer(new Buffer(2));
35135     * // => true
35136     *
35137     * _.isBuffer(new Uint8Array(2));
35138     * // => false
35139     */
35140    var isBuffer = nativeIsBuffer || stubFalse;
35141
35142    /**
35143     * Checks if `value` is classified as a `Date` object.
35144     *
35145     * @static
35146     * @memberOf _
35147     * @since 0.1.0
35148     * @category Lang
35149     * @param {*} value The value to check.
35150     * @returns {boolean} Returns `true` if `value` is a date object, else `false`.
35151     * @example
35152     *
35153     * _.isDate(new Date);
35154     * // => true
35155     *
35156     * _.isDate('Mon April 23 2012');
35157     * // => false
35158     */
35159    var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;
35160
35161    /**
35162     * Checks if `value` is likely a DOM element.
35163     *
35164     * @static
35165     * @memberOf _
35166     * @since 0.1.0
35167     * @category Lang
35168     * @param {*} value The value to check.
35169     * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.
35170     * @example
35171     *
35172     * _.isElement(document.body);
35173     * // => true
35174     *
35175     * _.isElement('<body>');
35176     * // => false
35177     */
35178    function isElement(value) {
35179      return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);
35180    }
35181
35182    /**
35183     * Checks if `value` is an empty object, collection, map, or set.
35184     *
35185     * Objects are considered empty if they have no own enumerable string keyed
35186     * properties.
35187     *
35188     * Array-like values such as `arguments` objects, arrays, buffers, strings, or
35189     * jQuery-like collections are considered empty if they have a `length` of `0`.
35190     * Similarly, maps and sets are considered empty if they have a `size` of `0`.
35191     *
35192     * @static
35193     * @memberOf _
35194     * @since 0.1.0
35195     * @category Lang
35196     * @param {*} value The value to check.
35197     * @returns {boolean} Returns `true` if `value` is empty, else `false`.
35198     * @example
35199     *
35200     * _.isEmpty(null);
35201     * // => true
35202     *
35203     * _.isEmpty(true);
35204     * // => true
35205     *
35206     * _.isEmpty(1);
35207     * // => true
35208     *
35209     * _.isEmpty([1, 2, 3]);
35210     * // => false
35211     *
35212     * _.isEmpty({ 'a': 1 });
35213     * // => false
35214     */
35215    function isEmpty(value) {
35216      if (value == null) {
35217        return true;
35218      }
35219      if (isArrayLike(value) &&
35220          (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||
35221            isBuffer(value) || isTypedArray(value) || isArguments(value))) {
35222        return !value.length;
35223      }
35224      var tag = getTag(value);
35225      if (tag == mapTag || tag == setTag) {
35226        return !value.size;
35227      }
35228      if (isPrototype(value)) {
35229        return !baseKeys(value).length;
35230      }
35231      for (var key in value) {
35232        if (hasOwnProperty.call(value, key)) {
35233          return false;
35234        }
35235      }
35236      return true;
35237    }
35238
35239    /**
35240     * Performs a deep comparison between two values to determine if they are
35241     * equivalent.
35242     *
35243     * **Note:** This method supports comparing arrays, array buffers, booleans,
35244     * date objects, error objects, maps, numbers, `Object` objects, regexes,
35245     * sets, strings, symbols, and typed arrays. `Object` objects are compared
35246     * by their own, not inherited, enumerable properties. Functions and DOM
35247     * nodes are compared by strict equality, i.e. `===`.
35248     *
35249     * @static
35250     * @memberOf _
35251     * @since 0.1.0
35252     * @category Lang
35253     * @param {*} value The value to compare.
35254     * @param {*} other The other value to compare.
35255     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
35256     * @example
35257     *
35258     * var object = { 'a': 1 };
35259     * var other = { 'a': 1 };
35260     *
35261     * _.isEqual(object, other);
35262     * // => true
35263     *
35264     * object === other;
35265     * // => false
35266     */
35267    function isEqual(value, other) {
35268      return baseIsEqual(value, other);
35269    }
35270
35271    /**
35272     * This method is like `_.isEqual` except that it accepts `customizer` which
35273     * is invoked to compare values. If `customizer` returns `undefined`, comparisons
35274     * are handled by the method instead. The `customizer` is invoked with up to
35275     * six arguments: (objValue, othValue [, index|key, object, other, stack]).
35276     *
35277     * @static
35278     * @memberOf _
35279     * @since 4.0.0
35280     * @category Lang
35281     * @param {*} value The value to compare.
35282     * @param {*} other The other value to compare.
35283     * @param {Function} [customizer] The function to customize comparisons.
35284     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
35285     * @example
35286     *
35287     * function isGreeting(value) {
35288     *   return /^h(?:i|ello)$/.test(value);
35289     * }
35290     *
35291     * function customizer(objValue, othValue) {
35292     *   if (isGreeting(objValue) && isGreeting(othValue)) {
35293     *     return true;
35294     *   }
35295     * }
35296     *
35297     * var array = ['hello', 'goodbye'];
35298     * var other = ['hi', 'goodbye'];
35299     *
35300     * _.isEqualWith(array, other, customizer);
35301     * // => true
35302     */
35303    function isEqualWith(value, other, customizer) {
35304      customizer = typeof customizer == 'function' ? customizer : undefined;
35305      var result = customizer ? customizer(value, other) : undefined;
35306      return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;
35307    }
35308
35309    /**
35310     * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,
35311     * `SyntaxError`, `TypeError`, or `URIError` object.
35312     *
35313     * @static
35314     * @memberOf _
35315     * @since 3.0.0
35316     * @category Lang
35317     * @param {*} value The value to check.
35318     * @returns {boolean} Returns `true` if `value` is an error object, else `false`.
35319     * @example
35320     *
35321     * _.isError(new Error);
35322     * // => true
35323     *
35324     * _.isError(Error);
35325     * // => false
35326     */
35327    function isError(value) {
35328      if (!isObjectLike(value)) {
35329        return false;
35330      }
35331      var tag = baseGetTag(value);
35332      return tag == errorTag || tag == domExcTag ||
35333        (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));
35334    }
35335
35336    /**
35337     * Checks if `value` is a finite primitive number.
35338     *
35339     * **Note:** This method is based on
35340     * [`Number.isFinite`](https://mdn.io/Number/isFinite).
35341     *
35342     * @static
35343     * @memberOf _
35344     * @since 0.1.0
35345     * @category Lang
35346     * @param {*} value The value to check.
35347     * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.
35348     * @example
35349     *
35350     * _.isFinite(3);
35351     * // => true
35352     *
35353     * _.isFinite(Number.MIN_VALUE);
35354     * // => true
35355     *
35356     * _.isFinite(Infinity);
35357     * // => false
35358     *
35359     * _.isFinite('3');
35360     * // => false
35361     */
35362    function isFinite(value) {
35363      return typeof value == 'number' && nativeIsFinite(value);
35364    }
35365
35366    /**
35367     * Checks if `value` is classified as a `Function` object.
35368     *
35369     * @static
35370     * @memberOf _
35371     * @since 0.1.0
35372     * @category Lang
35373     * @param {*} value The value to check.
35374     * @returns {boolean} Returns `true` if `value` is a function, else `false`.
35375     * @example
35376     *
35377     * _.isFunction(_);
35378     * // => true
35379     *
35380     * _.isFunction(/abc/);
35381     * // => false
35382     */
35383    function isFunction(value) {
35384      if (!isObject(value)) {
35385        return false;
35386      }
35387      // The use of `Object#toString` avoids issues with the `typeof` operator
35388      // in Safari 9 which returns 'object' for typed arrays and other constructors.
35389      var tag = baseGetTag(value);
35390      return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
35391    }
35392
35393    /**
35394     * Checks if `value` is an integer.
35395     *
35396     * **Note:** This method is based on
35397     * [`Number.isInteger`](https://mdn.io/Number/isInteger).
35398     *
35399     * @static
35400     * @memberOf _
35401     * @since 4.0.0
35402     * @category Lang
35403     * @param {*} value The value to check.
35404     * @returns {boolean} Returns `true` if `value` is an integer, else `false`.
35405     * @example
35406     *
35407     * _.isInteger(3);
35408     * // => true
35409     *
35410     * _.isInteger(Number.MIN_VALUE);
35411     * // => false
35412     *
35413     * _.isInteger(Infinity);
35414     * // => false
35415     *
35416     * _.isInteger('3');
35417     * // => false
35418     */
35419    function isInteger(value) {
35420      return typeof value == 'number' && value == toInteger(value);
35421    }
35422
35423    /**
35424     * Checks if `value` is a valid array-like length.
35425     *
35426     * **Note:** This method is loosely based on
35427     * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
35428     *
35429     * @static
35430     * @memberOf _
35431     * @since 4.0.0
35432     * @category Lang
35433     * @param {*} value The value to check.
35434     * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
35435     * @example
35436     *
35437     * _.isLength(3);
35438     * // => true
35439     *
35440     * _.isLength(Number.MIN_VALUE);
35441     * // => false
35442     *
35443     * _.isLength(Infinity);
35444     * // => false
35445     *
35446     * _.isLength('3');
35447     * // => false
35448     */
35449    function isLength(value) {
35450      return typeof value == 'number' &&
35451        value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
35452    }
35453
35454    /**
35455     * Checks if `value` is the
35456     * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
35457     * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
35458     *
35459     * @static
35460     * @memberOf _
35461     * @since 0.1.0
35462     * @category Lang
35463     * @param {*} value The value to check.
35464     * @returns {boolean} Returns `true` if `value` is an object, else `false`.
35465     * @example
35466     *
35467     * _.isObject({});
35468     * // => true
35469     *
35470     * _.isObject([1, 2, 3]);
35471     * // => true
35472     *
35473     * _.isObject(_.noop);
35474     * // => true
35475     *
35476     * _.isObject(null);
35477     * // => false
35478     */
35479    function isObject(value) {
35480      var type = typeof value;
35481      return value != null && (type == 'object' || type == 'function');
35482    }
35483
35484    /**
35485     * Checks if `value` is object-like. A value is object-like if it's not `null`
35486     * and has a `typeof` result of "object".
35487     *
35488     * @static
35489     * @memberOf _
35490     * @since 4.0.0
35491     * @category Lang
35492     * @param {*} value The value to check.
35493     * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
35494     * @example
35495     *
35496     * _.isObjectLike({});
35497     * // => true
35498     *
35499     * _.isObjectLike([1, 2, 3]);
35500     * // => true
35501     *
35502     * _.isObjectLike(_.noop);
35503     * // => false
35504     *
35505     * _.isObjectLike(null);
35506     * // => false
35507     */
35508    function isObjectLike(value) {
35509      return value != null && typeof value == 'object';
35510    }
35511
35512    /**
35513     * Checks if `value` is classified as a `Map` object.
35514     *
35515     * @static
35516     * @memberOf _
35517     * @since 4.3.0
35518     * @category Lang
35519     * @param {*} value The value to check.
35520     * @returns {boolean} Returns `true` if `value` is a map, else `false`.
35521     * @example
35522     *
35523     * _.isMap(new Map);
35524     * // => true
35525     *
35526     * _.isMap(new WeakMap);
35527     * // => false
35528     */
35529    var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;
35530
35531    /**
35532     * Performs a partial deep comparison between `object` and `source` to
35533     * determine if `object` contains equivalent property values.
35534     *
35535     * **Note:** This method is equivalent to `_.matches` when `source` is
35536     * partially applied.
35537     *
35538     * Partial comparisons will match empty array and empty object `source`
35539     * values against any array or object value, respectively. See `_.isEqual`
35540     * for a list of supported value comparisons.
35541     *
35542     * @static
35543     * @memberOf _
35544     * @since 3.0.0
35545     * @category Lang
35546     * @param {Object} object The object to inspect.
35547     * @param {Object} source The object of property values to match.
35548     * @returns {boolean} Returns `true` if `object` is a match, else `false`.
35549     * @example
35550     *
35551     * var object = { 'a': 1, 'b': 2 };
35552     *
35553     * _.isMatch(object, { 'b': 2 });
35554     * // => true
35555     *
35556     * _.isMatch(object, { 'b': 1 });
35557     * // => false
35558     */
35559    function isMatch(object, source) {
35560      return object === source || baseIsMatch(object, source, getMatchData(source));
35561    }
35562
35563    /**
35564     * This method is like `_.isMatch` except that it accepts `customizer` which
35565     * is invoked to compare values. If `customizer` returns `undefined`, comparisons
35566     * are handled by the method instead. The `customizer` is invoked with five
35567     * arguments: (objValue, srcValue, index|key, object, source).
35568     *
35569     * @static
35570     * @memberOf _
35571     * @since 4.0.0
35572     * @category Lang
35573     * @param {Object} object The object to inspect.
35574     * @param {Object} source The object of property values to match.
35575     * @param {Function} [customizer] The function to customize comparisons.
35576     * @returns {boolean} Returns `true` if `object` is a match, else `false`.
35577     * @example
35578     *
35579     * function isGreeting(value) {
35580     *   return /^h(?:i|ello)$/.test(value);
35581     * }
35582     *
35583     * function customizer(objValue, srcValue) {
35584     *   if (isGreeting(objValue) && isGreeting(srcValue)) {
35585     *     return true;
35586     *   }
35587     * }
35588     *
35589     * var object = { 'greeting': 'hello' };
35590     * var source = { 'greeting': 'hi' };
35591     *
35592     * _.isMatchWith(object, source, customizer);
35593     * // => true
35594     */
35595    function isMatchWith(object, source, customizer) {
35596      customizer = typeof customizer == 'function' ? customizer : undefined;
35597      return baseIsMatch(object, source, getMatchData(source), customizer);
35598    }
35599
35600    /**
35601     * Checks if `value` is `NaN`.
35602     *
35603     * **Note:** This method is based on
35604     * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as
35605     * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for
35606     * `undefined` and other non-number values.
35607     *
35608     * @static
35609     * @memberOf _
35610     * @since 0.1.0
35611     * @category Lang
35612     * @param {*} value The value to check.
35613     * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
35614     * @example
35615     *
35616     * _.isNaN(NaN);
35617     * // => true
35618     *
35619     * _.isNaN(new Number(NaN));
35620     * // => true
35621     *
35622     * isNaN(undefined);
35623     * // => true
35624     *
35625     * _.isNaN(undefined);
35626     * // => false
35627     */
35628    function isNaN(value) {
35629      // An `NaN` primitive is the only value that is not equal to itself.
35630      // Perform the `toStringTag` check first to avoid errors with some
35631      // ActiveX objects in IE.
35632      return isNumber(value) && value != +value;
35633    }
35634
35635    /**
35636     * Checks if `value` is a pristine native function.
35637     *
35638     * **Note:** This method can't reliably detect native functions in the presence
35639     * of the core-js package because core-js circumvents this kind of detection.
35640     * Despite multiple requests, the core-js maintainer has made it clear: any
35641     * attempt to fix the detection will be obstructed. As a result, we're left
35642     * with little choice but to throw an error. Unfortunately, this also affects
35643     * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),
35644     * which rely on core-js.
35645     *
35646     * @static
35647     * @memberOf _
35648     * @since 3.0.0
35649     * @category Lang
35650     * @param {*} value The value to check.
35651     * @returns {boolean} Returns `true` if `value` is a native function,
35652     *  else `false`.
35653     * @example
35654     *
35655     * _.isNative(Array.prototype.push);
35656     * // => true
35657     *
35658     * _.isNative(_);
35659     * // => false
35660     */
35661    function isNative(value) {
35662      if (isMaskable(value)) {
35663        throw new Error(CORE_ERROR_TEXT);
35664      }
35665      return baseIsNative(value);
35666    }
35667
35668    /**
35669     * Checks if `value` is `null`.
35670     *
35671     * @static
35672     * @memberOf _
35673     * @since 0.1.0
35674     * @category Lang
35675     * @param {*} value The value to check.
35676     * @returns {boolean} Returns `true` if `value` is `null`, else `false`.
35677     * @example
35678     *
35679     * _.isNull(null);
35680     * // => true
35681     *
35682     * _.isNull(void 0);
35683     * // => false
35684     */
35685    function isNull(value) {
35686      return value === null;
35687    }
35688
35689    /**
35690     * Checks if `value` is `null` or `undefined`.
35691     *
35692     * @static
35693     * @memberOf _
35694     * @since 4.0.0
35695     * @category Lang
35696     * @param {*} value The value to check.
35697     * @returns {boolean} Returns `true` if `value` is nullish, else `false`.
35698     * @example
35699     *
35700     * _.isNil(null);
35701     * // => true
35702     *
35703     * _.isNil(void 0);
35704     * // => true
35705     *
35706     * _.isNil(NaN);
35707     * // => false
35708     */
35709    function isNil(value) {
35710      return value == null;
35711    }
35712
35713    /**
35714     * Checks if `value` is classified as a `Number` primitive or object.
35715     *
35716     * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are
35717     * classified as numbers, use the `_.isFinite` method.
35718     *
35719     * @static
35720     * @memberOf _
35721     * @since 0.1.0
35722     * @category Lang
35723     * @param {*} value The value to check.
35724     * @returns {boolean} Returns `true` if `value` is a number, else `false`.
35725     * @example
35726     *
35727     * _.isNumber(3);
35728     * // => true
35729     *
35730     * _.isNumber(Number.MIN_VALUE);
35731     * // => true
35732     *
35733     * _.isNumber(Infinity);
35734     * // => true
35735     *
35736     * _.isNumber('3');
35737     * // => false
35738     */
35739    function isNumber(value) {
35740      return typeof value == 'number' ||
35741        (isObjectLike(value) && baseGetTag(value) == numberTag);
35742    }
35743
35744    /**
35745     * Checks if `value` is a plain object, that is, an object created by the
35746     * `Object` constructor or one with a `[[Prototype]]` of `null`.
35747     *
35748     * @static
35749     * @memberOf _
35750     * @since 0.8.0
35751     * @category Lang
35752     * @param {*} value The value to check.
35753     * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
35754     * @example
35755     *
35756     * function Foo() {
35757     *   this.a = 1;
35758     * }
35759     *
35760     * _.isPlainObject(new Foo);
35761     * // => false
35762     *
35763     * _.isPlainObject([1, 2, 3]);
35764     * // => false
35765     *
35766     * _.isPlainObject({ 'x': 0, 'y': 0 });
35767     * // => true
35768     *
35769     * _.isPlainObject(Object.create(null));
35770     * // => true
35771     */
35772    function isPlainObject(value) {
35773      if (!isObjectLike(value) || baseGetTag(value) != objectTag) {
35774        return false;
35775      }
35776      var proto = getPrototype(value);
35777      if (proto === null) {
35778        return true;
35779      }
35780      var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;
35781      return typeof Ctor == 'function' && Ctor instanceof Ctor &&
35782        funcToString.call(Ctor) == objectCtorString;
35783    }
35784
35785    /**
35786     * Checks if `value` is classified as a `RegExp` object.
35787     *
35788     * @static
35789     * @memberOf _
35790     * @since 0.1.0
35791     * @category Lang
35792     * @param {*} value The value to check.
35793     * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.
35794     * @example
35795     *
35796     * _.isRegExp(/abc/);
35797     * // => true
35798     *
35799     * _.isRegExp('/abc/');
35800     * // => false
35801     */
35802    var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;
35803
35804    /**
35805     * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754
35806     * double precision number which isn't the result of a rounded unsafe integer.
35807     *
35808     * **Note:** This method is based on
35809     * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).
35810     *
35811     * @static
35812     * @memberOf _
35813     * @since 4.0.0
35814     * @category Lang
35815     * @param {*} value The value to check.
35816     * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.
35817     * @example
35818     *
35819     * _.isSafeInteger(3);
35820     * // => true
35821     *
35822     * _.isSafeInteger(Number.MIN_VALUE);
35823     * // => false
35824     *
35825     * _.isSafeInteger(Infinity);
35826     * // => false
35827     *
35828     * _.isSafeInteger('3');
35829     * // => false
35830     */
35831    function isSafeInteger(value) {
35832      return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;
35833    }
35834
35835    /**
35836     * Checks if `value` is classified as a `Set` object.
35837     *
35838     * @static
35839     * @memberOf _
35840     * @since 4.3.0
35841     * @category Lang
35842     * @param {*} value The value to check.
35843     * @returns {boolean} Returns `true` if `value` is a set, else `false`.
35844     * @example
35845     *
35846     * _.isSet(new Set);
35847     * // => true
35848     *
35849     * _.isSet(new WeakSet);
35850     * // => false
35851     */
35852    var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;
35853
35854    /**
35855     * Checks if `value` is classified as a `String` primitive or object.
35856     *
35857     * @static
35858     * @since 0.1.0
35859     * @memberOf _
35860     * @category Lang
35861     * @param {*} value The value to check.
35862     * @returns {boolean} Returns `true` if `value` is a string, else `false`.
35863     * @example
35864     *
35865     * _.isString('abc');
35866     * // => true
35867     *
35868     * _.isString(1);
35869     * // => false
35870     */
35871    function isString(value) {
35872      return typeof value == 'string' ||
35873        (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);
35874    }
35875
35876    /**
35877     * Checks if `value` is classified as a `Symbol` primitive or object.
35878     *
35879     * @static
35880     * @memberOf _
35881     * @since 4.0.0
35882     * @category Lang
35883     * @param {*} value The value to check.
35884     * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
35885     * @example
35886     *
35887     * _.isSymbol(Symbol.iterator);
35888     * // => true
35889     *
35890     * _.isSymbol('abc');
35891     * // => false
35892     */
35893    function isSymbol(value) {
35894      return typeof value == 'symbol' ||
35895        (isObjectLike(value) && baseGetTag(value) == symbolTag);
35896    }
35897
35898    /**
35899     * Checks if `value` is classified as a typed array.
35900     *
35901     * @static
35902     * @memberOf _
35903     * @since 3.0.0
35904     * @category Lang
35905     * @param {*} value The value to check.
35906     * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
35907     * @example
35908     *
35909     * _.isTypedArray(new Uint8Array);
35910     * // => true
35911     *
35912     * _.isTypedArray([]);
35913     * // => false
35914     */
35915    var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
35916
35917    /**
35918     * Checks if `value` is `undefined`.
35919     *
35920     * @static
35921     * @since 0.1.0
35922     * @memberOf _
35923     * @category Lang
35924     * @param {*} value The value to check.
35925     * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.
35926     * @example
35927     *
35928     * _.isUndefined(void 0);
35929     * // => true
35930     *
35931     * _.isUndefined(null);
35932     * // => false
35933     */
35934    function isUndefined(value) {
35935      return value === undefined;
35936    }
35937
35938    /**
35939     * Checks if `value` is classified as a `WeakMap` object.
35940     *
35941     * @static
35942     * @memberOf _
35943     * @since 4.3.0
35944     * @category Lang
35945     * @param {*} value The value to check.
35946     * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.
35947     * @example
35948     *
35949     * _.isWeakMap(new WeakMap);
35950     * // => true
35951     *
35952     * _.isWeakMap(new Map);
35953     * // => false
35954     */
35955    function isWeakMap(value) {
35956      return isObjectLike(value) && getTag(value) == weakMapTag;
35957    }
35958
35959    /**
35960     * Checks if `value` is classified as a `WeakSet` object.
35961     *
35962     * @static
35963     * @memberOf _
35964     * @since 4.3.0
35965     * @category Lang
35966     * @param {*} value The value to check.
35967     * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.
35968     * @example
35969     *
35970     * _.isWeakSet(new WeakSet);
35971     * // => true
35972     *
35973     * _.isWeakSet(new Set);
35974     * // => false
35975     */
35976    function isWeakSet(value) {
35977      return isObjectLike(value) && baseGetTag(value) == weakSetTag;
35978    }
35979
35980    /**
35981     * Checks if `value` is less than `other`.
35982     *
35983     * @static
35984     * @memberOf _
35985     * @since 3.9.0
35986     * @category Lang
35987     * @param {*} value The value to compare.
35988     * @param {*} other The other value to compare.
35989     * @returns {boolean} Returns `true` if `value` is less than `other`,
35990     *  else `false`.
35991     * @see _.gt
35992     * @example
35993     *
35994     * _.lt(1, 3);
35995     * // => true
35996     *
35997     * _.lt(3, 3);
35998     * // => false
35999     *
36000     * _.lt(3, 1);
36001     * // => false
36002     */
36003    var lt = createRelationalOperation(baseLt);
36004
36005    /**
36006     * Checks if `value` is less than or equal to `other`.
36007     *
36008     * @static
36009     * @memberOf _
36010     * @since 3.9.0
36011     * @category Lang
36012     * @param {*} value The value to compare.
36013     * @param {*} other The other value to compare.
36014     * @returns {boolean} Returns `true` if `value` is less than or equal to
36015     *  `other`, else `false`.
36016     * @see _.gte
36017     * @example
36018     *
36019     * _.lte(1, 3);
36020     * // => true
36021     *
36022     * _.lte(3, 3);
36023     * // => true
36024     *
36025     * _.lte(3, 1);
36026     * // => false
36027     */
36028    var lte = createRelationalOperation(function(value, other) {
36029      return value <= other;
36030    });
36031
36032    /**
36033     * Converts `value` to an array.
36034     *
36035     * @static
36036     * @since 0.1.0
36037     * @memberOf _
36038     * @category Lang
36039     * @param {*} value The value to convert.
36040     * @returns {Array} Returns the converted array.
36041     * @example
36042     *
36043     * _.toArray({ 'a': 1, 'b': 2 });
36044     * // => [1, 2]
36045     *
36046     * _.toArray('abc');
36047     * // => ['a', 'b', 'c']
36048     *
36049     * _.toArray(1);
36050     * // => []
36051     *
36052     * _.toArray(null);
36053     * // => []
36054     */
36055    function toArray(value) {
36056      if (!value) {
36057        return [];
36058      }
36059      if (isArrayLike(value)) {
36060        return isString(value) ? stringToArray(value) : copyArray(value);
36061      }
36062      if (symIterator && value[symIterator]) {
36063        return iteratorToArray(value[symIterator]());
36064      }
36065      var tag = getTag(value),
36066          func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);
36067
36068      return func(value);
36069    }
36070
36071    /**
36072     * Converts `value` to a finite number.
36073     *
36074     * @static
36075     * @memberOf _
36076     * @since 4.12.0
36077     * @category Lang
36078     * @param {*} value The value to convert.
36079     * @returns {number} Returns the converted number.
36080     * @example
36081     *
36082     * _.toFinite(3.2);
36083     * // => 3.2
36084     *
36085     * _.toFinite(Number.MIN_VALUE);
36086     * // => 5e-324
36087     *
36088     * _.toFinite(Infinity);
36089     * // => 1.7976931348623157e+308
36090     *
36091     * _.toFinite('3.2');
36092     * // => 3.2
36093     */
36094    function toFinite(value) {
36095      if (!value) {
36096        return value === 0 ? value : 0;
36097      }
36098      value = toNumber(value);
36099      if (value === INFINITY || value === -INFINITY) {
36100        var sign = (value < 0 ? -1 : 1);
36101        return sign * MAX_INTEGER;
36102      }
36103      return value === value ? value : 0;
36104    }
36105
36106    /**
36107     * Converts `value` to an integer.
36108     *
36109     * **Note:** This method is loosely based on
36110     * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).
36111     *
36112     * @static
36113     * @memberOf _
36114     * @since 4.0.0
36115     * @category Lang
36116     * @param {*} value The value to convert.
36117     * @returns {number} Returns the converted integer.
36118     * @example
36119     *
36120     * _.toInteger(3.2);
36121     * // => 3
36122     *
36123     * _.toInteger(Number.MIN_VALUE);
36124     * // => 0
36125     *
36126     * _.toInteger(Infinity);
36127     * // => 1.7976931348623157e+308
36128     *
36129     * _.toInteger('3.2');
36130     * // => 3
36131     */
36132    function toInteger(value) {
36133      var result = toFinite(value),
36134          remainder = result % 1;
36135
36136      return result === result ? (remainder ? result - remainder : result) : 0;
36137    }
36138
36139    /**
36140     * Converts `value` to an integer suitable for use as the length of an
36141     * array-like object.
36142     *
36143     * **Note:** This method is based on
36144     * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
36145     *
36146     * @static
36147     * @memberOf _
36148     * @since 4.0.0
36149     * @category Lang
36150     * @param {*} value The value to convert.
36151     * @returns {number} Returns the converted integer.
36152     * @example
36153     *
36154     * _.toLength(3.2);
36155     * // => 3
36156     *
36157     * _.toLength(Number.MIN_VALUE);
36158     * // => 0
36159     *
36160     * _.toLength(Infinity);
36161     * // => 4294967295
36162     *
36163     * _.toLength('3.2');
36164     * // => 3
36165     */
36166    function toLength(value) {
36167      return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;
36168    }
36169
36170    /**
36171     * Converts `value` to a number.
36172     *
36173     * @static
36174     * @memberOf _
36175     * @since 4.0.0
36176     * @category Lang
36177     * @param {*} value The value to process.
36178     * @returns {number} Returns the number.
36179     * @example
36180     *
36181     * _.toNumber(3.2);
36182     * // => 3.2
36183     *
36184     * _.toNumber(Number.MIN_VALUE);
36185     * // => 5e-324
36186     *
36187     * _.toNumber(Infinity);
36188     * // => Infinity
36189     *
36190     * _.toNumber('3.2');
36191     * // => 3.2
36192     */
36193    function toNumber(value) {
36194      if (typeof value == 'number') {
36195        return value;
36196      }
36197      if (isSymbol(value)) {
36198        return NAN;
36199      }
36200      if (isObject(value)) {
36201        var other = typeof value.valueOf == 'function' ? value.valueOf() : value;
36202        value = isObject(other) ? (other + '') : other;
36203      }
36204      if (typeof value != 'string') {
36205        return value === 0 ? value : +value;
36206      }
36207      value = baseTrim(value);
36208      var isBinary = reIsBinary.test(value);
36209      return (isBinary || reIsOctal.test(value))
36210        ? freeParseInt(value.slice(2), isBinary ? 2 : 8)
36211        : (reIsBadHex.test(value) ? NAN : +value);
36212    }
36213
36214    /**
36215     * Converts `value` to a plain object flattening inherited enumerable string
36216     * keyed properties of `value` to own properties of the plain object.
36217     *
36218     * @static
36219     * @memberOf _
36220     * @since 3.0.0
36221     * @category Lang
36222     * @param {*} value The value to convert.
36223     * @returns {Object} Returns the converted plain object.
36224     * @example
36225     *
36226     * function Foo() {
36227     *   this.b = 2;
36228     * }
36229     *
36230     * Foo.prototype.c = 3;
36231     *
36232     * _.assign({ 'a': 1 }, new Foo);
36233     * // => { 'a': 1, 'b': 2 }
36234     *
36235     * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));
36236     * // => { 'a': 1, 'b': 2, 'c': 3 }
36237     */
36238    function toPlainObject(value) {
36239      return copyObject(value, keysIn(value));
36240    }
36241
36242    /**
36243     * Converts `value` to a safe integer. A safe integer can be compared and
36244     * represented correctly.
36245     *
36246     * @static
36247     * @memberOf _
36248     * @since 4.0.0
36249     * @category Lang
36250     * @param {*} value The value to convert.
36251     * @returns {number} Returns the converted integer.
36252     * @example
36253     *
36254     * _.toSafeInteger(3.2);
36255     * // => 3
36256     *
36257     * _.toSafeInteger(Number.MIN_VALUE);
36258     * // => 0
36259     *
36260     * _.toSafeInteger(Infinity);
36261     * // => 9007199254740991
36262     *
36263     * _.toSafeInteger('3.2');
36264     * // => 3
36265     */
36266    function toSafeInteger(value) {
36267      return value
36268        ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)
36269        : (value === 0 ? value : 0);
36270    }
36271
36272    /**
36273     * Converts `value` to a string. An empty string is returned for `null`
36274     * and `undefined` values. The sign of `-0` is preserved.
36275     *
36276     * @static
36277     * @memberOf _
36278     * @since 4.0.0
36279     * @category Lang
36280     * @param {*} value The value to convert.
36281     * @returns {string} Returns the converted string.
36282     * @example
36283     *
36284     * _.toString(null);
36285     * // => ''
36286     *
36287     * _.toString(-0);
36288     * // => '-0'
36289     *
36290     * _.toString([1, 2, 3]);
36291     * // => '1,2,3'
36292     */
36293    function toString(value) {
36294      return value == null ? '' : baseToString(value);
36295    }
36296
36297    /*------------------------------------------------------------------------*/
36298
36299    /**
36300     * Assigns own enumerable string keyed properties of source objects to the
36301     * destination object. Source objects are applied from left to right.
36302     * Subsequent sources overwrite property assignments of previous sources.
36303     *
36304     * **Note:** This method mutates `object` and is loosely based on
36305     * [`Object.assign`](https://mdn.io/Object/assign).
36306     *
36307     * @static
36308     * @memberOf _
36309     * @since 0.10.0
36310     * @category Object
36311     * @param {Object} object The destination object.
36312     * @param {...Object} [sources] The source objects.
36313     * @returns {Object} Returns `object`.
36314     * @see _.assignIn
36315     * @example
36316     *
36317     * function Foo() {
36318     *   this.a = 1;
36319     * }
36320     *
36321     * function Bar() {
36322     *   this.c = 3;
36323     * }
36324     *
36325     * Foo.prototype.b = 2;
36326     * Bar.prototype.d = 4;
36327     *
36328     * _.assign({ 'a': 0 }, new Foo, new Bar);
36329     * // => { 'a': 1, 'c': 3 }
36330     */
36331    var assign = createAssigner(function(object, source) {
36332      if (isPrototype(source) || isArrayLike(source)) {
36333        copyObject(source, keys(source), object);
36334        return;
36335      }
36336      for (var key in source) {
36337        if (hasOwnProperty.call(source, key)) {
36338          assignValue(object, key, source[key]);
36339        }
36340      }
36341    });
36342
36343    /**
36344     * This method is like `_.assign` except that it iterates over own and
36345     * inherited source properties.
36346     *
36347     * **Note:** This method mutates `object`.
36348     *
36349     * @static
36350     * @memberOf _
36351     * @since 4.0.0
36352     * @alias extend
36353     * @category Object
36354     * @param {Object} object The destination object.
36355     * @param {...Object} [sources] The source objects.
36356     * @returns {Object} Returns `object`.
36357     * @see _.assign
36358     * @example
36359     *
36360     * function Foo() {
36361     *   this.a = 1;
36362     * }
36363     *
36364     * function Bar() {
36365     *   this.c = 3;
36366     * }
36367     *
36368     * Foo.prototype.b = 2;
36369     * Bar.prototype.d = 4;
36370     *
36371     * _.assignIn({ 'a': 0 }, new Foo, new Bar);
36372     * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }
36373     */
36374    var assignIn = createAssigner(function(object, source) {
36375      copyObject(source, keysIn(source), object);
36376    });
36377
36378    /**
36379     * This method is like `_.assignIn` except that it accepts `customizer`
36380     * which is invoked to produce the assigned values. If `customizer` returns
36381     * `undefined`, assignment is handled by the method instead. The `customizer`
36382     * is invoked with five arguments: (objValue, srcValue, key, object, source).
36383     *
36384     * **Note:** This method mutates `object`.
36385     *
36386     * @static
36387     * @memberOf _
36388     * @since 4.0.0
36389     * @alias extendWith
36390     * @category Object
36391     * @param {Object} object The destination object.
36392     * @param {...Object} sources The source objects.
36393     * @param {Function} [customizer] The function to customize assigned values.
36394     * @returns {Object} Returns `object`.
36395     * @see _.assignWith
36396     * @example
36397     *
36398     * function customizer(objValue, srcValue) {
36399     *   return _.isUndefined(objValue) ? srcValue : objValue;
36400     * }
36401     *
36402     * var defaults = _.partialRight(_.assignInWith, customizer);
36403     *
36404     * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
36405     * // => { 'a': 1, 'b': 2 }
36406     */
36407    var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {
36408      copyObject(source, keysIn(source), object, customizer);
36409    });
36410
36411    /**
36412     * This method is like `_.assign` except that it accepts `customizer`
36413     * which is invoked to produce the assigned values. If `customizer` returns
36414     * `undefined`, assignment is handled by the method instead. The `customizer`
36415     * is invoked with five arguments: (objValue, srcValue, key, object, source).
36416     *
36417     * **Note:** This method mutates `object`.
36418     *
36419     * @static
36420     * @memberOf _
36421     * @since 4.0.0
36422     * @category Object
36423     * @param {Object} object The destination object.
36424     * @param {...Object} sources The source objects.
36425     * @param {Function} [customizer] The function to customize assigned values.
36426     * @returns {Object} Returns `object`.
36427     * @see _.assignInWith
36428     * @example
36429     *
36430     * function customizer(objValue, srcValue) {
36431     *   return _.isUndefined(objValue) ? srcValue : objValue;
36432     * }
36433     *
36434     * var defaults = _.partialRight(_.assignWith, customizer);
36435     *
36436     * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
36437     * // => { 'a': 1, 'b': 2 }
36438     */
36439    var assignWith = createAssigner(function(object, source, srcIndex, customizer) {
36440      copyObject(source, keys(source), object, customizer);
36441    });
36442
36443    /**
36444     * Creates an array of values corresponding to `paths` of `object`.
36445     *
36446     * @static
36447     * @memberOf _
36448     * @since 1.0.0
36449     * @category Object
36450     * @param {Object} object The object to iterate over.
36451     * @param {...(string|string[])} [paths] The property paths to pick.
36452     * @returns {Array} Returns the picked values.
36453     * @example
36454     *
36455     * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };
36456     *
36457     * _.at(object, ['a[0].b.c', 'a[1]']);
36458     * // => [3, 4]
36459     */
36460    var at = flatRest(baseAt);
36461
36462    /**
36463     * Creates an object that inherits from the `prototype` object. If a
36464     * `properties` object is given, its own enumerable string keyed properties
36465     * are assigned to the created object.
36466     *
36467     * @static
36468     * @memberOf _
36469     * @since 2.3.0
36470     * @category Object
36471     * @param {Object} prototype The object to inherit from.
36472     * @param {Object} [properties] The properties to assign to the object.
36473     * @returns {Object} Returns the new object.
36474     * @example
36475     *
36476     * function Shape() {
36477     *   this.x = 0;
36478     *   this.y = 0;
36479     * }
36480     *
36481     * function Circle() {
36482     *   Shape.call(this);
36483     * }
36484     *
36485     * Circle.prototype = _.create(Shape.prototype, {
36486     *   'constructor': Circle
36487     * });
36488     *
36489     * var circle = new Circle;
36490     * circle instanceof Circle;
36491     * // => true
36492     *
36493     * circle instanceof Shape;
36494     * // => true
36495     */
36496    function create(prototype, properties) {
36497      var result = baseCreate(prototype);
36498      return properties == null ? result : baseAssign(result, properties);
36499    }
36500
36501    /**
36502     * Assigns own and inherited enumerable string keyed properties of source
36503     * objects to the destination object for all destination properties that
36504     * resolve to `undefined`. Source objects are applied from left to right.
36505     * Once a property is set, additional values of the same property are ignored.
36506     *
36507     * **Note:** This method mutates `object`.
36508     *
36509     * @static
36510     * @since 0.1.0
36511     * @memberOf _
36512     * @category Object
36513     * @param {Object} object The destination object.
36514     * @param {...Object} [sources] The source objects.
36515     * @returns {Object} Returns `object`.
36516     * @see _.defaultsDeep
36517     * @example
36518     *
36519     * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
36520     * // => { 'a': 1, 'b': 2 }
36521     */
36522    var defaults = baseRest(function(object, sources) {
36523      object = Object(object);
36524
36525      var index = -1;
36526      var length = sources.length;
36527      var guard = length > 2 ? sources[2] : undefined;
36528
36529      if (guard && isIterateeCall(sources[0], sources[1], guard)) {
36530        length = 1;
36531      }
36532
36533      while (++index < length) {
36534        var source = sources[index];
36535        var props = keysIn(source);
36536        var propsIndex = -1;
36537        var propsLength = props.length;
36538
36539        while (++propsIndex < propsLength) {
36540          var key = props[propsIndex];
36541          var value = object[key];
36542
36543          if (value === undefined ||
36544              (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {
36545            object[key] = source[key];
36546          }
36547        }
36548      }
36549
36550      return object;
36551    });
36552
36553    /**
36554     * This method is like `_.defaults` except that it recursively assigns
36555     * default properties.
36556     *
36557     * **Note:** This method mutates `object`.
36558     *
36559     * @static
36560     * @memberOf _
36561     * @since 3.10.0
36562     * @category Object
36563     * @param {Object} object The destination object.
36564     * @param {...Object} [sources] The source objects.
36565     * @returns {Object} Returns `object`.
36566     * @see _.defaults
36567     * @example
36568     *
36569     * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });
36570     * // => { 'a': { 'b': 2, 'c': 3 } }
36571     */
36572    var defaultsDeep = baseRest(function(args) {
36573      args.push(undefined, customDefaultsMerge);
36574      return apply(mergeWith, undefined, args);
36575    });
36576
36577    /**
36578     * This method is like `_.find` except that it returns the key of the first
36579     * element `predicate` returns truthy for instead of the element itself.
36580     *
36581     * @static
36582     * @memberOf _
36583     * @since 1.1.0
36584     * @category Object
36585     * @param {Object} object The object to inspect.
36586     * @param {Function} [predicate=_.identity] The function invoked per iteration.
36587     * @returns {string|undefined} Returns the key of the matched element,
36588     *  else `undefined`.
36589     * @example
36590     *
36591     * var users = {
36592     *   'barney':  { 'age': 36, 'active': true },
36593     *   'fred':    { 'age': 40, 'active': false },
36594     *   'pebbles': { 'age': 1,  'active': true }
36595     * };
36596     *
36597     * _.findKey(users, function(o) { return o.age < 40; });
36598     * // => 'barney' (iteration order is not guaranteed)
36599     *
36600     * // The `_.matches` iteratee shorthand.
36601     * _.findKey(users, { 'age': 1, 'active': true });
36602     * // => 'pebbles'
36603     *
36604     * // The `_.matchesProperty` iteratee shorthand.
36605     * _.findKey(users, ['active', false]);
36606     * // => 'fred'
36607     *
36608     * // The `_.property` iteratee shorthand.
36609     * _.findKey(users, 'active');
36610     * // => 'barney'
36611     */
36612    function findKey(object, predicate) {
36613      return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);
36614    }
36615
36616    /**
36617     * This method is like `_.findKey` except that it iterates over elements of
36618     * a collection in the opposite order.
36619     *
36620     * @static
36621     * @memberOf _
36622     * @since 2.0.0
36623     * @category Object
36624     * @param {Object} object The object to inspect.
36625     * @param {Function} [predicate=_.identity] The function invoked per iteration.
36626     * @returns {string|undefined} Returns the key of the matched element,
36627     *  else `undefined`.
36628     * @example
36629     *
36630     * var users = {
36631     *   'barney':  { 'age': 36, 'active': true },
36632     *   'fred':    { 'age': 40, 'active': false },
36633     *   'pebbles': { 'age': 1,  'active': true }
36634     * };
36635     *
36636     * _.findLastKey(users, function(o) { return o.age < 40; });
36637     * // => returns 'pebbles' assuming `_.findKey` returns 'barney'
36638     *
36639     * // The `_.matches` iteratee shorthand.
36640     * _.findLastKey(users, { 'age': 36, 'active': true });
36641     * // => 'barney'
36642     *
36643     * // The `_.matchesProperty` iteratee shorthand.
36644     * _.findLastKey(users, ['active', false]);
36645     * // => 'fred'
36646     *
36647     * // The `_.property` iteratee shorthand.
36648     * _.findLastKey(users, 'active');
36649     * // => 'pebbles'
36650     */
36651    function findLastKey(object, predicate) {
36652      return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);
36653    }
36654
36655    /**
36656     * Iterates over own and inherited enumerable string keyed properties of an
36657     * object and invokes `iteratee` for each property. The iteratee is invoked
36658     * with three arguments: (value, key, object). Iteratee functions may exit
36659     * iteration early by explicitly returning `false`.
36660     *
36661     * @static
36662     * @memberOf _
36663     * @since 0.3.0
36664     * @category Object
36665     * @param {Object} object The object to iterate over.
36666     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
36667     * @returns {Object} Returns `object`.
36668     * @see _.forInRight
36669     * @example
36670     *
36671     * function Foo() {
36672     *   this.a = 1;
36673     *   this.b = 2;
36674     * }
36675     *
36676     * Foo.prototype.c = 3;
36677     *
36678     * _.forIn(new Foo, function(value, key) {
36679     *   console.log(key);
36680     * });
36681     * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).
36682     */
36683    function forIn(object, iteratee) {
36684      return object == null
36685        ? object
36686        : baseFor(object, getIteratee(iteratee, 3), keysIn);
36687    }
36688
36689    /**
36690     * This method is like `_.forIn` except that it iterates over properties of
36691     * `object` in the opposite order.
36692     *
36693     * @static
36694     * @memberOf _
36695     * @since 2.0.0
36696     * @category Object
36697     * @param {Object} object The object to iterate over.
36698     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
36699     * @returns {Object} Returns `object`.
36700     * @see _.forIn
36701     * @example
36702     *
36703     * function Foo() {
36704     *   this.a = 1;
36705     *   this.b = 2;
36706     * }
36707     *
36708     * Foo.prototype.c = 3;
36709     *
36710     * _.forInRight(new Foo, function(value, key) {
36711     *   console.log(key);
36712     * });
36713     * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.
36714     */
36715    function forInRight(object, iteratee) {
36716      return object == null
36717        ? object
36718        : baseForRight(object, getIteratee(iteratee, 3), keysIn);
36719    }
36720
36721    /**
36722     * Iterates over own enumerable string keyed properties of an object and
36723     * invokes `iteratee` for each property. The iteratee is invoked with three
36724     * arguments: (value, key, object). Iteratee functions may exit iteration
36725     * early by explicitly returning `false`.
36726     *
36727     * @static
36728     * @memberOf _
36729     * @since 0.3.0
36730     * @category Object
36731     * @param {Object} object The object to iterate over.
36732     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
36733     * @returns {Object} Returns `object`.
36734     * @see _.forOwnRight
36735     * @example
36736     *
36737     * function Foo() {
36738     *   this.a = 1;
36739     *   this.b = 2;
36740     * }
36741     *
36742     * Foo.prototype.c = 3;
36743     *
36744     * _.forOwn(new Foo, function(value, key) {
36745     *   console.log(key);
36746     * });
36747     * // => Logs 'a' then 'b' (iteration order is not guaranteed).
36748     */
36749    function forOwn(object, iteratee) {
36750      return object && baseForOwn(object, getIteratee(iteratee, 3));
36751    }
36752
36753    /**
36754     * This method is like `_.forOwn` except that it iterates over properties of
36755     * `object` in the opposite order.
36756     *
36757     * @static
36758     * @memberOf _
36759     * @since 2.0.0
36760     * @category Object
36761     * @param {Object} object The object to iterate over.
36762     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
36763     * @returns {Object} Returns `object`.
36764     * @see _.forOwn
36765     * @example
36766     *
36767     * function Foo() {
36768     *   this.a = 1;
36769     *   this.b = 2;
36770     * }
36771     *
36772     * Foo.prototype.c = 3;
36773     *
36774     * _.forOwnRight(new Foo, function(value, key) {
36775     *   console.log(key);
36776     * });
36777     * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.
36778     */
36779    function forOwnRight(object, iteratee) {
36780      return object && baseForOwnRight(object, getIteratee(iteratee, 3));
36781    }
36782
36783    /**
36784     * Creates an array of function property names from own enumerable properties
36785     * of `object`.
36786     *
36787     * @static
36788     * @since 0.1.0
36789     * @memberOf _
36790     * @category Object
36791     * @param {Object} object The object to inspect.
36792     * @returns {Array} Returns the function names.
36793     * @see _.functionsIn
36794     * @example
36795     *
36796     * function Foo() {
36797     *   this.a = _.constant('a');
36798     *   this.b = _.constant('b');
36799     * }
36800     *
36801     * Foo.prototype.c = _.constant('c');
36802     *
36803     * _.functions(new Foo);
36804     * // => ['a', 'b']
36805     */
36806    function functions(object) {
36807      return object == null ? [] : baseFunctions(object, keys(object));
36808    }
36809
36810    /**
36811     * Creates an array of function property names from own and inherited
36812     * enumerable properties of `object`.
36813     *
36814     * @static
36815     * @memberOf _
36816     * @since 4.0.0
36817     * @category Object
36818     * @param {Object} object The object to inspect.
36819     * @returns {Array} Returns the function names.
36820     * @see _.functions
36821     * @example
36822     *
36823     * function Foo() {
36824     *   this.a = _.constant('a');
36825     *   this.b = _.constant('b');
36826     * }
36827     *
36828     * Foo.prototype.c = _.constant('c');
36829     *
36830     * _.functionsIn(new Foo);
36831     * // => ['a', 'b', 'c']
36832     */
36833    function functionsIn(object) {
36834      return object == null ? [] : baseFunctions(object, keysIn(object));
36835    }
36836
36837    /**
36838     * Gets the value at `path` of `object`. If the resolved value is
36839     * `undefined`, the `defaultValue` is returned in its place.
36840     *
36841     * @static
36842     * @memberOf _
36843     * @since 3.7.0
36844     * @category Object
36845     * @param {Object} object The object to query.
36846     * @param {Array|string} path The path of the property to get.
36847     * @param {*} [defaultValue] The value returned for `undefined` resolved values.
36848     * @returns {*} Returns the resolved value.
36849     * @example
36850     *
36851     * var object = { 'a': [{ 'b': { 'c': 3 } }] };
36852     *
36853     * _.get(object, 'a[0].b.c');
36854     * // => 3
36855     *
36856     * _.get(object, ['a', '0', 'b', 'c']);
36857     * // => 3
36858     *
36859     * _.get(object, 'a.b.c', 'default');
36860     * // => 'default'
36861     */
36862    function get(object, path, defaultValue) {
36863      var result = object == null ? undefined : baseGet(object, path);
36864      return result === undefined ? defaultValue : result;
36865    }
36866
36867    /**
36868     * Checks if `path` is a direct property of `object`.
36869     *
36870     * @static
36871     * @since 0.1.0
36872     * @memberOf _
36873     * @category Object
36874     * @param {Object} object The object to query.
36875     * @param {Array|string} path The path to check.
36876     * @returns {boolean} Returns `true` if `path` exists, else `false`.
36877     * @example
36878     *
36879     * var object = { 'a': { 'b': 2 } };
36880     * var other = _.create({ 'a': _.create({ 'b': 2 }) });
36881     *
36882     * _.has(object, 'a');
36883     * // => true
36884     *
36885     * _.has(object, 'a.b');
36886     * // => true
36887     *
36888     * _.has(object, ['a', 'b']);
36889     * // => true
36890     *
36891     * _.has(other, 'a');
36892     * // => false
36893     */
36894    function has(object, path) {
36895      return object != null && hasPath(object, path, baseHas);
36896    }
36897
36898    /**
36899     * Checks if `path` is a direct or inherited property of `object`.
36900     *
36901     * @static
36902     * @memberOf _
36903     * @since 4.0.0
36904     * @category Object
36905     * @param {Object} object The object to query.
36906     * @param {Array|string} path The path to check.
36907     * @returns {boolean} Returns `true` if `path` exists, else `false`.
36908     * @example
36909     *
36910     * var object = _.create({ 'a': _.create({ 'b': 2 }) });
36911     *
36912     * _.hasIn(object, 'a');
36913     * // => true
36914     *
36915     * _.hasIn(object, 'a.b');
36916     * // => true
36917     *
36918     * _.hasIn(object, ['a', 'b']);
36919     * // => true
36920     *
36921     * _.hasIn(object, 'b');
36922     * // => false
36923     */
36924    function hasIn(object, path) {
36925      return object != null && hasPath(object, path, baseHasIn);
36926    }
36927
36928    /**
36929     * Creates an object composed of the inverted keys and values of `object`.
36930     * If `object` contains duplicate values, subsequent values overwrite
36931     * property assignments of previous values.
36932     *
36933     * @static
36934     * @memberOf _
36935     * @since 0.7.0
36936     * @category Object
36937     * @param {Object} object The object to invert.
36938     * @returns {Object} Returns the new inverted object.
36939     * @example
36940     *
36941     * var object = { 'a': 1, 'b': 2, 'c': 1 };
36942     *
36943     * _.invert(object);
36944     * // => { '1': 'c', '2': 'b' }
36945     */
36946    var invert = createInverter(function(result, value, key) {
36947      if (value != null &&
36948          typeof value.toString != 'function') {
36949        value = nativeObjectToString.call(value);
36950      }
36951
36952      result[value] = key;
36953    }, constant(identity));
36954
36955    /**
36956     * This method is like `_.invert` except that the inverted object is generated
36957     * from the results of running each element of `object` thru `iteratee`. The
36958     * corresponding inverted value of each inverted key is an array of keys
36959     * responsible for generating the inverted value. The iteratee is invoked
36960     * with one argument: (value).
36961     *
36962     * @static
36963     * @memberOf _
36964     * @since 4.1.0
36965     * @category Object
36966     * @param {Object} object The object to invert.
36967     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
36968     * @returns {Object} Returns the new inverted object.
36969     * @example
36970     *
36971     * var object = { 'a': 1, 'b': 2, 'c': 1 };
36972     *
36973     * _.invertBy(object);
36974     * // => { '1': ['a', 'c'], '2': ['b'] }
36975     *
36976     * _.invertBy(object, function(value) {
36977     *   return 'group' + value;
36978     * });
36979     * // => { 'group1': ['a', 'c'], 'group2': ['b'] }
36980     */
36981    var invertBy = createInverter(function(result, value, key) {
36982      if (value != null &&
36983          typeof value.toString != 'function') {
36984        value = nativeObjectToString.call(value);
36985      }
36986
36987      if (hasOwnProperty.call(result, value)) {
36988        result[value].push(key);
36989      } else {
36990        result[value] = [key];
36991      }
36992    }, getIteratee);
36993
36994    /**
36995     * Invokes the method at `path` of `object`.
36996     *
36997     * @static
36998     * @memberOf _
36999     * @since 4.0.0
37000     * @category Object
37001     * @param {Object} object The object to query.
37002     * @param {Array|string} path The path of the method to invoke.
37003     * @param {...*} [args] The arguments to invoke the method with.
37004     * @returns {*} Returns the result of the invoked method.
37005     * @example
37006     *
37007     * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };
37008     *
37009     * _.invoke(object, 'a[0].b.c.slice', 1, 3);
37010     * // => [2, 3]
37011     */
37012    var invoke = baseRest(baseInvoke);
37013
37014    /**
37015     * Creates an array of the own enumerable property names of `object`.
37016     *
37017     * **Note:** Non-object values are coerced to objects. See the
37018     * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
37019     * for more details.
37020     *
37021     * @static
37022     * @since 0.1.0
37023     * @memberOf _
37024     * @category Object
37025     * @param {Object} object The object to query.
37026     * @returns {Array} Returns the array of property names.
37027     * @example
37028     *
37029     * function Foo() {
37030     *   this.a = 1;
37031     *   this.b = 2;
37032     * }
37033     *
37034     * Foo.prototype.c = 3;
37035     *
37036     * _.keys(new Foo);
37037     * // => ['a', 'b'] (iteration order is not guaranteed)
37038     *
37039     * _.keys('hi');
37040     * // => ['0', '1']
37041     */
37042    function keys(object) {
37043      return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
37044    }
37045
37046    /**
37047     * Creates an array of the own and inherited enumerable property names of `object`.
37048     *
37049     * **Note:** Non-object values are coerced to objects.
37050     *
37051     * @static
37052     * @memberOf _
37053     * @since 3.0.0
37054     * @category Object
37055     * @param {Object} object The object to query.
37056     * @returns {Array} Returns the array of property names.
37057     * @example
37058     *
37059     * function Foo() {
37060     *   this.a = 1;
37061     *   this.b = 2;
37062     * }
37063     *
37064     * Foo.prototype.c = 3;
37065     *
37066     * _.keysIn(new Foo);
37067     * // => ['a', 'b', 'c'] (iteration order is not guaranteed)
37068     */
37069    function keysIn(object) {
37070      return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);
37071    }
37072
37073    /**
37074     * The opposite of `_.mapValues`; this method creates an object with the
37075     * same values as `object` and keys generated by running each own enumerable
37076     * string keyed property of `object` thru `iteratee`. The iteratee is invoked
37077     * with three arguments: (value, key, object).
37078     *
37079     * @static
37080     * @memberOf _
37081     * @since 3.8.0
37082     * @category Object
37083     * @param {Object} object The object to iterate over.
37084     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
37085     * @returns {Object} Returns the new mapped object.
37086     * @see _.mapValues
37087     * @example
37088     *
37089     * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {
37090     *   return key + value;
37091     * });
37092     * // => { 'a1': 1, 'b2': 2 }
37093     */
37094    function mapKeys(object, iteratee) {
37095      var result = {};
37096      iteratee = getIteratee(iteratee, 3);
37097
37098      baseForOwn(object, function(value, key, object) {
37099        baseAssignValue(result, iteratee(value, key, object), value);
37100      });
37101      return result;
37102    }
37103
37104    /**
37105     * Creates an object with the same keys as `object` and values generated
37106     * by running each own enumerable string keyed property of `object` thru
37107     * `iteratee`. The iteratee is invoked with three arguments:
37108     * (value, key, object).
37109     *
37110     * @static
37111     * @memberOf _
37112     * @since 2.4.0
37113     * @category Object
37114     * @param {Object} object The object to iterate over.
37115     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
37116     * @returns {Object} Returns the new mapped object.
37117     * @see _.mapKeys
37118     * @example
37119     *
37120     * var users = {
37121     *   'fred':    { 'user': 'fred',    'age': 40 },
37122     *   'pebbles': { 'user': 'pebbles', 'age': 1 }
37123     * };
37124     *
37125     * _.mapValues(users, function(o) { return o.age; });
37126     * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
37127     *
37128     * // The `_.property` iteratee shorthand.
37129     * _.mapValues(users, 'age');
37130     * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
37131     */
37132    function mapValues(object, iteratee) {
37133      var result = {};
37134      iteratee = getIteratee(iteratee, 3);
37135
37136      baseForOwn(object, function(value, key, object) {
37137        baseAssignValue(result, key, iteratee(value, key, object));
37138      });
37139      return result;
37140    }
37141
37142    /**
37143     * This method is like `_.assign` except that it recursively merges own and
37144     * inherited enumerable string keyed properties of source objects into the
37145     * destination object. Source properties that resolve to `undefined` are
37146     * skipped if a destination value exists. Array and plain object properties
37147     * are merged recursively. Other objects and value types are overridden by
37148     * assignment. Source objects are applied from left to right. Subsequent
37149     * sources overwrite property assignments of previous sources.
37150     *
37151     * **Note:** This method mutates `object`.
37152     *
37153     * @static
37154     * @memberOf _
37155     * @since 0.5.0
37156     * @category Object
37157     * @param {Object} object The destination object.
37158     * @param {...Object} [sources] The source objects.
37159     * @returns {Object} Returns `object`.
37160     * @example
37161     *
37162     * var object = {
37163     *   'a': [{ 'b': 2 }, { 'd': 4 }]
37164     * };
37165     *
37166     * var other = {
37167     *   'a': [{ 'c': 3 }, { 'e': 5 }]
37168     * };
37169     *
37170     * _.merge(object, other);
37171     * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }
37172     */
37173    var merge = createAssigner(function(object, source, srcIndex) {
37174      baseMerge(object, source, srcIndex);
37175    });
37176
37177    /**
37178     * This method is like `_.merge` except that it accepts `customizer` which
37179     * is invoked to produce the merged values of the destination and source
37180     * properties. If `customizer` returns `undefined`, merging is handled by the
37181     * method instead. The `customizer` is invoked with six arguments:
37182     * (objValue, srcValue, key, object, source, stack).
37183     *
37184     * **Note:** This method mutates `object`.
37185     *
37186     * @static
37187     * @memberOf _
37188     * @since 4.0.0
37189     * @category Object
37190     * @param {Object} object The destination object.
37191     * @param {...Object} sources The source objects.
37192     * @param {Function} customizer The function to customize assigned values.
37193     * @returns {Object} Returns `object`.
37194     * @example
37195     *
37196     * function customizer(objValue, srcValue) {
37197     *   if (_.isArray(objValue)) {
37198     *     return objValue.concat(srcValue);
37199     *   }
37200     * }
37201     *
37202     * var object = { 'a': [1], 'b': [2] };
37203     * var other = { 'a': [3], 'b': [4] };
37204     *
37205     * _.mergeWith(object, other, customizer);
37206     * // => { 'a': [1, 3], 'b': [2, 4] }
37207     */
37208    var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {
37209      baseMerge(object, source, srcIndex, customizer);
37210    });
37211
37212    /**
37213     * The opposite of `_.pick`; this method creates an object composed of the
37214     * own and inherited enumerable property paths of `object` that are not omitted.
37215     *
37216     * **Note:** This method is considerably slower than `_.pick`.
37217     *
37218     * @static
37219     * @since 0.1.0
37220     * @memberOf _
37221     * @category Object
37222     * @param {Object} object The source object.
37223     * @param {...(string|string[])} [paths] The property paths to omit.
37224     * @returns {Object} Returns the new object.
37225     * @example
37226     *
37227     * var object = { 'a': 1, 'b': '2', 'c': 3 };
37228     *
37229     * _.omit(object, ['a', 'c']);
37230     * // => { 'b': '2' }
37231     */
37232    var omit = flatRest(function(object, paths) {
37233      var result = {};
37234      if (object == null) {
37235        return result;
37236      }
37237      var isDeep = false;
37238      paths = arrayMap(paths, function(path) {
37239        path = castPath(path, object);
37240        isDeep || (isDeep = path.length > 1);
37241        return path;
37242      });
37243      copyObject(object, getAllKeysIn(object), result);
37244      if (isDeep) {
37245        result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);
37246      }
37247      var length = paths.length;
37248      while (length--) {
37249        baseUnset(result, paths[length]);
37250      }
37251      return result;
37252    });
37253
37254    /**
37255     * The opposite of `_.pickBy`; this method creates an object composed of
37256     * the own and inherited enumerable string keyed properties of `object` that
37257     * `predicate` doesn't return truthy for. The predicate is invoked with two
37258     * arguments: (value, key).
37259     *
37260     * @static
37261     * @memberOf _
37262     * @since 4.0.0
37263     * @category Object
37264     * @param {Object} object The source object.
37265     * @param {Function} [predicate=_.identity] The function invoked per property.
37266     * @returns {Object} Returns the new object.
37267     * @example
37268     *
37269     * var object = { 'a': 1, 'b': '2', 'c': 3 };
37270     *
37271     * _.omitBy(object, _.isNumber);
37272     * // => { 'b': '2' }
37273     */
37274    function omitBy(object, predicate) {
37275      return pickBy(object, negate(getIteratee(predicate)));
37276    }
37277
37278    /**
37279     * Creates an object composed of the picked `object` properties.
37280     *
37281     * @static
37282     * @since 0.1.0
37283     * @memberOf _
37284     * @category Object
37285     * @param {Object} object The source object.
37286     * @param {...(string|string[])} [paths] The property paths to pick.
37287     * @returns {Object} Returns the new object.
37288     * @example
37289     *
37290     * var object = { 'a': 1, 'b': '2', 'c': 3 };
37291     *
37292     * _.pick(object, ['a', 'c']);
37293     * // => { 'a': 1, 'c': 3 }
37294     */
37295    var pick = flatRest(function(object, paths) {
37296      return object == null ? {} : basePick(object, paths);
37297    });
37298
37299    /**
37300     * Creates an object composed of the `object` properties `predicate` returns
37301     * truthy for. The predicate is invoked with two arguments: (value, key).
37302     *
37303     * @static
37304     * @memberOf _
37305     * @since 4.0.0
37306     * @category Object
37307     * @param {Object} object The source object.
37308     * @param {Function} [predicate=_.identity] The function invoked per property.
37309     * @returns {Object} Returns the new object.
37310     * @example
37311     *
37312     * var object = { 'a': 1, 'b': '2', 'c': 3 };
37313     *
37314     * _.pickBy(object, _.isNumber);
37315     * // => { 'a': 1, 'c': 3 }
37316     */
37317    function pickBy(object, predicate) {
37318      if (object == null) {
37319        return {};
37320      }
37321      var props = arrayMap(getAllKeysIn(object), function(prop) {
37322        return [prop];
37323      });
37324      predicate = getIteratee(predicate);
37325      return basePickBy(object, props, function(value, path) {
37326        return predicate(value, path[0]);
37327      });
37328    }
37329
37330    /**
37331     * This method is like `_.get` except that if the resolved value is a
37332     * function it's invoked with the `this` binding of its parent object and
37333     * its result is returned.
37334     *
37335     * @static
37336     * @since 0.1.0
37337     * @memberOf _
37338     * @category Object
37339     * @param {Object} object The object to query.
37340     * @param {Array|string} path The path of the property to resolve.
37341     * @param {*} [defaultValue] The value returned for `undefined` resolved values.
37342     * @returns {*} Returns the resolved value.
37343     * @example
37344     *
37345     * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };
37346     *
37347     * _.result(object, 'a[0].b.c1');
37348     * // => 3
37349     *
37350     * _.result(object, 'a[0].b.c2');
37351     * // => 4
37352     *
37353     * _.result(object, 'a[0].b.c3', 'default');
37354     * // => 'default'
37355     *
37356     * _.result(object, 'a[0].b.c3', _.constant('default'));
37357     * // => 'default'
37358     */
37359    function result(object, path, defaultValue) {
37360      path = castPath(path, object);
37361
37362      var index = -1,
37363          length = path.length;
37364
37365      // Ensure the loop is entered when path is empty.
37366      if (!length) {
37367        length = 1;
37368        object = undefined;
37369      }
37370      while (++index < length) {
37371        var value = object == null ? undefined : object[toKey(path[index])];
37372        if (value === undefined) {
37373          index = length;
37374          value = defaultValue;
37375        }
37376        object = isFunction(value) ? value.call(object) : value;
37377      }
37378      return object;
37379    }
37380
37381    /**
37382     * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,
37383     * it's created. Arrays are created for missing index properties while objects
37384     * are created for all other missing properties. Use `_.setWith` to customize
37385     * `path` creation.
37386     *
37387     * **Note:** This method mutates `object`.
37388     *
37389     * @static
37390     * @memberOf _
37391     * @since 3.7.0
37392     * @category Object
37393     * @param {Object} object The object to modify.
37394     * @param {Array|string} path The path of the property to set.
37395     * @param {*} value The value to set.
37396     * @returns {Object} Returns `object`.
37397     * @example
37398     *
37399     * var object = { 'a': [{ 'b': { 'c': 3 } }] };
37400     *
37401     * _.set(object, 'a[0].b.c', 4);
37402     * console.log(object.a[0].b.c);
37403     * // => 4
37404     *
37405     * _.set(object, ['x', '0', 'y', 'z'], 5);
37406     * console.log(object.x[0].y.z);
37407     * // => 5
37408     */
37409    function set(object, path, value) {
37410      return object == null ? object : baseSet(object, path, value);
37411    }
37412
37413    /**
37414     * This method is like `_.set` except that it accepts `customizer` which is
37415     * invoked to produce the objects of `path`.  If `customizer` returns `undefined`
37416     * path creation is handled by the method instead. The `customizer` is invoked
37417     * with three arguments: (nsValue, key, nsObject).
37418     *
37419     * **Note:** This method mutates `object`.
37420     *
37421     * @static
37422     * @memberOf _
37423     * @since 4.0.0
37424     * @category Object
37425     * @param {Object} object The object to modify.
37426     * @param {Array|string} path The path of the property to set.
37427     * @param {*} value The value to set.
37428     * @param {Function} [customizer] The function to customize assigned values.
37429     * @returns {Object} Returns `object`.
37430     * @example
37431     *
37432     * var object = {};
37433     *
37434     * _.setWith(object, '[0][1]', 'a', Object);
37435     * // => { '0': { '1': 'a' } }
37436     */
37437    function setWith(object, path, value, customizer) {
37438      customizer = typeof customizer == 'function' ? customizer : undefined;
37439      return object == null ? object : baseSet(object, path, value, customizer);
37440    }
37441
37442    /**
37443     * Creates an array of own enumerable string keyed-value pairs for `object`
37444     * which can be consumed by `_.fromPairs`. If `object` is a map or set, its
37445     * entries are returned.
37446     *
37447     * @static
37448     * @memberOf _
37449     * @since 4.0.0
37450     * @alias entries
37451     * @category Object
37452     * @param {Object} object The object to query.
37453     * @returns {Array} Returns the key-value pairs.
37454     * @example
37455     *
37456     * function Foo() {
37457     *   this.a = 1;
37458     *   this.b = 2;
37459     * }
37460     *
37461     * Foo.prototype.c = 3;
37462     *
37463     * _.toPairs(new Foo);
37464     * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)
37465     */
37466    var toPairs = createToPairs(keys);
37467
37468    /**
37469     * Creates an array of own and inherited enumerable string keyed-value pairs
37470     * for `object` which can be consumed by `_.fromPairs`. If `object` is a map
37471     * or set, its entries are returned.
37472     *
37473     * @static
37474     * @memberOf _
37475     * @since 4.0.0
37476     * @alias entriesIn
37477     * @category Object
37478     * @param {Object} object The object to query.
37479     * @returns {Array} Returns the key-value pairs.
37480     * @example
37481     *
37482     * function Foo() {
37483     *   this.a = 1;
37484     *   this.b = 2;
37485     * }
37486     *
37487     * Foo.prototype.c = 3;
37488     *
37489     * _.toPairsIn(new Foo);
37490     * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)
37491     */
37492    var toPairsIn = createToPairs(keysIn);
37493
37494    /**
37495     * An alternative to `_.reduce`; this method transforms `object` to a new
37496     * `accumulator` object which is the result of running each of its own
37497     * enumerable string keyed properties thru `iteratee`, with each invocation
37498     * potentially mutating the `accumulator` object. If `accumulator` is not
37499     * provided, a new object with the same `[[Prototype]]` will be used. The
37500     * iteratee is invoked with four arguments: (accumulator, value, key, object).
37501     * Iteratee functions may exit iteration early by explicitly returning `false`.
37502     *
37503     * @static
37504     * @memberOf _
37505     * @since 1.3.0
37506     * @category Object
37507     * @param {Object} object The object to iterate over.
37508     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
37509     * @param {*} [accumulator] The custom accumulator value.
37510     * @returns {*} Returns the accumulated value.
37511     * @example
37512     *
37513     * _.transform([2, 3, 4], function(result, n) {
37514     *   result.push(n *= n);
37515     *   return n % 2 == 0;
37516     * }, []);
37517     * // => [4, 9]
37518     *
37519     * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {
37520     *   (result[value] || (result[value] = [])).push(key);
37521     * }, {});
37522     * // => { '1': ['a', 'c'], '2': ['b'] }
37523     */
37524    function transform(object, iteratee, accumulator) {
37525      var isArr = isArray(object),
37526          isArrLike = isArr || isBuffer(object) || isTypedArray(object);
37527
37528      iteratee = getIteratee(iteratee, 4);
37529      if (accumulator == null) {
37530        var Ctor = object && object.constructor;
37531        if (isArrLike) {
37532          accumulator = isArr ? new Ctor : [];
37533        }
37534        else if (isObject(object)) {
37535          accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};
37536        }
37537        else {
37538          accumulator = {};
37539        }
37540      }
37541      (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {
37542        return iteratee(accumulator, value, index, object);
37543      });
37544      return accumulator;
37545    }
37546
37547    /**
37548     * Removes the property at `path` of `object`.
37549     *
37550     * **Note:** This method mutates `object`.
37551     *
37552     * @static
37553     * @memberOf _
37554     * @since 4.0.0
37555     * @category Object
37556     * @param {Object} object The object to modify.
37557     * @param {Array|string} path The path of the property to unset.
37558     * @returns {boolean} Returns `true` if the property is deleted, else `false`.
37559     * @example
37560     *
37561     * var object = { 'a': [{ 'b': { 'c': 7 } }] };
37562     * _.unset(object, 'a[0].b.c');
37563     * // => true
37564     *
37565     * console.log(object);
37566     * // => { 'a': [{ 'b': {} }] };
37567     *
37568     * _.unset(object, ['a', '0', 'b', 'c']);
37569     * // => true
37570     *
37571     * console.log(object);
37572     * // => { 'a': [{ 'b': {} }] };
37573     */
37574    function unset(object, path) {
37575      return object == null ? true : baseUnset(object, path);
37576    }
37577
37578    /**
37579     * This method is like `_.set` except that accepts `updater` to produce the
37580     * value to set. Use `_.updateWith` to customize `path` creation. The `updater`
37581     * is invoked with one argument: (value).
37582     *
37583     * **Note:** This method mutates `object`.
37584     *
37585     * @static
37586     * @memberOf _
37587     * @since 4.6.0
37588     * @category Object
37589     * @param {Object} object The object to modify.
37590     * @param {Array|string} path The path of the property to set.
37591     * @param {Function} updater The function to produce the updated value.
37592     * @returns {Object} Returns `object`.
37593     * @example
37594     *
37595     * var object = { 'a': [{ 'b': { 'c': 3 } }] };
37596     *
37597     * _.update(object, 'a[0].b.c', function(n) { return n * n; });
37598     * console.log(object.a[0].b.c);
37599     * // => 9
37600     *
37601     * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });
37602     * console.log(object.x[0].y.z);
37603     * // => 0
37604     */
37605    function update(object, path, updater) {
37606      return object == null ? object : baseUpdate(object, path, castFunction(updater));
37607    }
37608
37609    /**
37610     * This method is like `_.update` except that it accepts `customizer` which is
37611     * invoked to produce the objects of `path`.  If `customizer` returns `undefined`
37612     * path creation is handled by the method instead. The `customizer` is invoked
37613     * with three arguments: (nsValue, key, nsObject).
37614     *
37615     * **Note:** This method mutates `object`.
37616     *
37617     * @static
37618     * @memberOf _
37619     * @since 4.6.0
37620     * @category Object
37621     * @param {Object} object The object to modify.
37622     * @param {Array|string} path The path of the property to set.
37623     * @param {Function} updater The function to produce the updated value.
37624     * @param {Function} [customizer] The function to customize assigned values.
37625     * @returns {Object} Returns `object`.
37626     * @example
37627     *
37628     * var object = {};
37629     *
37630     * _.updateWith(object, '[0][1]', _.constant('a'), Object);
37631     * // => { '0': { '1': 'a' } }
37632     */
37633    function updateWith(object, path, updater, customizer) {
37634      customizer = typeof customizer == 'function' ? customizer : undefined;
37635      return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);
37636    }
37637
37638    /**
37639     * Creates an array of the own enumerable string keyed property values of `object`.
37640     *
37641     * **Note:** Non-object values are coerced to objects.
37642     *
37643     * @static
37644     * @since 0.1.0
37645     * @memberOf _
37646     * @category Object
37647     * @param {Object} object The object to query.
37648     * @returns {Array} Returns the array of property values.
37649     * @example
37650     *
37651     * function Foo() {
37652     *   this.a = 1;
37653     *   this.b = 2;
37654     * }
37655     *
37656     * Foo.prototype.c = 3;
37657     *
37658     * _.values(new Foo);
37659     * // => [1, 2] (iteration order is not guaranteed)
37660     *
37661     * _.values('hi');
37662     * // => ['h', 'i']
37663     */
37664    function values(object) {
37665      return object == null ? [] : baseValues(object, keys(object));
37666    }
37667
37668    /**
37669     * Creates an array of the own and inherited enumerable string keyed property
37670     * values of `object`.
37671     *
37672     * **Note:** Non-object values are coerced to objects.
37673     *
37674     * @static
37675     * @memberOf _
37676     * @since 3.0.0
37677     * @category Object
37678     * @param {Object} object The object to query.
37679     * @returns {Array} Returns the array of property values.
37680     * @example
37681     *
37682     * function Foo() {
37683     *   this.a = 1;
37684     *   this.b = 2;
37685     * }
37686     *
37687     * Foo.prototype.c = 3;
37688     *
37689     * _.valuesIn(new Foo);
37690     * // => [1, 2, 3] (iteration order is not guaranteed)
37691     */
37692    function valuesIn(object) {
37693      return object == null ? [] : baseValues(object, keysIn(object));
37694    }
37695
37696    /*------------------------------------------------------------------------*/
37697
37698    /**
37699     * Clamps `number` within the inclusive `lower` and `upper` bounds.
37700     *
37701     * @static
37702     * @memberOf _
37703     * @since 4.0.0
37704     * @category Number
37705     * @param {number} number The number to clamp.
37706     * @param {number} [lower] The lower bound.
37707     * @param {number} upper The upper bound.
37708     * @returns {number} Returns the clamped number.
37709     * @example
37710     *
37711     * _.clamp(-10, -5, 5);
37712     * // => -5
37713     *
37714     * _.clamp(10, -5, 5);
37715     * // => 5
37716     */
37717    function clamp(number, lower, upper) {
37718      if (upper === undefined) {
37719        upper = lower;
37720        lower = undefined;
37721      }
37722      if (upper !== undefined) {
37723        upper = toNumber(upper);
37724        upper = upper === upper ? upper : 0;
37725      }
37726      if (lower !== undefined) {
37727        lower = toNumber(lower);
37728        lower = lower === lower ? lower : 0;
37729      }
37730      return baseClamp(toNumber(number), lower, upper);
37731    }
37732
37733    /**
37734     * Checks if `n` is between `start` and up to, but not including, `end`. If
37735     * `end` is not specified, it's set to `start` with `start` then set to `0`.
37736     * If `start` is greater than `end` the params are swapped to support
37737     * negative ranges.
37738     *
37739     * @static
37740     * @memberOf _
37741     * @since 3.3.0
37742     * @category Number
37743     * @param {number} number The number to check.
37744     * @param {number} [start=0] The start of the range.
37745     * @param {number} end The end of the range.
37746     * @returns {boolean} Returns `true` if `number` is in the range, else `false`.
37747     * @see _.range, _.rangeRight
37748     * @example
37749     *
37750     * _.inRange(3, 2, 4);
37751     * // => true
37752     *
37753     * _.inRange(4, 8);
37754     * // => true
37755     *
37756     * _.inRange(4, 2);
37757     * // => false
37758     *
37759     * _.inRange(2, 2);
37760     * // => false
37761     *
37762     * _.inRange(1.2, 2);
37763     * // => true
37764     *
37765     * _.inRange(5.2, 4);
37766     * // => false
37767     *
37768     * _.inRange(-3, -2, -6);
37769     * // => true
37770     */
37771    function inRange(number, start, end) {
37772      start = toFinite(start);
37773      if (end === undefined) {
37774        end = start;
37775        start = 0;
37776      } else {
37777        end = toFinite(end);
37778      }
37779      number = toNumber(number);
37780      return baseInRange(number, start, end);
37781    }
37782
37783    /**
37784     * Produces a random number between the inclusive `lower` and `upper` bounds.
37785     * If only one argument is provided a number between `0` and the given number
37786     * is returned. If `floating` is `true`, or either `lower` or `upper` are
37787     * floats, a floating-point number is returned instead of an integer.
37788     *
37789     * **Note:** JavaScript follows the IEEE-754 standard for resolving
37790     * floating-point values which can produce unexpected results.
37791     *
37792     * @static
37793     * @memberOf _
37794     * @since 0.7.0
37795     * @category Number
37796     * @param {number} [lower=0] The lower bound.
37797     * @param {number} [upper=1] The upper bound.
37798     * @param {boolean} [floating] Specify returning a floating-point number.
37799     * @returns {number} Returns the random number.
37800     * @example
37801     *
37802     * _.random(0, 5);
37803     * // => an integer between 0 and 5
37804     *
37805     * _.random(5);
37806     * // => also an integer between 0 and 5
37807     *
37808     * _.random(5, true);
37809     * // => a floating-point number between 0 and 5
37810     *
37811     * _.random(1.2, 5.2);
37812     * // => a floating-point number between 1.2 and 5.2
37813     */
37814    function random(lower, upper, floating) {
37815      if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {
37816        upper = floating = undefined;
37817      }
37818      if (floating === undefined) {
37819        if (typeof upper == 'boolean') {
37820          floating = upper;
37821          upper = undefined;
37822        }
37823        else if (typeof lower == 'boolean') {
37824          floating = lower;
37825          lower = undefined;
37826        }
37827      }
37828      if (lower === undefined && upper === undefined) {
37829        lower = 0;
37830        upper = 1;
37831      }
37832      else {
37833        lower = toFinite(lower);
37834        if (upper === undefined) {
37835          upper = lower;
37836          lower = 0;
37837        } else {
37838          upper = toFinite(upper);
37839        }
37840      }
37841      if (lower > upper) {
37842        var temp = lower;
37843        lower = upper;
37844        upper = temp;
37845      }
37846      if (floating || lower % 1 || upper % 1) {
37847        var rand = nativeRandom();
37848        return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);
37849      }
37850      return baseRandom(lower, upper);
37851    }
37852
37853    /*------------------------------------------------------------------------*/
37854
37855    /**
37856     * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).
37857     *
37858     * @static
37859     * @memberOf _
37860     * @since 3.0.0
37861     * @category String
37862     * @param {string} [string=''] The string to convert.
37863     * @returns {string} Returns the camel cased string.
37864     * @example
37865     *
37866     * _.camelCase('Foo Bar');
37867     * // => 'fooBar'
37868     *
37869     * _.camelCase('--foo-bar--');
37870     * // => 'fooBar'
37871     *
37872     * _.camelCase('__FOO_BAR__');
37873     * // => 'fooBar'
37874     */
37875    var camelCase = createCompounder(function(result, word, index) {
37876      word = word.toLowerCase();
37877      return result + (index ? capitalize(word) : word);
37878    });
37879
37880    /**
37881     * Converts the first character of `string` to upper case and the remaining
37882     * to lower case.
37883     *
37884     * @static
37885     * @memberOf _
37886     * @since 3.0.0
37887     * @category String
37888     * @param {string} [string=''] The string to capitalize.
37889     * @returns {string} Returns the capitalized string.
37890     * @example
37891     *
37892     * _.capitalize('FRED');
37893     * // => 'Fred'
37894     */
37895    function capitalize(string) {
37896      return upperFirst(toString(string).toLowerCase());
37897    }
37898
37899    /**
37900     * Deburrs `string` by converting
37901     * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)
37902     * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)
37903     * letters to basic Latin letters and removing
37904     * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).
37905     *
37906     * @static
37907     * @memberOf _
37908     * @since 3.0.0
37909     * @category String
37910     * @param {string} [string=''] The string to deburr.
37911     * @returns {string} Returns the deburred string.
37912     * @example
37913     *
37914     * _.deburr('déjà vu');
37915     * // => 'deja vu'
37916     */
37917    function deburr(string) {
37918      string = toString(string);
37919      return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');
37920    }
37921
37922    /**
37923     * Checks if `string` ends with the given target string.
37924     *
37925     * @static
37926     * @memberOf _
37927     * @since 3.0.0
37928     * @category String
37929     * @param {string} [string=''] The string to inspect.
37930     * @param {string} [target] The string to search for.
37931     * @param {number} [position=string.length] The position to search up to.
37932     * @returns {boolean} Returns `true` if `string` ends with `target`,
37933     *  else `false`.
37934     * @example
37935     *
37936     * _.endsWith('abc', 'c');
37937     * // => true
37938     *
37939     * _.endsWith('abc', 'b');
37940     * // => false
37941     *
37942     * _.endsWith('abc', 'b', 2);
37943     * // => true
37944     */
37945    function endsWith(string, target, position) {
37946      string = toString(string);
37947      target = baseToString(target);
37948
37949      var length = string.length;
37950      position = position === undefined
37951        ? length
37952        : baseClamp(toInteger(position), 0, length);
37953
37954      var end = position;
37955      position -= target.length;
37956      return position >= 0 && string.slice(position, end) == target;
37957    }
37958
37959    /**
37960     * Converts the characters "&", "<", ">", '"', and "'" in `string` to their
37961     * corresponding HTML entities.
37962     *
37963     * **Note:** No other characters are escaped. To escape additional
37964     * characters use a third-party library like [_he_](https://mths.be/he).
37965     *
37966     * Though the ">" character is escaped for symmetry, characters like
37967     * ">" and "/" don't need escaping in HTML and have no special meaning
37968     * unless they're part of a tag or unquoted attribute value. See
37969     * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)
37970     * (under "semi-related fun fact") for more details.
37971     *
37972     * When working with HTML you should always
37973     * [quote attribute values](http://wonko.com/post/html-escaping) to reduce
37974     * XSS vectors.
37975     *
37976     * @static
37977     * @since 0.1.0
37978     * @memberOf _
37979     * @category String
37980     * @param {string} [string=''] The string to escape.
37981     * @returns {string} Returns the escaped string.
37982     * @example
37983     *
37984     * _.escape('fred, barney, & pebbles');
37985     * // => 'fred, barney, &amp; pebbles'
37986     */
37987    function escape(string) {
37988      string = toString(string);
37989      return (string && reHasUnescapedHtml.test(string))
37990        ? string.replace(reUnescapedHtml, escapeHtmlChar)
37991        : string;
37992    }
37993
37994    /**
37995     * Escapes the `RegExp` special characters "^", "$", "\", ".", "*", "+",
37996     * "?", "(", ")", "[", "]", "{", "}", and "|" in `string`.
37997     *
37998     * @static
37999     * @memberOf _
38000     * @since 3.0.0
38001     * @category String
38002     * @param {string} [string=''] The string to escape.
38003     * @returns {string} Returns the escaped string.
38004     * @example
38005     *
38006     * _.escapeRegExp('[lodash](https://lodash.com/)');
38007     * // => '\[lodash\]\(https://lodash\.com/\)'
38008     */
38009    function escapeRegExp(string) {
38010      string = toString(string);
38011      return (string && reHasRegExpChar.test(string))
38012        ? string.replace(reRegExpChar, '\\$&')
38013        : string;
38014    }
38015
38016    /**
38017     * Converts `string` to
38018     * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).
38019     *
38020     * @static
38021     * @memberOf _
38022     * @since 3.0.0
38023     * @category String
38024     * @param {string} [string=''] The string to convert.
38025     * @returns {string} Returns the kebab cased string.
38026     * @example
38027     *
38028     * _.kebabCase('Foo Bar');
38029     * // => 'foo-bar'
38030     *
38031     * _.kebabCase('fooBar');
38032     * // => 'foo-bar'
38033     *
38034     * _.kebabCase('__FOO_BAR__');
38035     * // => 'foo-bar'
38036     */
38037    var kebabCase = createCompounder(function(result, word, index) {
38038      return result + (index ? '-' : '') + word.toLowerCase();
38039    });
38040
38041    /**
38042     * Converts `string`, as space separated words, to lower case.
38043     *
38044     * @static
38045     * @memberOf _
38046     * @since 4.0.0
38047     * @category String
38048     * @param {string} [string=''] The string to convert.
38049     * @returns {string} Returns the lower cased string.
38050     * @example
38051     *
38052     * _.lowerCase('--Foo-Bar--');
38053     * // => 'foo bar'
38054     *
38055     * _.lowerCase('fooBar');
38056     * // => 'foo bar'
38057     *
38058     * _.lowerCase('__FOO_BAR__');
38059     * // => 'foo bar'
38060     */
38061    var lowerCase = createCompounder(function(result, word, index) {
38062      return result + (index ? ' ' : '') + word.toLowerCase();
38063    });
38064
38065    /**
38066     * Converts the first character of `string` to lower case.
38067     *
38068     * @static
38069     * @memberOf _
38070     * @since 4.0.0
38071     * @category String
38072     * @param {string} [string=''] The string to convert.
38073     * @returns {string} Returns the converted string.
38074     * @example
38075     *
38076     * _.lowerFirst('Fred');
38077     * // => 'fred'
38078     *
38079     * _.lowerFirst('FRED');
38080     * // => 'fRED'
38081     */
38082    var lowerFirst = createCaseFirst('toLowerCase');
38083
38084    /**
38085     * Pads `string` on the left and right sides if it's shorter than `length`.
38086     * Padding characters are truncated if they can't be evenly divided by `length`.
38087     *
38088     * @static
38089     * @memberOf _
38090     * @since 3.0.0
38091     * @category String
38092     * @param {string} [string=''] The string to pad.
38093     * @param {number} [length=0] The padding length.
38094     * @param {string} [chars=' '] The string used as padding.
38095     * @returns {string} Returns the padded string.
38096     * @example
38097     *
38098     * _.pad('abc', 8);
38099     * // => '  abc   '
38100     *
38101     * _.pad('abc', 8, '_-');
38102     * // => '_-abc_-_'
38103     *
38104     * _.pad('abc', 3);
38105     * // => 'abc'
38106     */
38107    function pad(string, length, chars) {
38108      string = toString(string);
38109      length = toInteger(length);
38110
38111      var strLength = length ? stringSize(string) : 0;
38112      if (!length || strLength >= length) {
38113        return string;
38114      }
38115      var mid = (length - strLength) / 2;
38116      return (
38117        createPadding(nativeFloor(mid), chars) +
38118        string +
38119        createPadding(nativeCeil(mid), chars)
38120      );
38121    }
38122
38123    /**
38124     * Pads `string` on the right side if it's shorter than `length`. Padding
38125     * characters are truncated if they exceed `length`.
38126     *
38127     * @static
38128     * @memberOf _
38129     * @since 4.0.0
38130     * @category String
38131     * @param {string} [string=''] The string to pad.
38132     * @param {number} [length=0] The padding length.
38133     * @param {string} [chars=' '] The string used as padding.
38134     * @returns {string} Returns the padded string.
38135     * @example
38136     *
38137     * _.padEnd('abc', 6);
38138     * // => 'abc   '
38139     *
38140     * _.padEnd('abc', 6, '_-');
38141     * // => 'abc_-_'
38142     *
38143     * _.padEnd('abc', 3);
38144     * // => 'abc'
38145     */
38146    function padEnd(string, length, chars) {
38147      string = toString(string);
38148      length = toInteger(length);
38149
38150      var strLength = length ? stringSize(string) : 0;
38151      return (length && strLength < length)
38152        ? (string + createPadding(length - strLength, chars))
38153        : string;
38154    }
38155
38156    /**
38157     * Pads `string` on the left side if it's shorter than `length`. Padding
38158     * characters are truncated if they exceed `length`.
38159     *
38160     * @static
38161     * @memberOf _
38162     * @since 4.0.0
38163     * @category String
38164     * @param {string} [string=''] The string to pad.
38165     * @param {number} [length=0] The padding length.
38166     * @param {string} [chars=' '] The string used as padding.
38167     * @returns {string} Returns the padded string.
38168     * @example
38169     *
38170     * _.padStart('abc', 6);
38171     * // => '   abc'
38172     *
38173     * _.padStart('abc', 6, '_-');
38174     * // => '_-_abc'
38175     *
38176     * _.padStart('abc', 3);
38177     * // => 'abc'
38178     */
38179    function padStart(string, length, chars) {
38180      string = toString(string);
38181      length = toInteger(length);
38182
38183      var strLength = length ? stringSize(string) : 0;
38184      return (length && strLength < length)
38185        ? (createPadding(length - strLength, chars) + string)
38186        : string;
38187    }
38188
38189    /**
38190     * Converts `string` to an integer of the specified radix. If `radix` is
38191     * `undefined` or `0`, a `radix` of `10` is used unless `value` is a
38192     * hexadecimal, in which case a `radix` of `16` is used.
38193     *
38194     * **Note:** This method aligns with the
38195     * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.
38196     *
38197     * @static
38198     * @memberOf _
38199     * @since 1.1.0
38200     * @category String
38201     * @param {string} string The string to convert.
38202     * @param {number} [radix=10] The radix to interpret `value` by.
38203     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
38204     * @returns {number} Returns the converted integer.
38205     * @example
38206     *
38207     * _.parseInt('08');
38208     * // => 8
38209     *
38210     * _.map(['6', '08', '10'], _.parseInt);
38211     * // => [6, 8, 10]
38212     */
38213    function parseInt(string, radix, guard) {
38214      if (guard || radix == null) {
38215        radix = 0;
38216      } else if (radix) {
38217        radix = +radix;
38218      }
38219      return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);
38220    }
38221
38222    /**
38223     * Repeats the given string `n` times.
38224     *
38225     * @static
38226     * @memberOf _
38227     * @since 3.0.0
38228     * @category String
38229     * @param {string} [string=''] The string to repeat.
38230     * @param {number} [n=1] The number of times to repeat the string.
38231     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
38232     * @returns {string} Returns the repeated string.
38233     * @example
38234     *
38235     * _.repeat('*', 3);
38236     * // => '***'
38237     *
38238     * _.repeat('abc', 2);
38239     * // => 'abcabc'
38240     *
38241     * _.repeat('abc', 0);
38242     * // => ''
38243     */
38244    function repeat(string, n, guard) {
38245      if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {
38246        n = 1;
38247      } else {
38248        n = toInteger(n);
38249      }
38250      return baseRepeat(toString(string), n);
38251    }
38252
38253    /**
38254     * Replaces matches for `pattern` in `string` with `replacement`.
38255     *
38256     * **Note:** This method is based on
38257     * [`String#replace`](https://mdn.io/String/replace).
38258     *
38259     * @static
38260     * @memberOf _
38261     * @since 4.0.0
38262     * @category String
38263     * @param {string} [string=''] The string to modify.
38264     * @param {RegExp|string} pattern The pattern to replace.
38265     * @param {Function|string} replacement The match replacement.
38266     * @returns {string} Returns the modified string.
38267     * @example
38268     *
38269     * _.replace('Hi Fred', 'Fred', 'Barney');
38270     * // => 'Hi Barney'
38271     */
38272    function replace() {
38273      var args = arguments,
38274          string = toString(args[0]);
38275
38276      return args.length < 3 ? string : string.replace(args[1], args[2]);
38277    }
38278
38279    /**
38280     * Converts `string` to
38281     * [snake case](https://en.wikipedia.org/wiki/Snake_case).
38282     *
38283     * @static
38284     * @memberOf _
38285     * @since 3.0.0
38286     * @category String
38287     * @param {string} [string=''] The string to convert.
38288     * @returns {string} Returns the snake cased string.
38289     * @example
38290     *
38291     * _.snakeCase('Foo Bar');
38292     * // => 'foo_bar'
38293     *
38294     * _.snakeCase('fooBar');
38295     * // => 'foo_bar'
38296     *
38297     * _.snakeCase('--FOO-BAR--');
38298     * // => 'foo_bar'
38299     */
38300    var snakeCase = createCompounder(function(result, word, index) {
38301      return result + (index ? '_' : '') + word.toLowerCase();
38302    });
38303
38304    /**
38305     * Splits `string` by `separator`.
38306     *
38307     * **Note:** This method is based on
38308     * [`String#split`](https://mdn.io/String/split).
38309     *
38310     * @static
38311     * @memberOf _
38312     * @since 4.0.0
38313     * @category String
38314     * @param {string} [string=''] The string to split.
38315     * @param {RegExp|string} separator The separator pattern to split by.
38316     * @param {number} [limit] The length to truncate results to.
38317     * @returns {Array} Returns the string segments.
38318     * @example
38319     *
38320     * _.split('a-b-c', '-', 2);
38321     * // => ['a', 'b']
38322     */
38323    function split(string, separator, limit) {
38324      if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {
38325        separator = limit = undefined;
38326      }
38327      limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;
38328      if (!limit) {
38329        return [];
38330      }
38331      string = toString(string);
38332      if (string && (
38333            typeof separator == 'string' ||
38334            (separator != null && !isRegExp(separator))
38335          )) {
38336        separator = baseToString(separator);
38337        if (!separator && hasUnicode(string)) {
38338          return castSlice(stringToArray(string), 0, limit);
38339        }
38340      }
38341      return string.split(separator, limit);
38342    }
38343
38344    /**
38345     * Converts `string` to
38346     * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).
38347     *
38348     * @static
38349     * @memberOf _
38350     * @since 3.1.0
38351     * @category String
38352     * @param {string} [string=''] The string to convert.
38353     * @returns {string} Returns the start cased string.
38354     * @example
38355     *
38356     * _.startCase('--foo-bar--');
38357     * // => 'Foo Bar'
38358     *
38359     * _.startCase('fooBar');
38360     * // => 'Foo Bar'
38361     *
38362     * _.startCase('__FOO_BAR__');
38363     * // => 'FOO BAR'
38364     */
38365    var startCase = createCompounder(function(result, word, index) {
38366      return result + (index ? ' ' : '') + upperFirst(word);
38367    });
38368
38369    /**
38370     * Checks if `string` starts with the given target string.
38371     *
38372     * @static
38373     * @memberOf _
38374     * @since 3.0.0
38375     * @category String
38376     * @param {string} [string=''] The string to inspect.
38377     * @param {string} [target] The string to search for.
38378     * @param {number} [position=0] The position to search from.
38379     * @returns {boolean} Returns `true` if `string` starts with `target`,
38380     *  else `false`.
38381     * @example
38382     *
38383     * _.startsWith('abc', 'a');
38384     * // => true
38385     *
38386     * _.startsWith('abc', 'b');
38387     * // => false
38388     *
38389     * _.startsWith('abc', 'b', 1);
38390     * // => true
38391     */
38392    function startsWith(string, target, position) {
38393      string = toString(string);
38394      position = position == null
38395        ? 0
38396        : baseClamp(toInteger(position), 0, string.length);
38397
38398      target = baseToString(target);
38399      return string.slice(position, position + target.length) == target;
38400    }
38401
38402    /**
38403     * Creates a compiled template function that can interpolate data properties
38404     * in "interpolate" delimiters, HTML-escape interpolated data properties in
38405     * "escape" delimiters, and execute JavaScript in "evaluate" delimiters. Data
38406     * properties may be accessed as free variables in the template. If a setting
38407     * object is given, it takes precedence over `_.templateSettings` values.
38408     *
38409     * **Note:** In the development build `_.template` utilizes
38410     * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)
38411     * for easier debugging.
38412     *
38413     * For more information on precompiling templates see
38414     * [lodash's custom builds documentation](https://lodash.com/custom-builds).
38415     *
38416     * For more information on Chrome extension sandboxes see
38417     * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).
38418     *
38419     * @static
38420     * @since 0.1.0
38421     * @memberOf _
38422     * @category String
38423     * @param {string} [string=''] The template string.
38424     * @param {Object} [options={}] The options object.
38425     * @param {RegExp} [options.escape=_.templateSettings.escape]
38426     *  The HTML "escape" delimiter.
38427     * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]
38428     *  The "evaluate" delimiter.
38429     * @param {Object} [options.imports=_.templateSettings.imports]
38430     *  An object to import into the template as free variables.
38431     * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]
38432     *  The "interpolate" delimiter.
38433     * @param {string} [options.sourceURL='lodash.templateSources[n]']
38434     *  The sourceURL of the compiled template.
38435     * @param {string} [options.variable='obj']
38436     *  The data object variable name.
38437     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
38438     * @returns {Function} Returns the compiled template function.
38439     * @example
38440     *
38441     * // Use the "interpolate" delimiter to create a compiled template.
38442     * var compiled = _.template('hello <%= user %>!');
38443     * compiled({ 'user': 'fred' });
38444     * // => 'hello fred!'
38445     *
38446     * // Use the HTML "escape" delimiter to escape data property values.
38447     * var compiled = _.template('<b><%- value %></b>');
38448     * compiled({ 'value': '<script>' });
38449     * // => '<b>&lt;script&gt;</b>'
38450     *
38451     * // Use the "evaluate" delimiter to execute JavaScript and generate HTML.
38452     * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');
38453     * compiled({ 'users': ['fred', 'barney'] });
38454     * // => '<li>fred</li><li>barney</li>'
38455     *
38456     * // Use the internal `print` function in "evaluate" delimiters.
38457     * var compiled = _.template('<% print("hello " + user); %>!');
38458     * compiled({ 'user': 'barney' });
38459     * // => 'hello barney!'
38460     *
38461     * // Use the ES template literal delimiter as an "interpolate" delimiter.
38462     * // Disable support by replacing the "interpolate" delimiter.
38463     * var compiled = _.template('hello ${ user }!');
38464     * compiled({ 'user': 'pebbles' });
38465     * // => 'hello pebbles!'
38466     *
38467     * // Use backslashes to treat delimiters as plain text.
38468     * var compiled = _.template('<%= "\\<%- value %\\>" %>');
38469     * compiled({ 'value': 'ignored' });
38470     * // => '<%- value %>'
38471     *
38472     * // Use the `imports` option to import `jQuery` as `jq`.
38473     * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';
38474     * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });
38475     * compiled({ 'users': ['fred', 'barney'] });
38476     * // => '<li>fred</li><li>barney</li>'
38477     *
38478     * // Use the `sourceURL` option to specify a custom sourceURL for the template.
38479     * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });
38480     * compiled(data);
38481     * // => Find the source of "greeting.jst" under the Sources tab or Resources panel of the web inspector.
38482     *
38483     * // Use the `variable` option to ensure a with-statement isn't used in the compiled template.
38484     * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });
38485     * compiled.source;
38486     * // => function(data) {
38487     * //   var __t, __p = '';
38488     * //   __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';
38489     * //   return __p;
38490     * // }
38491     *
38492     * // Use custom template delimiters.
38493     * _.templateSettings.interpolate = /{{([\s\S]+?)}}/g;
38494     * var compiled = _.template('hello {{ user }}!');
38495     * compiled({ 'user': 'mustache' });
38496     * // => 'hello mustache!'
38497     *
38498     * // Use the `source` property to inline compiled templates for meaningful
38499     * // line numbers in error messages and stack traces.
38500     * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\
38501     *   var JST = {\
38502     *     "main": ' + _.template(mainText).source + '\
38503     *   };\
38504     * ');
38505     */
38506    function template(string, options, guard) {
38507      // Based on John Resig's `tmpl` implementation
38508      // (http://ejohn.org/blog/javascript-micro-templating/)
38509      // and Laura Doktorova's doT.js (https://github.com/olado/doT).
38510      var settings = lodash.templateSettings;
38511
38512      if (guard && isIterateeCall(string, options, guard)) {
38513        options = undefined;
38514      }
38515      string = toString(string);
38516      options = assignInWith({}, options, settings, customDefaultsAssignIn);
38517
38518      var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn),
38519          importsKeys = keys(imports),
38520          importsValues = baseValues(imports, importsKeys);
38521
38522      var isEscaping,
38523          isEvaluating,
38524          index = 0,
38525          interpolate = options.interpolate || reNoMatch,
38526          source = "__p += '";
38527
38528      // Compile the regexp to match each delimiter.
38529      var reDelimiters = RegExp(
38530        (options.escape || reNoMatch).source + '|' +
38531        interpolate.source + '|' +
38532        (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +
38533        (options.evaluate || reNoMatch).source + '|$'
38534      , 'g');
38535
38536      // Use a sourceURL for easier debugging.
38537      // The sourceURL gets injected into the source that's eval-ed, so be careful
38538      // to normalize all kinds of whitespace, so e.g. newlines (and unicode versions of it) can't sneak in
38539      // and escape the comment, thus injecting code that gets evaled.
38540      var sourceURL = '//# sourceURL=' +
38541        (hasOwnProperty.call(options, 'sourceURL')
38542          ? (options.sourceURL + '').replace(/\s/g, ' ')
38543          : ('lodash.templateSources[' + (++templateCounter) + ']')
38544        ) + '\n';
38545
38546      string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {
38547        interpolateValue || (interpolateValue = esTemplateValue);
38548
38549        // Escape characters that can't be included in string literals.
38550        source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);
38551
38552        // Replace delimiters with snippets.
38553        if (escapeValue) {
38554          isEscaping = true;
38555          source += "' +\n__e(" + escapeValue + ") +\n'";
38556        }
38557        if (evaluateValue) {
38558          isEvaluating = true;
38559          source += "';\n" + evaluateValue + ";\n__p += '";
38560        }
38561        if (interpolateValue) {
38562          source += "' +\n((__t = (" + interpolateValue + ")) == null ? '' : __t) +\n'";
38563        }
38564        index = offset + match.length;
38565
38566        // The JS engine embedded in Adobe products needs `match` returned in
38567        // order to produce the correct `offset` value.
38568        return match;
38569      });
38570
38571      source += "';\n";
38572
38573      // If `variable` is not specified wrap a with-statement around the generated
38574      // code to add the data object to the top of the scope chain.
38575      var variable = hasOwnProperty.call(options, 'variable') && options.variable;
38576      if (!variable) {
38577        source = 'with (obj) {\n' + source + '\n}\n';
38578      }
38579      // Throw an error if a forbidden character was found in `variable`, to prevent
38580      // potential command injection attacks.
38581      else if (reForbiddenIdentifierChars.test(variable)) {
38582        throw new Error(INVALID_TEMPL_VAR_ERROR_TEXT);
38583      }
38584
38585      // Cleanup code by stripping empty strings.
38586      source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)
38587        .replace(reEmptyStringMiddle, '$1')
38588        .replace(reEmptyStringTrailing, '$1;');
38589
38590      // Frame code as the function body.
38591      source = 'function(' + (variable || 'obj') + ') {\n' +
38592        (variable
38593          ? ''
38594          : 'obj || (obj = {});\n'
38595        ) +
38596        "var __t, __p = ''" +
38597        (isEscaping
38598           ? ', __e = _.escape'
38599           : ''
38600        ) +
38601        (isEvaluating
38602          ? ', __j = Array.prototype.join;\n' +
38603            "function print() { __p += __j.call(arguments, '') }\n"
38604          : ';\n'
38605        ) +
38606        source +
38607        'return __p\n}';
38608
38609      var result = attempt(function() {
38610        return Function(importsKeys, sourceURL + 'return ' + source)
38611          .apply(undefined, importsValues);
38612      });
38613
38614      // Provide the compiled function's source by its `toString` method or
38615      // the `source` property as a convenience for inlining compiled templates.
38616      result.source = source;
38617      if (isError(result)) {
38618        throw result;
38619      }
38620      return result;
38621    }
38622
38623    /**
38624     * Converts `string`, as a whole, to lower case just like
38625     * [String#toLowerCase](https://mdn.io/toLowerCase).
38626     *
38627     * @static
38628     * @memberOf _
38629     * @since 4.0.0
38630     * @category String
38631     * @param {string} [string=''] The string to convert.
38632     * @returns {string} Returns the lower cased string.
38633     * @example
38634     *
38635     * _.toLower('--Foo-Bar--');
38636     * // => '--foo-bar--'
38637     *
38638     * _.toLower('fooBar');
38639     * // => 'foobar'
38640     *
38641     * _.toLower('__FOO_BAR__');
38642     * // => '__foo_bar__'
38643     */
38644    function toLower(value) {
38645      return toString(value).toLowerCase();
38646    }
38647
38648    /**
38649     * Converts `string`, as a whole, to upper case just like
38650     * [String#toUpperCase](https://mdn.io/toUpperCase).
38651     *
38652     * @static
38653     * @memberOf _
38654     * @since 4.0.0
38655     * @category String
38656     * @param {string} [string=''] The string to convert.
38657     * @returns {string} Returns the upper cased string.
38658     * @example
38659     *
38660     * _.toUpper('--foo-bar--');
38661     * // => '--FOO-BAR--'
38662     *
38663     * _.toUpper('fooBar');
38664     * // => 'FOOBAR'
38665     *
38666     * _.toUpper('__foo_bar__');
38667     * // => '__FOO_BAR__'
38668     */
38669    function toUpper(value) {
38670      return toString(value).toUpperCase();
38671    }
38672
38673    /**
38674     * Removes leading and trailing whitespace or specified characters from `string`.
38675     *
38676     * @static
38677     * @memberOf _
38678     * @since 3.0.0
38679     * @category String
38680     * @param {string} [string=''] The string to trim.
38681     * @param {string} [chars=whitespace] The characters to trim.
38682     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
38683     * @returns {string} Returns the trimmed string.
38684     * @example
38685     *
38686     * _.trim('  abc  ');
38687     * // => 'abc'
38688     *
38689     * _.trim('-_-abc-_-', '_-');
38690     * // => 'abc'
38691     *
38692     * _.map(['  foo  ', '  bar  '], _.trim);
38693     * // => ['foo', 'bar']
38694     */
38695    function trim(string, chars, guard) {
38696      string = toString(string);
38697      if (string && (guard || chars === undefined)) {
38698        return baseTrim(string);
38699      }
38700      if (!string || !(chars = baseToString(chars))) {
38701        return string;
38702      }
38703      var strSymbols = stringToArray(string),
38704          chrSymbols = stringToArray(chars),
38705          start = charsStartIndex(strSymbols, chrSymbols),
38706          end = charsEndIndex(strSymbols, chrSymbols) + 1;
38707
38708      return castSlice(strSymbols, start, end).join('');
38709    }
38710
38711    /**
38712     * Removes trailing whitespace or specified characters from `string`.
38713     *
38714     * @static
38715     * @memberOf _
38716     * @since 4.0.0
38717     * @category String
38718     * @param {string} [string=''] The string to trim.
38719     * @param {string} [chars=whitespace] The characters to trim.
38720     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
38721     * @returns {string} Returns the trimmed string.
38722     * @example
38723     *
38724     * _.trimEnd('  abc  ');
38725     * // => '  abc'
38726     *
38727     * _.trimEnd('-_-abc-_-', '_-');
38728     * // => '-_-abc'
38729     */
38730    function trimEnd(string, chars, guard) {
38731      string = toString(string);
38732      if (string && (guard || chars === undefined)) {
38733        return string.slice(0, trimmedEndIndex(string) + 1);
38734      }
38735      if (!string || !(chars = baseToString(chars))) {
38736        return string;
38737      }
38738      var strSymbols = stringToArray(string),
38739          end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;
38740
38741      return castSlice(strSymbols, 0, end).join('');
38742    }
38743
38744    /**
38745     * Removes leading whitespace or specified characters from `string`.
38746     *
38747     * @static
38748     * @memberOf _
38749     * @since 4.0.0
38750     * @category String
38751     * @param {string} [string=''] The string to trim.
38752     * @param {string} [chars=whitespace] The characters to trim.
38753     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
38754     * @returns {string} Returns the trimmed string.
38755     * @example
38756     *
38757     * _.trimStart('  abc  ');
38758     * // => 'abc  '
38759     *
38760     * _.trimStart('-_-abc-_-', '_-');
38761     * // => 'abc-_-'
38762     */
38763    function trimStart(string, chars, guard) {
38764      string = toString(string);
38765      if (string && (guard || chars === undefined)) {
38766        return string.replace(reTrimStart, '');
38767      }
38768      if (!string || !(chars = baseToString(chars))) {
38769        return string;
38770      }
38771      var strSymbols = stringToArray(string),
38772          start = charsStartIndex(strSymbols, stringToArray(chars));
38773
38774      return castSlice(strSymbols, start).join('');
38775    }
38776
38777    /**
38778     * Truncates `string` if it's longer than the given maximum string length.
38779     * The last characters of the truncated string are replaced with the omission
38780     * string which defaults to "...".
38781     *
38782     * @static
38783     * @memberOf _
38784     * @since 4.0.0
38785     * @category String
38786     * @param {string} [string=''] The string to truncate.
38787     * @param {Object} [options={}] The options object.
38788     * @param {number} [options.length=30] The maximum string length.
38789     * @param {string} [options.omission='...'] The string to indicate text is omitted.
38790     * @param {RegExp|string} [options.separator] The separator pattern to truncate to.
38791     * @returns {string} Returns the truncated string.
38792     * @example
38793     *
38794     * _.truncate('hi-diddly-ho there, neighborino');
38795     * // => 'hi-diddly-ho there, neighbo...'
38796     *
38797     * _.truncate('hi-diddly-ho there, neighborino', {
38798     *   'length': 24,
38799     *   'separator': ' '
38800     * });
38801     * // => 'hi-diddly-ho there,...'
38802     *
38803     * _.truncate('hi-diddly-ho there, neighborino', {
38804     *   'length': 24,
38805     *   'separator': /,? +/
38806     * });
38807     * // => 'hi-diddly-ho there...'
38808     *
38809     * _.truncate('hi-diddly-ho there, neighborino', {
38810     *   'omission': ' [...]'
38811     * });
38812     * // => 'hi-diddly-ho there, neig [...]'
38813     */
38814    function truncate(string, options) {
38815      var length = DEFAULT_TRUNC_LENGTH,
38816          omission = DEFAULT_TRUNC_OMISSION;
38817
38818      if (isObject(options)) {
38819        var separator = 'separator' in options ? options.separator : separator;
38820        length = 'length' in options ? toInteger(options.length) : length;
38821        omission = 'omission' in options ? baseToString(options.omission) : omission;
38822      }
38823      string = toString(string);
38824
38825      var strLength = string.length;
38826      if (hasUnicode(string)) {
38827        var strSymbols = stringToArray(string);
38828        strLength = strSymbols.length;
38829      }
38830      if (length >= strLength) {
38831        return string;
38832      }
38833      var end = length - stringSize(omission);
38834      if (end < 1) {
38835        return omission;
38836      }
38837      var result = strSymbols
38838        ? castSlice(strSymbols, 0, end).join('')
38839        : string.slice(0, end);
38840
38841      if (separator === undefined) {
38842        return result + omission;
38843      }
38844      if (strSymbols) {
38845        end += (result.length - end);
38846      }
38847      if (isRegExp(separator)) {
38848        if (string.slice(end).search(separator)) {
38849          var match,
38850              substring = result;
38851
38852          if (!separator.global) {
38853            separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');
38854          }
38855          separator.lastIndex = 0;
38856          while ((match = separator.exec(substring))) {
38857            var newEnd = match.index;
38858          }
38859          result = result.slice(0, newEnd === undefined ? end : newEnd);
38860        }
38861      } else if (string.indexOf(baseToString(separator), end) != end) {
38862        var index = result.lastIndexOf(separator);
38863        if (index > -1) {
38864          result = result.slice(0, index);
38865        }
38866      }
38867      return result + omission;
38868    }
38869
38870    /**
38871     * The inverse of `_.escape`; this method converts the HTML entities
38872     * `&amp;`, `&lt;`, `&gt;`, `&quot;`, and `&#39;` in `string` to
38873     * their corresponding characters.
38874     *
38875     * **Note:** No other HTML entities are unescaped. To unescape additional
38876     * HTML entities use a third-party library like [_he_](https://mths.be/he).
38877     *
38878     * @static
38879     * @memberOf _
38880     * @since 0.6.0
38881     * @category String
38882     * @param {string} [string=''] The string to unescape.
38883     * @returns {string} Returns the unescaped string.
38884     * @example
38885     *
38886     * _.unescape('fred, barney, &amp; pebbles');
38887     * // => 'fred, barney, & pebbles'
38888     */
38889    function unescape(string) {
38890      string = toString(string);
38891      return (string && reHasEscapedHtml.test(string))
38892        ? string.replace(reEscapedHtml, unescapeHtmlChar)
38893        : string;
38894    }
38895
38896    /**
38897     * Converts `string`, as space separated words, to upper case.
38898     *
38899     * @static
38900     * @memberOf _
38901     * @since 4.0.0
38902     * @category String
38903     * @param {string} [string=''] The string to convert.
38904     * @returns {string} Returns the upper cased string.
38905     * @example
38906     *
38907     * _.upperCase('--foo-bar');
38908     * // => 'FOO BAR'
38909     *
38910     * _.upperCase('fooBar');
38911     * // => 'FOO BAR'
38912     *
38913     * _.upperCase('__foo_bar__');
38914     * // => 'FOO BAR'
38915     */
38916    var upperCase = createCompounder(function(result, word, index) {
38917      return result + (index ? ' ' : '') + word.toUpperCase();
38918    });
38919
38920    /**
38921     * Converts the first character of `string` to upper case.
38922     *
38923     * @static
38924     * @memberOf _
38925     * @since 4.0.0
38926     * @category String
38927     * @param {string} [string=''] The string to convert.
38928     * @returns {string} Returns the converted string.
38929     * @example
38930     *
38931     * _.upperFirst('fred');
38932     * // => 'Fred'
38933     *
38934     * _.upperFirst('FRED');
38935     * // => 'FRED'
38936     */
38937    var upperFirst = createCaseFirst('toUpperCase');
38938
38939    /**
38940     * Splits `string` into an array of its words.
38941     *
38942     * @static
38943     * @memberOf _
38944     * @since 3.0.0
38945     * @category String
38946     * @param {string} [string=''] The string to inspect.
38947     * @param {RegExp|string} [pattern] The pattern to match words.
38948     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
38949     * @returns {Array} Returns the words of `string`.
38950     * @example
38951     *
38952     * _.words('fred, barney, & pebbles');
38953     * // => ['fred', 'barney', 'pebbles']
38954     *
38955     * _.words('fred, barney, & pebbles', /[^, ]+/g);
38956     * // => ['fred', 'barney', '&', 'pebbles']
38957     */
38958    function words(string, pattern, guard) {
38959      string = toString(string);
38960      pattern = guard ? undefined : pattern;
38961
38962      if (pattern === undefined) {
38963        return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);
38964      }
38965      return string.match(pattern) || [];
38966    }
38967
38968    /*------------------------------------------------------------------------*/
38969
38970    /**
38971     * Attempts to invoke `func`, returning either the result or the caught error
38972     * object. Any additional arguments are provided to `func` when it's invoked.
38973     *
38974     * @static
38975     * @memberOf _
38976     * @since 3.0.0
38977     * @category Util
38978     * @param {Function} func The function to attempt.
38979     * @param {...*} [args] The arguments to invoke `func` with.
38980     * @returns {*} Returns the `func` result or error object.
38981     * @example
38982     *
38983     * // Avoid throwing errors for invalid selectors.
38984     * var elements = _.attempt(function(selector) {
38985     *   return document.querySelectorAll(selector);
38986     * }, '>_>');
38987     *
38988     * if (_.isError(elements)) {
38989     *   elements = [];
38990     * }
38991     */
38992    var attempt = baseRest(function(func, args) {
38993      try {
38994        return apply(func, undefined, args);
38995      } catch (e) {
38996        return isError(e) ? e : new Error(e);
38997      }
38998    });
38999
39000    /**
39001     * Binds methods of an object to the object itself, overwriting the existing
39002     * method.
39003     *
39004     * **Note:** This method doesn't set the "length" property of bound functions.
39005     *
39006     * @static
39007     * @since 0.1.0
39008     * @memberOf _
39009     * @category Util
39010     * @param {Object} object The object to bind and assign the bound methods to.
39011     * @param {...(string|string[])} methodNames The object method names to bind.
39012     * @returns {Object} Returns `object`.
39013     * @example
39014     *
39015     * var view = {
39016     *   'label': 'docs',
39017     *   'click': function() {
39018     *     console.log('clicked ' + this.label);
39019     *   }
39020     * };
39021     *
39022     * _.bindAll(view, ['click']);
39023     * jQuery(element).on('click', view.click);
39024     * // => Logs 'clicked docs' when clicked.
39025     */
39026    var bindAll = flatRest(function(object, methodNames) {
39027      arrayEach(methodNames, function(key) {
39028        key = toKey(key);
39029        baseAssignValue(object, key, bind(object[key], object));
39030      });
39031      return object;
39032    });
39033
39034    /**
39035     * Creates a function that iterates over `pairs` and invokes the corresponding
39036     * function of the first predicate to return truthy. The predicate-function
39037     * pairs are invoked with the `this` binding and arguments of the created
39038     * function.
39039     *
39040     * @static
39041     * @memberOf _
39042     * @since 4.0.0
39043     * @category Util
39044     * @param {Array} pairs The predicate-function pairs.
39045     * @returns {Function} Returns the new composite function.
39046     * @example
39047     *
39048     * var func = _.cond([
39049     *   [_.matches({ 'a': 1 }),           _.constant('matches A')],
39050     *   [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],
39051     *   [_.stubTrue,                      _.constant('no match')]
39052     * ]);
39053     *
39054     * func({ 'a': 1, 'b': 2 });
39055     * // => 'matches A'
39056     *
39057     * func({ 'a': 0, 'b': 1 });
39058     * // => 'matches B'
39059     *
39060     * func({ 'a': '1', 'b': '2' });
39061     * // => 'no match'
39062     */
39063    function cond(pairs) {
39064      var length = pairs == null ? 0 : pairs.length,
39065          toIteratee = getIteratee();
39066
39067      pairs = !length ? [] : arrayMap(pairs, function(pair) {
39068        if (typeof pair[1] != 'function') {
39069          throw new TypeError(FUNC_ERROR_TEXT);
39070        }
39071        return [toIteratee(pair[0]), pair[1]];
39072      });
39073
39074      return baseRest(function(args) {
39075        var index = -1;
39076        while (++index < length) {
39077          var pair = pairs[index];
39078          if (apply(pair[0], this, args)) {
39079            return apply(pair[1], this, args);
39080          }
39081        }
39082      });
39083    }
39084
39085    /**
39086     * Creates a function that invokes the predicate properties of `source` with
39087     * the corresponding property values of a given object, returning `true` if
39088     * all predicates return truthy, else `false`.
39089     *
39090     * **Note:** The created function is equivalent to `_.conformsTo` with
39091     * `source` partially applied.
39092     *
39093     * @static
39094     * @memberOf _
39095     * @since 4.0.0
39096     * @category Util
39097     * @param {Object} source The object of property predicates to conform to.
39098     * @returns {Function} Returns the new spec function.
39099     * @example
39100     *
39101     * var objects = [
39102     *   { 'a': 2, 'b': 1 },
39103     *   { 'a': 1, 'b': 2 }
39104     * ];
39105     *
39106     * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));
39107     * // => [{ 'a': 1, 'b': 2 }]
39108     */
39109    function conforms(source) {
39110      return baseConforms(baseClone(source, CLONE_DEEP_FLAG));
39111    }
39112
39113    /**
39114     * Creates a function that returns `value`.
39115     *
39116     * @static
39117     * @memberOf _
39118     * @since 2.4.0
39119     * @category Util
39120     * @param {*} value The value to return from the new function.
39121     * @returns {Function} Returns the new constant function.
39122     * @example
39123     *
39124     * var objects = _.times(2, _.constant({ 'a': 1 }));
39125     *
39126     * console.log(objects);
39127     * // => [{ 'a': 1 }, { 'a': 1 }]
39128     *
39129     * console.log(objects[0] === objects[1]);
39130     * // => true
39131     */
39132    function constant(value) {
39133      return function() {
39134        return value;
39135      };
39136    }
39137
39138    /**
39139     * Checks `value` to determine whether a default value should be returned in
39140     * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,
39141     * or `undefined`.
39142     *
39143     * @static
39144     * @memberOf _
39145     * @since 4.14.0
39146     * @category Util
39147     * @param {*} value The value to check.
39148     * @param {*} defaultValue The default value.
39149     * @returns {*} Returns the resolved value.
39150     * @example
39151     *
39152     * _.defaultTo(1, 10);
39153     * // => 1
39154     *
39155     * _.defaultTo(undefined, 10);
39156     * // => 10
39157     */
39158    function defaultTo(value, defaultValue) {
39159      return (value == null || value !== value) ? defaultValue : value;
39160    }
39161
39162    /**
39163     * Creates a function that returns the result of invoking the given functions
39164     * with the `this` binding of the created function, where each successive
39165     * invocation is supplied the return value of the previous.
39166     *
39167     * @static
39168     * @memberOf _
39169     * @since 3.0.0
39170     * @category Util
39171     * @param {...(Function|Function[])} [funcs] The functions to invoke.
39172     * @returns {Function} Returns the new composite function.
39173     * @see _.flowRight
39174     * @example
39175     *
39176     * function square(n) {
39177     *   return n * n;
39178     * }
39179     *
39180     * var addSquare = _.flow([_.add, square]);
39181     * addSquare(1, 2);
39182     * // => 9
39183     */
39184    var flow = createFlow();
39185
39186    /**
39187     * This method is like `_.flow` except that it creates a function that
39188     * invokes the given functions from right to left.
39189     *
39190     * @static
39191     * @since 3.0.0
39192     * @memberOf _
39193     * @category Util
39194     * @param {...(Function|Function[])} [funcs] The functions to invoke.
39195     * @returns {Function} Returns the new composite function.
39196     * @see _.flow
39197     * @example
39198     *
39199     * function square(n) {
39200     *   return n * n;
39201     * }
39202     *
39203     * var addSquare = _.flowRight([square, _.add]);
39204     * addSquare(1, 2);
39205     * // => 9
39206     */
39207    var flowRight = createFlow(true);
39208
39209    /**
39210     * This method returns the first argument it receives.
39211     *
39212     * @static
39213     * @since 0.1.0
39214     * @memberOf _
39215     * @category Util
39216     * @param {*} value Any value.
39217     * @returns {*} Returns `value`.
39218     * @example
39219     *
39220     * var object = { 'a': 1 };
39221     *
39222     * console.log(_.identity(object) === object);
39223     * // => true
39224     */
39225    function identity(value) {
39226      return value;
39227    }
39228
39229    /**
39230     * Creates a function that invokes `func` with the arguments of the created
39231     * function. If `func` is a property name, the created function returns the
39232     * property value for a given element. If `func` is an array or object, the
39233     * created function returns `true` for elements that contain the equivalent
39234     * source properties, otherwise it returns `false`.
39235     *
39236     * @static
39237     * @since 4.0.0
39238     * @memberOf _
39239     * @category Util
39240     * @param {*} [func=_.identity] The value to convert to a callback.
39241     * @returns {Function} Returns the callback.
39242     * @example
39243     *
39244     * var users = [
39245     *   { 'user': 'barney', 'age': 36, 'active': true },
39246     *   { 'user': 'fred',   'age': 40, 'active': false }
39247     * ];
39248     *
39249     * // The `_.matches` iteratee shorthand.
39250     * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));
39251     * // => [{ 'user': 'barney', 'age': 36, 'active': true }]
39252     *
39253     * // The `_.matchesProperty` iteratee shorthand.
39254     * _.filter(users, _.iteratee(['user', 'fred']));
39255     * // => [{ 'user': 'fred', 'age': 40 }]
39256     *
39257     * // The `_.property` iteratee shorthand.
39258     * _.map(users, _.iteratee('user'));
39259     * // => ['barney', 'fred']
39260     *
39261     * // Create custom iteratee shorthands.
39262     * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {
39263     *   return !_.isRegExp(func) ? iteratee(func) : function(string) {
39264     *     return func.test(string);
39265     *   };
39266     * });
39267     *
39268     * _.filter(['abc', 'def'], /ef/);
39269     * // => ['def']
39270     */
39271    function iteratee(func) {
39272      return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));
39273    }
39274
39275    /**
39276     * Creates a function that performs a partial deep comparison between a given
39277     * object and `source`, returning `true` if the given object has equivalent
39278     * property values, else `false`.
39279     *
39280     * **Note:** The created function is equivalent to `_.isMatch` with `source`
39281     * partially applied.
39282     *
39283     * Partial comparisons will match empty array and empty object `source`
39284     * values against any array or object value, respectively. See `_.isEqual`
39285     * for a list of supported value comparisons.
39286     *
39287     * **Note:** Multiple values can be checked by combining several matchers
39288     * using `_.overSome`
39289     *
39290     * @static
39291     * @memberOf _
39292     * @since 3.0.0
39293     * @category Util
39294     * @param {Object} source The object of property values to match.
39295     * @returns {Function} Returns the new spec function.
39296     * @example
39297     *
39298     * var objects = [
39299     *   { 'a': 1, 'b': 2, 'c': 3 },
39300     *   { 'a': 4, 'b': 5, 'c': 6 }
39301     * ];
39302     *
39303     * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));
39304     * // => [{ 'a': 4, 'b': 5, 'c': 6 }]
39305     *
39306     * // Checking for several possible values
39307     * _.filter(objects, _.overSome([_.matches({ 'a': 1 }), _.matches({ 'a': 4 })]));
39308     * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]
39309     */
39310    function matches(source) {
39311      return baseMatches(baseClone(source, CLONE_DEEP_FLAG));
39312    }
39313
39314    /**
39315     * Creates a function that performs a partial deep comparison between the
39316     * value at `path` of a given object to `srcValue`, returning `true` if the
39317     * object value is equivalent, else `false`.
39318     *
39319     * **Note:** Partial comparisons will match empty array and empty object
39320     * `srcValue` values against any array or object value, respectively. See
39321     * `_.isEqual` for a list of supported value comparisons.
39322     *
39323     * **Note:** Multiple values can be checked by combining several matchers
39324     * using `_.overSome`
39325     *
39326     * @static
39327     * @memberOf _
39328     * @since 3.2.0
39329     * @category Util
39330     * @param {Array|string} path The path of the property to get.
39331     * @param {*} srcValue The value to match.
39332     * @returns {Function} Returns the new spec function.
39333     * @example
39334     *
39335     * var objects = [
39336     *   { 'a': 1, 'b': 2, 'c': 3 },
39337     *   { 'a': 4, 'b': 5, 'c': 6 }
39338     * ];
39339     *
39340     * _.find(objects, _.matchesProperty('a', 4));
39341     * // => { 'a': 4, 'b': 5, 'c': 6 }
39342     *
39343     * // Checking for several possible values
39344     * _.filter(objects, _.overSome([_.matchesProperty('a', 1), _.matchesProperty('a', 4)]));
39345     * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]
39346     */
39347    function matchesProperty(path, srcValue) {
39348      return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));
39349    }
39350
39351    /**
39352     * Creates a function that invokes the method at `path` of a given object.
39353     * Any additional arguments are provided to the invoked method.
39354     *
39355     * @static
39356     * @memberOf _
39357     * @since 3.7.0
39358     * @category Util
39359     * @param {Array|string} path The path of the method to invoke.
39360     * @param {...*} [args] The arguments to invoke the method with.
39361     * @returns {Function} Returns the new invoker function.
39362     * @example
39363     *
39364     * var objects = [
39365     *   { 'a': { 'b': _.constant(2) } },
39366     *   { 'a': { 'b': _.constant(1) } }
39367     * ];
39368     *
39369     * _.map(objects, _.method('a.b'));
39370     * // => [2, 1]
39371     *
39372     * _.map(objects, _.method(['a', 'b']));
39373     * // => [2, 1]
39374     */
39375    var method = baseRest(function(path, args) {
39376      return function(object) {
39377        return baseInvoke(object, path, args);
39378      };
39379    });
39380
39381    /**
39382     * The opposite of `_.method`; this method creates a function that invokes
39383     * the method at a given path of `object`. Any additional arguments are
39384     * provided to the invoked method.
39385     *
39386     * @static
39387     * @memberOf _
39388     * @since 3.7.0
39389     * @category Util
39390     * @param {Object} object The object to query.
39391     * @param {...*} [args] The arguments to invoke the method with.
39392     * @returns {Function} Returns the new invoker function.
39393     * @example
39394     *
39395     * var array = _.times(3, _.constant),
39396     *     object = { 'a': array, 'b': array, 'c': array };
39397     *
39398     * _.map(['a[2]', 'c[0]'], _.methodOf(object));
39399     * // => [2, 0]
39400     *
39401     * _.map([['a', '2'], ['c', '0']], _.methodOf(object));
39402     * // => [2, 0]
39403     */
39404    var methodOf = baseRest(function(object, args) {
39405      return function(path) {
39406        return baseInvoke(object, path, args);
39407      };
39408    });
39409
39410    /**
39411     * Adds all own enumerable string keyed function properties of a source
39412     * object to the destination object. If `object` is a function, then methods
39413     * are added to its prototype as well.
39414     *
39415     * **Note:** Use `_.runInContext` to create a pristine `lodash` function to
39416     * avoid conflicts caused by modifying the original.
39417     *
39418     * @static
39419     * @since 0.1.0
39420     * @memberOf _
39421     * @category Util
39422     * @param {Function|Object} [object=lodash] The destination object.
39423     * @param {Object} source The object of functions to add.
39424     * @param {Object} [options={}] The options object.
39425     * @param {boolean} [options.chain=true] Specify whether mixins are chainable.
39426     * @returns {Function|Object} Returns `object`.
39427     * @example
39428     *
39429     * function vowels(string) {
39430     *   return _.filter(string, function(v) {
39431     *     return /[aeiou]/i.test(v);
39432     *   });
39433     * }
39434     *
39435     * _.mixin({ 'vowels': vowels });
39436     * _.vowels('fred');
39437     * // => ['e']
39438     *
39439     * _('fred').vowels().value();
39440     * // => ['e']
39441     *
39442     * _.mixin({ 'vowels': vowels }, { 'chain': false });
39443     * _('fred').vowels();
39444     * // => ['e']
39445     */
39446    function mixin(object, source, options) {
39447      var props = keys(source),
39448          methodNames = baseFunctions(source, props);
39449
39450      if (options == null &&
39451          !(isObject(source) && (methodNames.length || !props.length))) {
39452        options = source;
39453        source = object;
39454        object = this;
39455        methodNames = baseFunctions(source, keys(source));
39456      }
39457      var chain = !(isObject(options) && 'chain' in options) || !!options.chain,
39458          isFunc = isFunction(object);
39459
39460      arrayEach(methodNames, function(methodName) {
39461        var func = source[methodName];
39462        object[methodName] = func;
39463        if (isFunc) {
39464          object.prototype[methodName] = function() {
39465            var chainAll = this.__chain__;
39466            if (chain || chainAll) {
39467              var result = object(this.__wrapped__),
39468                  actions = result.__actions__ = copyArray(this.__actions__);
39469
39470              actions.push({ 'func': func, 'args': arguments, 'thisArg': object });
39471              result.__chain__ = chainAll;
39472              return result;
39473            }
39474            return func.apply(object, arrayPush([this.value()], arguments));
39475          };
39476        }
39477      });
39478
39479      return object;
39480    }
39481
39482    /**
39483     * Reverts the `_` variable to its previous value and returns a reference to
39484     * the `lodash` function.
39485     *
39486     * @static
39487     * @since 0.1.0
39488     * @memberOf _
39489     * @category Util
39490     * @returns {Function} Returns the `lodash` function.
39491     * @example
39492     *
39493     * var lodash = _.noConflict();
39494     */
39495    function noConflict() {
39496      if (root._ === this) {
39497        root._ = oldDash;
39498      }
39499      return this;
39500    }
39501
39502    /**
39503     * This method returns `undefined`.
39504     *
39505     * @static
39506     * @memberOf _
39507     * @since 2.3.0
39508     * @category Util
39509     * @example
39510     *
39511     * _.times(2, _.noop);
39512     * // => [undefined, undefined]
39513     */
39514    function noop() {
39515      // No operation performed.
39516    }
39517
39518    /**
39519     * Creates a function that gets the argument at index `n`. If `n` is negative,
39520     * the nth argument from the end is returned.
39521     *
39522     * @static
39523     * @memberOf _
39524     * @since 4.0.0
39525     * @category Util
39526     * @param {number} [n=0] The index of the argument to return.
39527     * @returns {Function} Returns the new pass-thru function.
39528     * @example
39529     *
39530     * var func = _.nthArg(1);
39531     * func('a', 'b', 'c', 'd');
39532     * // => 'b'
39533     *
39534     * var func = _.nthArg(-2);
39535     * func('a', 'b', 'c', 'd');
39536     * // => 'c'
39537     */
39538    function nthArg(n) {
39539      n = toInteger(n);
39540      return baseRest(function(args) {
39541        return baseNth(args, n);
39542      });
39543    }
39544
39545    /**
39546     * Creates a function that invokes `iteratees` with the arguments it receives
39547     * and returns their results.
39548     *
39549     * @static
39550     * @memberOf _
39551     * @since 4.0.0
39552     * @category Util
39553     * @param {...(Function|Function[])} [iteratees=[_.identity]]
39554     *  The iteratees to invoke.
39555     * @returns {Function} Returns the new function.
39556     * @example
39557     *
39558     * var func = _.over([Math.max, Math.min]);
39559     *
39560     * func(1, 2, 3, 4);
39561     * // => [4, 1]
39562     */
39563    var over = createOver(arrayMap);
39564
39565    /**
39566     * Creates a function that checks if **all** of the `predicates` return
39567     * truthy when invoked with the arguments it receives.
39568     *
39569     * Following shorthands are possible for providing predicates.
39570     * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.
39571     * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.
39572     *
39573     * @static
39574     * @memberOf _
39575     * @since 4.0.0
39576     * @category Util
39577     * @param {...(Function|Function[])} [predicates=[_.identity]]
39578     *  The predicates to check.
39579     * @returns {Function} Returns the new function.
39580     * @example
39581     *
39582     * var func = _.overEvery([Boolean, isFinite]);
39583     *
39584     * func('1');
39585     * // => true
39586     *
39587     * func(null);
39588     * // => false
39589     *
39590     * func(NaN);
39591     * // => false
39592     */
39593    var overEvery = createOver(arrayEvery);
39594
39595    /**
39596     * Creates a function that checks if **any** of the `predicates` return
39597     * truthy when invoked with the arguments it receives.
39598     *
39599     * Following shorthands are possible for providing predicates.
39600     * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.
39601     * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.
39602     *
39603     * @static
39604     * @memberOf _
39605     * @since 4.0.0
39606     * @category Util
39607     * @param {...(Function|Function[])} [predicates=[_.identity]]
39608     *  The predicates to check.
39609     * @returns {Function} Returns the new function.
39610     * @example
39611     *
39612     * var func = _.overSome([Boolean, isFinite]);
39613     *
39614     * func('1');
39615     * // => true
39616     *
39617     * func(null);
39618     * // => true
39619     *
39620     * func(NaN);
39621     * // => false
39622     *
39623     * var matchesFunc = _.overSome([{ 'a': 1 }, { 'a': 2 }])
39624     * var matchesPropertyFunc = _.overSome([['a', 1], ['a', 2]])
39625     */
39626    var overSome = createOver(arraySome);
39627
39628    /**
39629     * Creates a function that returns the value at `path` of a given object.
39630     *
39631     * @static
39632     * @memberOf _
39633     * @since 2.4.0
39634     * @category Util
39635     * @param {Array|string} path The path of the property to get.
39636     * @returns {Function} Returns the new accessor function.
39637     * @example
39638     *
39639     * var objects = [
39640     *   { 'a': { 'b': 2 } },
39641     *   { 'a': { 'b': 1 } }
39642     * ];
39643     *
39644     * _.map(objects, _.property('a.b'));
39645     * // => [2, 1]
39646     *
39647     * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');
39648     * // => [1, 2]
39649     */
39650    function property(path) {
39651      return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);
39652    }
39653
39654    /**
39655     * The opposite of `_.property`; this method creates a function that returns
39656     * the value at a given path of `object`.
39657     *
39658     * @static
39659     * @memberOf _
39660     * @since 3.0.0
39661     * @category Util
39662     * @param {Object} object The object to query.
39663     * @returns {Function} Returns the new accessor function.
39664     * @example
39665     *
39666     * var array = [0, 1, 2],
39667     *     object = { 'a': array, 'b': array, 'c': array };
39668     *
39669     * _.map(['a[2]', 'c[0]'], _.propertyOf(object));
39670     * // => [2, 0]
39671     *
39672     * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));
39673     * // => [2, 0]
39674     */
39675    function propertyOf(object) {
39676      return function(path) {
39677        return object == null ? undefined : baseGet(object, path);
39678      };
39679    }
39680
39681    /**
39682     * Creates an array of numbers (positive and/or negative) progressing from
39683     * `start` up to, but not including, `end`. A step of `-1` is used if a negative
39684     * `start` is specified without an `end` or `step`. If `end` is not specified,
39685     * it's set to `start` with `start` then set to `0`.
39686     *
39687     * **Note:** JavaScript follows the IEEE-754 standard for resolving
39688     * floating-point values which can produce unexpected results.
39689     *
39690     * @static
39691     * @since 0.1.0
39692     * @memberOf _
39693     * @category Util
39694     * @param {number} [start=0] The start of the range.
39695     * @param {number} end The end of the range.
39696     * @param {number} [step=1] The value to increment or decrement by.
39697     * @returns {Array} Returns the range of numbers.
39698     * @see _.inRange, _.rangeRight
39699     * @example
39700     *
39701     * _.range(4);
39702     * // => [0, 1, 2, 3]
39703     *
39704     * _.range(-4);
39705     * // => [0, -1, -2, -3]
39706     *
39707     * _.range(1, 5);
39708     * // => [1, 2, 3, 4]
39709     *
39710     * _.range(0, 20, 5);
39711     * // => [0, 5, 10, 15]
39712     *
39713     * _.range(0, -4, -1);
39714     * // => [0, -1, -2, -3]
39715     *
39716     * _.range(1, 4, 0);
39717     * // => [1, 1, 1]
39718     *
39719     * _.range(0);
39720     * // => []
39721     */
39722    var range = createRange();
39723
39724    /**
39725     * This method is like `_.range` except that it populates values in
39726     * descending order.
39727     *
39728     * @static
39729     * @memberOf _
39730     * @since 4.0.0
39731     * @category Util
39732     * @param {number} [start=0] The start of the range.
39733     * @param {number} end The end of the range.
39734     * @param {number} [step=1] The value to increment or decrement by.
39735     * @returns {Array} Returns the range of numbers.
39736     * @see _.inRange, _.range
39737     * @example
39738     *
39739     * _.rangeRight(4);
39740     * // => [3, 2, 1, 0]
39741     *
39742     * _.rangeRight(-4);
39743     * // => [-3, -2, -1, 0]
39744     *
39745     * _.rangeRight(1, 5);
39746     * // => [4, 3, 2, 1]
39747     *
39748     * _.rangeRight(0, 20, 5);
39749     * // => [15, 10, 5, 0]
39750     *
39751     * _.rangeRight(0, -4, -1);
39752     * // => [-3, -2, -1, 0]
39753     *
39754     * _.rangeRight(1, 4, 0);
39755     * // => [1, 1, 1]
39756     *
39757     * _.rangeRight(0);
39758     * // => []
39759     */
39760    var rangeRight = createRange(true);
39761
39762    /**
39763     * This method returns a new empty array.
39764     *
39765     * @static
39766     * @memberOf _
39767     * @since 4.13.0
39768     * @category Util
39769     * @returns {Array} Returns the new empty array.
39770     * @example
39771     *
39772     * var arrays = _.times(2, _.stubArray);
39773     *
39774     * console.log(arrays);
39775     * // => [[], []]
39776     *
39777     * console.log(arrays[0] === arrays[1]);
39778     * // => false
39779     */
39780    function stubArray() {
39781      return [];
39782    }
39783
39784    /**
39785     * This method returns `false`.
39786     *
39787     * @static
39788     * @memberOf _
39789     * @since 4.13.0
39790     * @category Util
39791     * @returns {boolean} Returns `false`.
39792     * @example
39793     *
39794     * _.times(2, _.stubFalse);
39795     * // => [false, false]
39796     */
39797    function stubFalse() {
39798      return false;
39799    }
39800
39801    /**
39802     * This method returns a new empty object.
39803     *
39804     * @static
39805     * @memberOf _
39806     * @since 4.13.0
39807     * @category Util
39808     * @returns {Object} Returns the new empty object.
39809     * @example
39810     *
39811     * var objects = _.times(2, _.stubObject);
39812     *
39813     * console.log(objects);
39814     * // => [{}, {}]
39815     *
39816     * console.log(objects[0] === objects[1]);
39817     * // => false
39818     */
39819    function stubObject() {
39820      return {};
39821    }
39822
39823    /**
39824     * This method returns an empty string.
39825     *
39826     * @static
39827     * @memberOf _
39828     * @since 4.13.0
39829     * @category Util
39830     * @returns {string} Returns the empty string.
39831     * @example
39832     *
39833     * _.times(2, _.stubString);
39834     * // => ['', '']
39835     */
39836    function stubString() {
39837      return '';
39838    }
39839
39840    /**
39841     * This method returns `true`.
39842     *
39843     * @static
39844     * @memberOf _
39845     * @since 4.13.0
39846     * @category Util
39847     * @returns {boolean} Returns `true`.
39848     * @example
39849     *
39850     * _.times(2, _.stubTrue);
39851     * // => [true, true]
39852     */
39853    function stubTrue() {
39854      return true;
39855    }
39856
39857    /**
39858     * Invokes the iteratee `n` times, returning an array of the results of
39859     * each invocation. The iteratee is invoked with one argument; (index).
39860     *
39861     * @static
39862     * @since 0.1.0
39863     * @memberOf _
39864     * @category Util
39865     * @param {number} n The number of times to invoke `iteratee`.
39866     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
39867     * @returns {Array} Returns the array of results.
39868     * @example
39869     *
39870     * _.times(3, String);
39871     * // => ['0', '1', '2']
39872     *
39873     *  _.times(4, _.constant(0));
39874     * // => [0, 0, 0, 0]
39875     */
39876    function times(n, iteratee) {
39877      n = toInteger(n);
39878      if (n < 1 || n > MAX_SAFE_INTEGER) {
39879        return [];
39880      }
39881      var index = MAX_ARRAY_LENGTH,
39882          length = nativeMin(n, MAX_ARRAY_LENGTH);
39883
39884      iteratee = getIteratee(iteratee);
39885      n -= MAX_ARRAY_LENGTH;
39886
39887      var result = baseTimes(length, iteratee);
39888      while (++index < n) {
39889        iteratee(index);
39890      }
39891      return result;
39892    }
39893
39894    /**
39895     * Converts `value` to a property path array.
39896     *
39897     * @static
39898     * @memberOf _
39899     * @since 4.0.0
39900     * @category Util
39901     * @param {*} value The value to convert.
39902     * @returns {Array} Returns the new property path array.
39903     * @example
39904     *
39905     * _.toPath('a.b.c');
39906     * // => ['a', 'b', 'c']
39907     *
39908     * _.toPath('a[0].b.c');
39909     * // => ['a', '0', 'b', 'c']
39910     */
39911    function toPath(value) {
39912      if (isArray(value)) {
39913        return arrayMap(value, toKey);
39914      }
39915      return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));
39916    }
39917
39918    /**
39919     * Generates a unique ID. If `prefix` is given, the ID is appended to it.
39920     *
39921     * @static
39922     * @since 0.1.0
39923     * @memberOf _
39924     * @category Util
39925     * @param {string} [prefix=''] The value to prefix the ID with.
39926     * @returns {string} Returns the unique ID.
39927     * @example
39928     *
39929     * _.uniqueId('contact_');
39930     * // => 'contact_104'
39931     *
39932     * _.uniqueId();
39933     * // => '105'
39934     */
39935    function uniqueId(prefix) {
39936      var id = ++idCounter;
39937      return toString(prefix) + id;
39938    }
39939
39940    /*------------------------------------------------------------------------*/
39941
39942    /**
39943     * Adds two numbers.
39944     *
39945     * @static
39946     * @memberOf _
39947     * @since 3.4.0
39948     * @category Math
39949     * @param {number} augend The first number in an addition.
39950     * @param {number} addend The second number in an addition.
39951     * @returns {number} Returns the total.
39952     * @example
39953     *
39954     * _.add(6, 4);
39955     * // => 10
39956     */
39957    var add = createMathOperation(function(augend, addend) {
39958      return augend + addend;
39959    }, 0);
39960
39961    /**
39962     * Computes `number` rounded up to `precision`.
39963     *
39964     * @static
39965     * @memberOf _
39966     * @since 3.10.0
39967     * @category Math
39968     * @param {number} number The number to round up.
39969     * @param {number} [precision=0] The precision to round up to.
39970     * @returns {number} Returns the rounded up number.
39971     * @example
39972     *
39973     * _.ceil(4.006);
39974     * // => 5
39975     *
39976     * _.ceil(6.004, 2);
39977     * // => 6.01
39978     *
39979     * _.ceil(6040, -2);
39980     * // => 6100
39981     */
39982    var ceil = createRound('ceil');
39983
39984    /**
39985     * Divide two numbers.
39986     *
39987     * @static
39988     * @memberOf _
39989     * @since 4.7.0
39990     * @category Math
39991     * @param {number} dividend The first number in a division.
39992     * @param {number} divisor The second number in a division.
39993     * @returns {number} Returns the quotient.
39994     * @example
39995     *
39996     * _.divide(6, 4);
39997     * // => 1.5
39998     */
39999    var divide = createMathOperation(function(dividend, divisor) {
40000      return dividend / divisor;
40001    }, 1);
40002
40003    /**
40004     * Computes `number` rounded down to `precision`.
40005     *
40006     * @static
40007     * @memberOf _
40008     * @since 3.10.0
40009     * @category Math
40010     * @param {number} number The number to round down.
40011     * @param {number} [precision=0] The precision to round down to.
40012     * @returns {number} Returns the rounded down number.
40013     * @example
40014     *
40015     * _.floor(4.006);
40016     * // => 4
40017     *
40018     * _.floor(0.046, 2);
40019     * // => 0.04
40020     *
40021     * _.floor(4060, -2);
40022     * // => 4000
40023     */
40024    var floor = createRound('floor');
40025
40026    /**
40027     * Computes the maximum value of `array`. If `array` is empty or falsey,
40028     * `undefined` is returned.
40029     *
40030     * @static
40031     * @since 0.1.0
40032     * @memberOf _
40033     * @category Math
40034     * @param {Array} array The array to iterate over.
40035     * @returns {*} Returns the maximum value.
40036     * @example
40037     *
40038     * _.max([4, 2, 8, 6]);
40039     * // => 8
40040     *
40041     * _.max([]);
40042     * // => undefined
40043     */
40044    function max(array) {
40045      return (array && array.length)
40046        ? baseExtremum(array, identity, baseGt)
40047        : undefined;
40048    }
40049
40050    /**
40051     * This method is like `_.max` except that it accepts `iteratee` which is
40052     * invoked for each element in `array` to generate the criterion by which
40053     * the value is ranked. The iteratee is invoked with one argument: (value).
40054     *
40055     * @static
40056     * @memberOf _
40057     * @since 4.0.0
40058     * @category Math
40059     * @param {Array} array The array to iterate over.
40060     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
40061     * @returns {*} Returns the maximum value.
40062     * @example
40063     *
40064     * var objects = [{ 'n': 1 }, { 'n': 2 }];
40065     *
40066     * _.maxBy(objects, function(o) { return o.n; });
40067     * // => { 'n': 2 }
40068     *
40069     * // The `_.property` iteratee shorthand.
40070     * _.maxBy(objects, 'n');
40071     * // => { 'n': 2 }
40072     */
40073    function maxBy(array, iteratee) {
40074      return (array && array.length)
40075        ? baseExtremum(array, getIteratee(iteratee, 2), baseGt)
40076        : undefined;
40077    }
40078
40079    /**
40080     * Computes the mean of the values in `array`.
40081     *
40082     * @static
40083     * @memberOf _
40084     * @since 4.0.0
40085     * @category Math
40086     * @param {Array} array The array to iterate over.
40087     * @returns {number} Returns the mean.
40088     * @example
40089     *
40090     * _.mean([4, 2, 8, 6]);
40091     * // => 5
40092     */
40093    function mean(array) {
40094      return baseMean(array, identity);
40095    }
40096
40097    /**
40098     * This method is like `_.mean` except that it accepts `iteratee` which is
40099     * invoked for each element in `array` to generate the value to be averaged.
40100     * The iteratee is invoked with one argument: (value).
40101     *
40102     * @static
40103     * @memberOf _
40104     * @since 4.7.0
40105     * @category Math
40106     * @param {Array} array The array to iterate over.
40107     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
40108     * @returns {number} Returns the mean.
40109     * @example
40110     *
40111     * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];
40112     *
40113     * _.meanBy(objects, function(o) { return o.n; });
40114     * // => 5
40115     *
40116     * // The `_.property` iteratee shorthand.
40117     * _.meanBy(objects, 'n');
40118     * // => 5
40119     */
40120    function meanBy(array, iteratee) {
40121      return baseMean(array, getIteratee(iteratee, 2));
40122    }
40123
40124    /**
40125     * Computes the minimum value of `array`. If `array` is empty or falsey,
40126     * `undefined` is returned.
40127     *
40128     * @static
40129     * @since 0.1.0
40130     * @memberOf _
40131     * @category Math
40132     * @param {Array} array The array to iterate over.
40133     * @returns {*} Returns the minimum value.
40134     * @example
40135     *
40136     * _.min([4, 2, 8, 6]);
40137     * // => 2
40138     *
40139     * _.min([]);
40140     * // => undefined
40141     */
40142    function min(array) {
40143      return (array && array.length)
40144        ? baseExtremum(array, identity, baseLt)
40145        : undefined;
40146    }
40147
40148    /**
40149     * This method is like `_.min` except that it accepts `iteratee` which is
40150     * invoked for each element in `array` to generate the criterion by which
40151     * the value is ranked. The iteratee is invoked with one argument: (value).
40152     *
40153     * @static
40154     * @memberOf _
40155     * @since 4.0.0
40156     * @category Math
40157     * @param {Array} array The array to iterate over.
40158     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
40159     * @returns {*} Returns the minimum value.
40160     * @example
40161     *
40162     * var objects = [{ 'n': 1 }, { 'n': 2 }];
40163     *
40164     * _.minBy(objects, function(o) { return o.n; });
40165     * // => { 'n': 1 }
40166     *
40167     * // The `_.property` iteratee shorthand.
40168     * _.minBy(objects, 'n');
40169     * // => { 'n': 1 }
40170     */
40171    function minBy(array, iteratee) {
40172      return (array && array.length)
40173        ? baseExtremum(array, getIteratee(iteratee, 2), baseLt)
40174        : undefined;
40175    }
40176
40177    /**
40178     * Multiply two numbers.
40179     *
40180     * @static
40181     * @memberOf _
40182     * @since 4.7.0
40183     * @category Math
40184     * @param {number} multiplier The first number in a multiplication.
40185     * @param {number} multiplicand The second number in a multiplication.
40186     * @returns {number} Returns the product.
40187     * @example
40188     *
40189     * _.multiply(6, 4);
40190     * // => 24
40191     */
40192    var multiply = createMathOperation(function(multiplier, multiplicand) {
40193      return multiplier * multiplicand;
40194    }, 1);
40195
40196    /**
40197     * Computes `number` rounded to `precision`.
40198     *
40199     * @static
40200     * @memberOf _
40201     * @since 3.10.0
40202     * @category Math
40203     * @param {number} number The number to round.
40204     * @param {number} [precision=0] The precision to round to.
40205     * @returns {number} Returns the rounded number.
40206     * @example
40207     *
40208     * _.round(4.006);
40209     * // => 4
40210     *
40211     * _.round(4.006, 2);
40212     * // => 4.01
40213     *
40214     * _.round(4060, -2);
40215     * // => 4100
40216     */
40217    var round = createRound('round');
40218
40219    /**
40220     * Subtract two numbers.
40221     *
40222     * @static
40223     * @memberOf _
40224     * @since 4.0.0
40225     * @category Math
40226     * @param {number} minuend The first number in a subtraction.
40227     * @param {number} subtrahend The second number in a subtraction.
40228     * @returns {number} Returns the difference.
40229     * @example
40230     *
40231     * _.subtract(6, 4);
40232     * // => 2
40233     */
40234    var subtract = createMathOperation(function(minuend, subtrahend) {
40235      return minuend - subtrahend;
40236    }, 0);
40237
40238    /**
40239     * Computes the sum of the values in `array`.
40240     *
40241     * @static
40242     * @memberOf _
40243     * @since 3.4.0
40244     * @category Math
40245     * @param {Array} array The array to iterate over.
40246     * @returns {number} Returns the sum.
40247     * @example
40248     *
40249     * _.sum([4, 2, 8, 6]);
40250     * // => 20
40251     */
40252    function sum(array) {
40253      return (array && array.length)
40254        ? baseSum(array, identity)
40255        : 0;
40256    }
40257
40258    /**
40259     * This method is like `_.sum` except that it accepts `iteratee` which is
40260     * invoked for each element in `array` to generate the value to be summed.
40261     * The iteratee is invoked with one argument: (value).
40262     *
40263     * @static
40264     * @memberOf _
40265     * @since 4.0.0
40266     * @category Math
40267     * @param {Array} array The array to iterate over.
40268     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
40269     * @returns {number} Returns the sum.
40270     * @example
40271     *
40272     * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];
40273     *
40274     * _.sumBy(objects, function(o) { return o.n; });
40275     * // => 20
40276     *
40277     * // The `_.property` iteratee shorthand.
40278     * _.sumBy(objects, 'n');
40279     * // => 20
40280     */
40281    function sumBy(array, iteratee) {
40282      return (array && array.length)
40283        ? baseSum(array, getIteratee(iteratee, 2))
40284        : 0;
40285    }
40286
40287    /*------------------------------------------------------------------------*/
40288
40289    // Add methods that return wrapped values in chain sequences.
40290    lodash.after = after;
40291    lodash.ary = ary;
40292    lodash.assign = assign;
40293    lodash.assignIn = assignIn;
40294    lodash.assignInWith = assignInWith;
40295    lodash.assignWith = assignWith;
40296    lodash.at = at;
40297    lodash.before = before;
40298    lodash.bind = bind;
40299    lodash.bindAll = bindAll;
40300    lodash.bindKey = bindKey;
40301    lodash.castArray = castArray;
40302    lodash.chain = chain;
40303    lodash.chunk = chunk;
40304    lodash.compact = compact;
40305    lodash.concat = concat;
40306    lodash.cond = cond;
40307    lodash.conforms = conforms;
40308    lodash.constant = constant;
40309    lodash.countBy = countBy;
40310    lodash.create = create;
40311    lodash.curry = curry;
40312    lodash.curryRight = curryRight;
40313    lodash.debounce = debounce;
40314    lodash.defaults = defaults;
40315    lodash.defaultsDeep = defaultsDeep;
40316    lodash.defer = defer;
40317    lodash.delay = delay;
40318    lodash.difference = difference;
40319    lodash.differenceBy = differenceBy;
40320    lodash.differenceWith = differenceWith;
40321    lodash.drop = drop;
40322    lodash.dropRight = dropRight;
40323    lodash.dropRightWhile = dropRightWhile;
40324    lodash.dropWhile = dropWhile;
40325    lodash.fill = fill;
40326    lodash.filter = filter;
40327    lodash.flatMap = flatMap;
40328    lodash.flatMapDeep = flatMapDeep;
40329    lodash.flatMapDepth = flatMapDepth;
40330    lodash.flatten = flatten;
40331    lodash.flattenDeep = flattenDeep;
40332    lodash.flattenDepth = flattenDepth;
40333    lodash.flip = flip;
40334    lodash.flow = flow;
40335    lodash.flowRight = flowRight;
40336    lodash.fromPairs = fromPairs;
40337    lodash.functions = functions;
40338    lodash.functionsIn = functionsIn;
40339    lodash.groupBy = groupBy;
40340    lodash.initial = initial;
40341    lodash.intersection = intersection;
40342    lodash.intersectionBy = intersectionBy;
40343    lodash.intersectionWith = intersectionWith;
40344    lodash.invert = invert;
40345    lodash.invertBy = invertBy;
40346    lodash.invokeMap = invokeMap;
40347    lodash.iteratee = iteratee;
40348    lodash.keyBy = keyBy;
40349    lodash.keys = keys;
40350    lodash.keysIn = keysIn;
40351    lodash.map = map;
40352    lodash.mapKeys = mapKeys;
40353    lodash.mapValues = mapValues;
40354    lodash.matches = matches;
40355    lodash.matchesProperty = matchesProperty;
40356    lodash.memoize = memoize;
40357    lodash.merge = merge;
40358    lodash.mergeWith = mergeWith;
40359    lodash.method = method;
40360    lodash.methodOf = methodOf;
40361    lodash.mixin = mixin;
40362    lodash.negate = negate;
40363    lodash.nthArg = nthArg;
40364    lodash.omit = omit;
40365    lodash.omitBy = omitBy;
40366    lodash.once = once;
40367    lodash.orderBy = orderBy;
40368    lodash.over = over;
40369    lodash.overArgs = overArgs;
40370    lodash.overEvery = overEvery;
40371    lodash.overSome = overSome;
40372    lodash.partial = partial;
40373    lodash.partialRight = partialRight;
40374    lodash.partition = partition;
40375    lodash.pick = pick;
40376    lodash.pickBy = pickBy;
40377    lodash.property = property;
40378    lodash.propertyOf = propertyOf;
40379    lodash.pull = pull;
40380    lodash.pullAll = pullAll;
40381    lodash.pullAllBy = pullAllBy;
40382    lodash.pullAllWith = pullAllWith;
40383    lodash.pullAt = pullAt;
40384    lodash.range = range;
40385    lodash.rangeRight = rangeRight;
40386    lodash.rearg = rearg;
40387    lodash.reject = reject;
40388    lodash.remove = remove;
40389    lodash.rest = rest;
40390    lodash.reverse = reverse;
40391    lodash.sampleSize = sampleSize;
40392    lodash.set = set;
40393    lodash.setWith = setWith;
40394    lodash.shuffle = shuffle;
40395    lodash.slice = slice;
40396    lodash.sortBy = sortBy;
40397    lodash.sortedUniq = sortedUniq;
40398    lodash.sortedUniqBy = sortedUniqBy;
40399    lodash.split = split;
40400    lodash.spread = spread;
40401    lodash.tail = tail;
40402    lodash.take = take;
40403    lodash.takeRight = takeRight;
40404    lodash.takeRightWhile = takeRightWhile;
40405    lodash.takeWhile = takeWhile;
40406    lodash.tap = tap;
40407    lodash.throttle = throttle;
40408    lodash.thru = thru;
40409    lodash.toArray = toArray;
40410    lodash.toPairs = toPairs;
40411    lodash.toPairsIn = toPairsIn;
40412    lodash.toPath = toPath;
40413    lodash.toPlainObject = toPlainObject;
40414    lodash.transform = transform;
40415    lodash.unary = unary;
40416    lodash.union = union;
40417    lodash.unionBy = unionBy;
40418    lodash.unionWith = unionWith;
40419    lodash.uniq = uniq;
40420    lodash.uniqBy = uniqBy;
40421    lodash.uniqWith = uniqWith;
40422    lodash.unset = unset;
40423    lodash.unzip = unzip;
40424    lodash.unzipWith = unzipWith;
40425    lodash.update = update;
40426    lodash.updateWith = updateWith;
40427    lodash.values = values;
40428    lodash.valuesIn = valuesIn;
40429    lodash.without = without;
40430    lodash.words = words;
40431    lodash.wrap = wrap;
40432    lodash.xor = xor;
40433    lodash.xorBy = xorBy;
40434    lodash.xorWith = xorWith;
40435    lodash.zip = zip;
40436    lodash.zipObject = zipObject;
40437    lodash.zipObjectDeep = zipObjectDeep;
40438    lodash.zipWith = zipWith;
40439
40440    // Add aliases.
40441    lodash.entries = toPairs;
40442    lodash.entriesIn = toPairsIn;
40443    lodash.extend = assignIn;
40444    lodash.extendWith = assignInWith;
40445
40446    // Add methods to `lodash.prototype`.
40447    mixin(lodash, lodash);
40448
40449    /*------------------------------------------------------------------------*/
40450
40451    // Add methods that return unwrapped values in chain sequences.
40452    lodash.add = add;
40453    lodash.attempt = attempt;
40454    lodash.camelCase = camelCase;
40455    lodash.capitalize = capitalize;
40456    lodash.ceil = ceil;
40457    lodash.clamp = clamp;
40458    lodash.clone = clone;
40459    lodash.cloneDeep = cloneDeep;
40460    lodash.cloneDeepWith = cloneDeepWith;
40461    lodash.cloneWith = cloneWith;
40462    lodash.conformsTo = conformsTo;
40463    lodash.deburr = deburr;
40464    lodash.defaultTo = defaultTo;
40465    lodash.divide = divide;
40466    lodash.endsWith = endsWith;
40467    lodash.eq = eq;
40468    lodash.escape = escape;
40469    lodash.escapeRegExp = escapeRegExp;
40470    lodash.every = every;
40471    lodash.find = find;
40472    lodash.findIndex = findIndex;
40473    lodash.findKey = findKey;
40474    lodash.findLast = findLast;
40475    lodash.findLastIndex = findLastIndex;
40476    lodash.findLastKey = findLastKey;
40477    lodash.floor = floor;
40478    lodash.forEach = forEach;
40479    lodash.forEachRight = forEachRight;
40480    lodash.forIn = forIn;
40481    lodash.forInRight = forInRight;
40482    lodash.forOwn = forOwn;
40483    lodash.forOwnRight = forOwnRight;
40484    lodash.get = get;
40485    lodash.gt = gt;
40486    lodash.gte = gte;
40487    lodash.has = has;
40488    lodash.hasIn = hasIn;
40489    lodash.head = head;
40490    lodash.identity = identity;
40491    lodash.includes = includes;
40492    lodash.indexOf = indexOf;
40493    lodash.inRange = inRange;
40494    lodash.invoke = invoke;
40495    lodash.isArguments = isArguments;
40496    lodash.isArray = isArray;
40497    lodash.isArrayBuffer = isArrayBuffer;
40498    lodash.isArrayLike = isArrayLike;
40499    lodash.isArrayLikeObject = isArrayLikeObject;
40500    lodash.isBoolean = isBoolean;
40501    lodash.isBuffer = isBuffer;
40502    lodash.isDate = isDate;
40503    lodash.isElement = isElement;
40504    lodash.isEmpty = isEmpty;
40505    lodash.isEqual = isEqual;
40506    lodash.isEqualWith = isEqualWith;
40507    lodash.isError = isError;
40508    lodash.isFinite = isFinite;
40509    lodash.isFunction = isFunction;
40510    lodash.isInteger = isInteger;
40511    lodash.isLength = isLength;
40512    lodash.isMap = isMap;
40513    lodash.isMatch = isMatch;
40514    lodash.isMatchWith = isMatchWith;
40515    lodash.isNaN = isNaN;
40516    lodash.isNative = isNative;
40517    lodash.isNil = isNil;
40518    lodash.isNull = isNull;
40519    lodash.isNumber = isNumber;
40520    lodash.isObject = isObject;
40521    lodash.isObjectLike = isObjectLike;
40522    lodash.isPlainObject = isPlainObject;
40523    lodash.isRegExp = isRegExp;
40524    lodash.isSafeInteger = isSafeInteger;
40525    lodash.isSet = isSet;
40526    lodash.isString = isString;
40527    lodash.isSymbol = isSymbol;
40528    lodash.isTypedArray = isTypedArray;
40529    lodash.isUndefined = isUndefined;
40530    lodash.isWeakMap = isWeakMap;
40531    lodash.isWeakSet = isWeakSet;
40532    lodash.join = join;
40533    lodash.kebabCase = kebabCase;
40534    lodash.last = last;
40535    lodash.lastIndexOf = lastIndexOf;
40536    lodash.lowerCase = lowerCase;
40537    lodash.lowerFirst = lowerFirst;
40538    lodash.lt = lt;
40539    lodash.lte = lte;
40540    lodash.max = max;
40541    lodash.maxBy = maxBy;
40542    lodash.mean = mean;
40543    lodash.meanBy = meanBy;
40544    lodash.min = min;
40545    lodash.minBy = minBy;
40546    lodash.stubArray = stubArray;
40547    lodash.stubFalse = stubFalse;
40548    lodash.stubObject = stubObject;
40549    lodash.stubString = stubString;
40550    lodash.stubTrue = stubTrue;
40551    lodash.multiply = multiply;
40552    lodash.nth = nth;
40553    lodash.noConflict = noConflict;
40554    lodash.noop = noop;
40555    lodash.now = now;
40556    lodash.pad = pad;
40557    lodash.padEnd = padEnd;
40558    lodash.padStart = padStart;
40559    lodash.parseInt = parseInt;
40560    lodash.random = random;
40561    lodash.reduce = reduce;
40562    lodash.reduceRight = reduceRight;
40563    lodash.repeat = repeat;
40564    lodash.replace = replace;
40565    lodash.result = result;
40566    lodash.round = round;
40567    lodash.runInContext = runInContext;
40568    lodash.sample = sample;
40569    lodash.size = size;
40570    lodash.snakeCase = snakeCase;
40571    lodash.some = some;
40572    lodash.sortedIndex = sortedIndex;
40573    lodash.sortedIndexBy = sortedIndexBy;
40574    lodash.sortedIndexOf = sortedIndexOf;
40575    lodash.sortedLastIndex = sortedLastIndex;
40576    lodash.sortedLastIndexBy = sortedLastIndexBy;
40577    lodash.sortedLastIndexOf = sortedLastIndexOf;
40578    lodash.startCase = startCase;
40579    lodash.startsWith = startsWith;
40580    lodash.subtract = subtract;
40581    lodash.sum = sum;
40582    lodash.sumBy = sumBy;
40583    lodash.template = template;
40584    lodash.times = times;
40585    lodash.toFinite = toFinite;
40586    lodash.toInteger = toInteger;
40587    lodash.toLength = toLength;
40588    lodash.toLower = toLower;
40589    lodash.toNumber = toNumber;
40590    lodash.toSafeInteger = toSafeInteger;
40591    lodash.toString = toString;
40592    lodash.toUpper = toUpper;
40593    lodash.trim = trim;
40594    lodash.trimEnd = trimEnd;
40595    lodash.trimStart = trimStart;
40596    lodash.truncate = truncate;
40597    lodash.unescape = unescape;
40598    lodash.uniqueId = uniqueId;
40599    lodash.upperCase = upperCase;
40600    lodash.upperFirst = upperFirst;
40601
40602    // Add aliases.
40603    lodash.each = forEach;
40604    lodash.eachRight = forEachRight;
40605    lodash.first = head;
40606
40607    mixin(lodash, (function() {
40608      var source = {};
40609      baseForOwn(lodash, function(func, methodName) {
40610        if (!hasOwnProperty.call(lodash.prototype, methodName)) {
40611          source[methodName] = func;
40612        }
40613      });
40614      return source;
40615    }()), { 'chain': false });
40616
40617    /*------------------------------------------------------------------------*/
40618
40619    /**
40620     * The semantic version number.
40621     *
40622     * @static
40623     * @memberOf _
40624     * @type {string}
40625     */
40626    lodash.VERSION = VERSION;
40627
40628    // Assign default placeholders.
40629    arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) {
40630      lodash[methodName].placeholder = lodash;
40631    });
40632
40633    // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.
40634    arrayEach(['drop', 'take'], function(methodName, index) {
40635      LazyWrapper.prototype[methodName] = function(n) {
40636        n = n === undefined ? 1 : nativeMax(toInteger(n), 0);
40637
40638        var result = (this.__filtered__ && !index)
40639          ? new LazyWrapper(this)
40640          : this.clone();
40641
40642        if (result.__filtered__) {
40643          result.__takeCount__ = nativeMin(n, result.__takeCount__);
40644        } else {
40645          result.__views__.push({
40646            'size': nativeMin(n, MAX_ARRAY_LENGTH),
40647            'type': methodName + (result.__dir__ < 0 ? 'Right' : '')
40648          });
40649        }
40650        return result;
40651      };
40652
40653      LazyWrapper.prototype[methodName + 'Right'] = function(n) {
40654        return this.reverse()[methodName](n).reverse();
40655      };
40656    });
40657
40658    // Add `LazyWrapper` methods that accept an `iteratee` value.
40659    arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) {
40660      var type = index + 1,
40661          isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;
40662
40663      LazyWrapper.prototype[methodName] = function(iteratee) {
40664        var result = this.clone();
40665        result.__iteratees__.push({
40666          'iteratee': getIteratee(iteratee, 3),
40667          'type': type
40668        });
40669        result.__filtered__ = result.__filtered__ || isFilter;
40670        return result;
40671      };
40672    });
40673
40674    // Add `LazyWrapper` methods for `_.head` and `_.last`.
40675    arrayEach(['head', 'last'], function(methodName, index) {
40676      var takeName = 'take' + (index ? 'Right' : '');
40677
40678      LazyWrapper.prototype[methodName] = function() {
40679        return this[takeName](1).value()[0];
40680      };
40681    });
40682
40683    // Add `LazyWrapper` methods for `_.initial` and `_.tail`.
40684    arrayEach(['initial', 'tail'], function(methodName, index) {
40685      var dropName = 'drop' + (index ? '' : 'Right');
40686
40687      LazyWrapper.prototype[methodName] = function() {
40688        return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);
40689      };
40690    });
40691
40692    LazyWrapper.prototype.compact = function() {
40693      return this.filter(identity);
40694    };
40695
40696    LazyWrapper.prototype.find = function(predicate) {
40697      return this.filter(predicate).head();
40698    };
40699
40700    LazyWrapper.prototype.findLast = function(predicate) {
40701      return this.reverse().find(predicate);
40702    };
40703
40704    LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {
40705      if (typeof path == 'function') {
40706        return new LazyWrapper(this);
40707      }
40708      return this.map(function(value) {
40709        return baseInvoke(value, path, args);
40710      });
40711    });
40712
40713    LazyWrapper.prototype.reject = function(predicate) {
40714      return this.filter(negate(getIteratee(predicate)));
40715    };
40716
40717    LazyWrapper.prototype.slice = function(start, end) {
40718      start = toInteger(start);
40719
40720      var result = this;
40721      if (result.__filtered__ && (start > 0 || end < 0)) {
40722        return new LazyWrapper(result);
40723      }
40724      if (start < 0) {
40725        result = result.takeRight(-start);
40726      } else if (start) {
40727        result = result.drop(start);
40728      }
40729      if (end !== undefined) {
40730        end = toInteger(end);
40731        result = end < 0 ? result.dropRight(-end) : result.take(end - start);
40732      }
40733      return result;
40734    };
40735
40736    LazyWrapper.prototype.takeRightWhile = function(predicate) {
40737      return this.reverse().takeWhile(predicate).reverse();
40738    };
40739
40740    LazyWrapper.prototype.toArray = function() {
40741      return this.take(MAX_ARRAY_LENGTH);
40742    };
40743
40744    // Add `LazyWrapper` methods to `lodash.prototype`.
40745    baseForOwn(LazyWrapper.prototype, function(func, methodName) {
40746      var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName),
40747          isTaker = /^(?:head|last)$/.test(methodName),
40748          lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName],
40749          retUnwrapped = isTaker || /^find/.test(methodName);
40750
40751      if (!lodashFunc) {
40752        return;
40753      }
40754      lodash.prototype[methodName] = function() {
40755        var value = this.__wrapped__,
40756            args = isTaker ? [1] : arguments,
40757            isLazy = value instanceof LazyWrapper,
40758            iteratee = args[0],
40759            useLazy = isLazy || isArray(value);
40760
40761        var interceptor = function(value) {
40762          var result = lodashFunc.apply(lodash, arrayPush([value], args));
40763          return (isTaker && chainAll) ? result[0] : result;
40764        };
40765
40766        if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {
40767          // Avoid lazy use if the iteratee has a "length" value other than `1`.
40768          isLazy = useLazy = false;
40769        }
40770        var chainAll = this.__chain__,
40771            isHybrid = !!this.__actions__.length,
40772            isUnwrapped = retUnwrapped && !chainAll,
40773            onlyLazy = isLazy && !isHybrid;
40774
40775        if (!retUnwrapped && useLazy) {
40776          value = onlyLazy ? value : new LazyWrapper(this);
40777          var result = func.apply(value, args);
40778          result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });
40779          return new LodashWrapper(result, chainAll);
40780        }
40781        if (isUnwrapped && onlyLazy) {
40782          return func.apply(this, args);
40783        }
40784        result = this.thru(interceptor);
40785        return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result;
40786      };
40787    });
40788
40789    // Add `Array` methods to `lodash.prototype`.
40790    arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {
40791      var func = arrayProto[methodName],
40792          chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',
40793          retUnwrapped = /^(?:pop|shift)$/.test(methodName);
40794
40795      lodash.prototype[methodName] = function() {
40796        var args = arguments;
40797        if (retUnwrapped && !this.__chain__) {
40798          var value = this.value();
40799          return func.apply(isArray(value) ? value : [], args);
40800        }
40801        return this[chainName](function(value) {
40802          return func.apply(isArray(value) ? value : [], args);
40803        });
40804      };
40805    });
40806
40807    // Map minified method names to their real names.
40808    baseForOwn(LazyWrapper.prototype, function(func, methodName) {
40809      var lodashFunc = lodash[methodName];
40810      if (lodashFunc) {
40811        var key = lodashFunc.name + '';
40812        if (!hasOwnProperty.call(realNames, key)) {
40813          realNames[key] = [];
40814        }
40815        realNames[key].push({ 'name': methodName, 'func': lodashFunc });
40816      }
40817    });
40818
40819    realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{
40820      'name': 'wrapper',
40821      'func': undefined
40822    }];
40823
40824    // Add methods to `LazyWrapper`.
40825    LazyWrapper.prototype.clone = lazyClone;
40826    LazyWrapper.prototype.reverse = lazyReverse;
40827    LazyWrapper.prototype.value = lazyValue;
40828
40829    // Add chain sequence methods to the `lodash` wrapper.
40830    lodash.prototype.at = wrapperAt;
40831    lodash.prototype.chain = wrapperChain;
40832    lodash.prototype.commit = wrapperCommit;
40833    lodash.prototype.next = wrapperNext;
40834    lodash.prototype.plant = wrapperPlant;
40835    lodash.prototype.reverse = wrapperReverse;
40836    lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;
40837
40838    // Add lazy aliases.
40839    lodash.prototype.first = lodash.prototype.head;
40840
40841    if (symIterator) {
40842      lodash.prototype[symIterator] = wrapperToIterator;
40843    }
40844    return lodash;
40845  });
40846
40847  /*--------------------------------------------------------------------------*/
40848
40849  // Export lodash.
40850  var _ = runInContext();
40851
40852  // Some AMD build optimizers, like r.js, check for condition patterns like:
40853  if (true) {
40854    // Expose Lodash on the global object to prevent errors when Lodash is
40855    // loaded by a script tag in the presence of an AMD loader.
40856    // See http://requirejs.org/docs/errors.html#mismatch for more details.
40857    // Use `_.noConflict` to remove Lodash from the global object.
40858    root._ = _;
40859
40860    // Define as an anonymous module so, through path mapping, it can be
40861    // referenced as the "underscore" module.
40862    !(__WEBPACK_AMD_DEFINE_RESULT__ = (function() {
40863      return _;
40864    }).call(exports, __webpack_require__, exports, module),
40865		__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
40866  }
40867  // Check for `exports` after `define` in case a build optimizer adds it.
40868  else {}
40869}.call(this));
40870
40871
40872/***/ }),
40873
vendor: 5,636 bytes, lines 40874-41067
40874/***/ "./node_modules/process/browser.js":
40875/*!*****************************************!*\
40876  !*** ./node_modules/process/browser.js ***!
40877  \*****************************************/
40878/***/ ((module) => {
40879
40880// shim for using process in browser
40881var process = module.exports = {};
40882
40883// cached from whatever global is present so that test runners that stub it
40884// don't break things.  But we need to wrap it in a try catch in case it is
40885// wrapped in strict mode code which doesn't define any globals.  It's inside a
40886// function because try/catches deoptimize in certain engines.
40887
40888var cachedSetTimeout;
40889var cachedClearTimeout;
40890
40891function defaultSetTimout() {
40892    throw new Error('setTimeout has not been defined');
40893}
40894function defaultClearTimeout () {
40895    throw new Error('clearTimeout has not been defined');
40896}
40897(function () {
40898    try {
40899        if (typeof setTimeout === 'function') {
40900            cachedSetTimeout = setTimeout;
40901        } else {
40902            cachedSetTimeout = defaultSetTimout;
40903        }
40904    } catch (e) {
40905        cachedSetTimeout = defaultSetTimout;
40906    }
40907    try {
40908        if (typeof clearTimeout === 'function') {
40909            cachedClearTimeout = clearTimeout;
40910        } else {
40911            cachedClearTimeout = defaultClearTimeout;
40912        }
40913    } catch (e) {
40914        cachedClearTimeout = defaultClearTimeout;
40915    }
40916} ())
40917function runTimeout(fun) {
40918    if (cachedSetTimeout === setTimeout) {
40919        //normal enviroments in sane situations
40920        return setTimeout(fun, 0);
40921    }
40922    // if setTimeout wasn't available but was latter defined
40923    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
40924        cachedSetTimeout = setTimeout;
40925        return setTimeout(fun, 0);
40926    }
40927    try {
40928        // when when somebody has screwed with setTimeout but no I.E. maddness
40929        return cachedSetTimeout(fun, 0);
40930    } catch(e){
40931        try {
40932            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
40933            return cachedSetTimeout.call(null, fun, 0);
40934        } catch(e){
40935            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
40936            return cachedSetTimeout.call(this, fun, 0);
40937        }
40938    }
40939
40940
40941}
40942function runClearTimeout(marker) {
40943    if (cachedClearTimeout === clearTimeout) {
40944        //normal enviroments in sane situations
40945        return clearTimeout(marker);
40946    }
40947    // if clearTimeout wasn't available but was latter defined
40948    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
40949        cachedClearTimeout = clearTimeout;
40950        return clearTimeout(marker);
40951    }
40952    try {
40953        // when when somebody has screwed with setTimeout but no I.E. maddness
40954        return cachedClearTimeout(marker);
40955    } catch (e){
40956        try {
40957            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally
40958            return cachedClearTimeout.call(null, marker);
40959        } catch (e){
40960            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
40961            // Some versions of I.E. have different rules for clearTimeout vs setTimeout
40962            return cachedClearTimeout.call(this, marker);
40963        }
40964    }
40965
40966
40967
40968}
40969var queue = [];
40970var draining = false;
40971var currentQueue;
40972var queueIndex = -1;
40973
40974function cleanUpNextTick() {
40975    if (!draining || !currentQueue) {
40976        return;
40977    }
40978    draining = false;
40979    if (currentQueue.length) {
40980        queue = currentQueue.concat(queue);
40981    } else {
40982        queueIndex = -1;
40983    }
40984    if (queue.length) {
40985        drainQueue();
40986    }
40987}
40988
40989function drainQueue() {
40990    if (draining) {
40991        return;
40992    }
40993    var timeout = runTimeout(cleanUpNextTick);
40994    draining = true;
40995
40996    var len = queue.length;
40997    while(len) {
40998        currentQueue = queue;
40999        queue = [];
41000        while (++queueIndex < len) {
41001            if (currentQueue) {
41002                currentQueue[queueIndex].run();
41003            }
41004        }
41005        queueIndex = -1;
41006        len = queue.length;
41007    }
41008    currentQueue = null;
41009    draining = false;
41010    runClearTimeout(timeout);
41011}
41012
41013process.nextTick = function (fun) {
41014    var args = new Array(arguments.length - 1);
41015    if (arguments.length > 1) {
41016        for (var i = 1; i < arguments.length; i++) {
41017            args[i - 1] = arguments[i];
41018        }
41019    }
41020    queue.push(new Item(fun, args));
41021    if (queue.length === 1 && !draining) {
41022        runTimeout(drainQueue);
41023    }
41024};
41025
41026// v8 likes predictible objects
41027function Item(fun, array) {
41028    this.fun = fun;
41029    this.array = array;
41030}
41031Item.prototype.run = function () {
41032    this.fun.apply(null, this.array);
41033};
41034process.title = 'browser';
41035process.browser = true;
41036process.env = {};
41037process.argv = [];
41038process.version = ''; // empty string to avoid regexp issues
41039process.versions = {};
41040
41041function noop() {}
41042
41043process.on = noop;
41044process.addListener = noop;
41045process.once = noop;
41046process.off = noop;
41047process.removeListener = noop;
41048process.removeAllListeners = noop;
41049process.emit = noop;
41050process.prependListener = noop;
41051process.prependOnceListener = noop;
41052
41053process.listeners = function (name) { return [] }
41054
41055process.binding = function (name) {
41056    throw new Error('process.binding is not supported');
41057};
41058
41059process.cwd = function () { return '/' };
41060process.chdir = function (dir) {
41061    throw new Error('process.chdir is not supported');
41062};
41063process.umask = function() { return 0; };
41064
41065
41066/***/ }),
41067
vendor: 178,881 bytes, lines 41068-46094
41068/***/ "./node_modules/pusher-js/dist/web/pusher.js":
41069/*!***************************************************!*\
41070  !*** ./node_modules/pusher-js/dist/web/pusher.js ***!
41071  \***************************************************/
41072/***/ ((module) => {
41073
41074/*!
41075 * Pusher JavaScript Library v7.6.0
41076 * https://pusher.com/
41077 *
41078 * Copyright 2020, Pusher
41079 * Released under the MIT licence.
41080 */
41081
41082(function webpackUniversalModuleDefinition(root, factory) {
41083	if(true)
41084		module.exports = factory();
41085	else {}
41086})(window, function() {
41087return /******/ (function(modules) { // webpackBootstrap
41088/******/ 	// The module cache
41089/******/ 	var installedModules = {};
41090/******/
41091/******/ 	// The require function
41092/******/ 	function __nested_webpack_require_669__(moduleId) {
41093/******/
41094/******/ 		// Check if module is in cache
41095/******/ 		if(installedModules[moduleId]) {
41096/******/ 			return installedModules[moduleId].exports;
41097/******/ 		}
41098/******/ 		// Create a new module (and put it into the cache)
41099/******/ 		var module = installedModules[moduleId] = {
41100/******/ 			i: moduleId,
41101/******/ 			l: false,
41102/******/ 			exports: {}
41103/******/ 		};
41104/******/
41105/******/ 		// Execute the module function
41106/******/ 		modules[moduleId].call(module.exports, module, module.exports, __nested_webpack_require_669__);
41107/******/
41108/******/ 		// Flag the module as loaded
41109/******/ 		module.l = true;
41110/******/
41111/******/ 		// Return the exports of the module
41112/******/ 		return module.exports;
41113/******/ 	}
41114/******/
41115/******/
41116/******/ 	// expose the modules object (__webpack_modules__)
41117/******/ 	__nested_webpack_require_669__.m = modules;
41118/******/
41119/******/ 	// expose the module cache
41120/******/ 	__nested_webpack_require_669__.c = installedModules;
41121/******/
41122/******/ 	// define getter function for harmony exports
41123/******/ 	__nested_webpack_require_669__.d = function(exports, name, getter) {
41124/******/ 		if(!__nested_webpack_require_669__.o(exports, name)) {
41125/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
41126/******/ 		}
41127/******/ 	};
41128/******/
41129/******/ 	// define __esModule on exports
41130/******/ 	__nested_webpack_require_669__.r = function(exports) {
41131/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
41132/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
41133/******/ 		}
41134/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
41135/******/ 	};
41136/******/
41137/******/ 	// create a fake namespace object
41138/******/ 	// mode & 1: value is a module id, require it
41139/******/ 	// mode & 2: merge all properties of value into the ns
41140/******/ 	// mode & 4: return value when already ns object
41141/******/ 	// mode & 8|1: behave like require
41142/******/ 	__nested_webpack_require_669__.t = function(value, mode) {
41143/******/ 		if(mode & 1) value = __nested_webpack_require_669__(value);
41144/******/ 		if(mode & 8) return value;
41145/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
41146/******/ 		var ns = Object.create(null);
41147/******/ 		__nested_webpack_require_669__.r(ns);
41148/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
41149/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __nested_webpack_require_669__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
41150/******/ 		return ns;
41151/******/ 	};
41152/******/
41153/******/ 	// getDefaultExport function for compatibility with non-harmony modules
41154/******/ 	__nested_webpack_require_669__.n = function(module) {
41155/******/ 		var getter = module && module.__esModule ?
41156/******/ 			function getDefault() { return module['default']; } :
41157/******/ 			function getModuleExports() { return module; };
41158/******/ 		__nested_webpack_require_669__.d(getter, 'a', getter);
41159/******/ 		return getter;
41160/******/ 	};
41161/******/
41162/******/ 	// Object.prototype.hasOwnProperty.call
41163/******/ 	__nested_webpack_require_669__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
41164/******/
41165/******/ 	// __webpack_public_path__
41166/******/ 	__nested_webpack_require_669__.p = "";
41167/******/
41168/******/
41169/******/ 	// Load entry module and return exports
41170/******/ 	return __nested_webpack_require_669__(__nested_webpack_require_669__.s = 2);
41171/******/ })
41172/************************************************************************/
41173/******/ ([
41174/* 0 */
41175/***/ (function(module, exports, __webpack_require__) {
41176
41177"use strict";
41178
41179// Copyright (C) 2016 Dmitry Chestnykh
41180// MIT License. See LICENSE file for details.
41181var __extends = (this && this.__extends) || (function () {
41182    var extendStatics = function (d, b) {
41183        extendStatics = Object.setPrototypeOf ||
41184            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
41185            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
41186        return extendStatics(d, b);
41187    };
41188    return function (d, b) {
41189        extendStatics(d, b);
41190        function __() { this.constructor = d; }
41191        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
41192    };
41193})();
41194Object.defineProperty(exports, "__esModule", { value: true });
41195/**
41196 * Package base64 implements Base64 encoding and decoding.
41197 */
41198// Invalid character used in decoding to indicate
41199// that the character to decode is out of range of
41200// alphabet and cannot be decoded.
41201var INVALID_BYTE = 256;
41202/**
41203 * Implements standard Base64 encoding.
41204 *
41205 * Operates in constant time.
41206 */
41207var Coder = /** @class */ (function () {
41208    // TODO(dchest): methods to encode chunk-by-chunk.
41209    function Coder(_paddingCharacter) {
41210        if (_paddingCharacter === void 0) { _paddingCharacter = "="; }
41211        this._paddingCharacter = _paddingCharacter;
41212    }
41213    Coder.prototype.encodedLength = function (length) {
41214        if (!this._paddingCharacter) {
41215            return (length * 8 + 5) / 6 | 0;
41216        }
41217        return (length + 2) / 3 * 4 | 0;
41218    };
41219    Coder.prototype.encode = function (data) {
41220        var out = "";
41221        var i = 0;
41222        for (; i < data.length - 2; i += 3) {
41223            var c = (data[i] << 16) | (data[i + 1] << 8) | (data[i + 2]);
41224            out += this._encodeByte((c >>> 3 * 6) & 63);
41225            out += this._encodeByte((c >>> 2 * 6) & 63);
41226            out += this._encodeByte((c >>> 1 * 6) & 63);
41227            out += this._encodeByte((c >>> 0 * 6) & 63);
41228        }
41229        var left = data.length - i;
41230        if (left > 0) {
41231            var c = (data[i] << 16) | (left === 2 ? data[i + 1] << 8 : 0);
41232            out += this._encodeByte((c >>> 3 * 6) & 63);
41233            out += this._encodeByte((c >>> 2 * 6) & 63);
41234            if (left === 2) {
41235                out += this._encodeByte((c >>> 1 * 6) & 63);
41236            }
41237            else {
41238                out += this._paddingCharacter || "";
41239            }
41240            out += this._paddingCharacter || "";
41241        }
41242        return out;
41243    };
41244    Coder.prototype.maxDecodedLength = function (length) {
41245        if (!this._paddingCharacter) {
41246            return (length * 6 + 7) / 8 | 0;
41247        }
41248        return length / 4 * 3 | 0;
41249    };
41250    Coder.prototype.decodedLength = function (s) {
41251        return this.maxDecodedLength(s.length - this._getPaddingLength(s));
41252    };
41253    Coder.prototype.decode = function (s) {
41254        if (s.length === 0) {
41255            return new Uint8Array(0);
41256        }
41257        var paddingLength = this._getPaddingLength(s);
41258        var length = s.length - paddingLength;
41259        var out = new Uint8Array(this.maxDecodedLength(length));
41260        var op = 0;
41261        var i = 0;
41262        var haveBad = 0;
41263        var v0 = 0, v1 = 0, v2 = 0, v3 = 0;
41264        for (; i < length - 4; i += 4) {
41265            v0 = this._decodeChar(s.charCodeAt(i + 0));
41266            v1 = this._decodeChar(s.charCodeAt(i + 1));
41267            v2 = this._decodeChar(s.charCodeAt(i + 2));
41268            v3 = this._decodeChar(s.charCodeAt(i + 3));
41269            out[op++] = (v0 << 2) | (v1 >>> 4);
41270            out[op++] = (v1 << 4) | (v2 >>> 2);
41271            out[op++] = (v2 << 6) | v3;
41272            haveBad |= v0 & INVALID_BYTE;
41273            haveBad |= v1 & INVALID_BYTE;
41274            haveBad |= v2 & INVALID_BYTE;
41275            haveBad |= v3 & INVALID_BYTE;
41276        }
41277        if (i < length - 1) {
41278            v0 = this._decodeChar(s.charCodeAt(i));
41279            v1 = this._decodeChar(s.charCodeAt(i + 1));
41280            out[op++] = (v0 << 2) | (v1 >>> 4);
41281            haveBad |= v0 & INVALID_BYTE;
41282            haveBad |= v1 & INVALID_BYTE;
41283        }
41284        if (i < length - 2) {
41285            v2 = this._decodeChar(s.charCodeAt(i + 2));
41286            out[op++] = (v1 << 4) | (v2 >>> 2);
41287            haveBad |= v2 & INVALID_BYTE;
41288        }
41289        if (i < length - 3) {
41290            v3 = this._decodeChar(s.charCodeAt(i + 3));
41291            out[op++] = (v2 << 6) | v3;
41292            haveBad |= v3 & INVALID_BYTE;
41293        }
41294        if (haveBad !== 0) {
41295            throw new Error("Base64Coder: incorrect characters for decoding");
41296        }
41297        return out;
41298    };
41299    // Standard encoding have the following encoded/decoded ranges,
41300    // which we need to convert between.
41301    //
41302    // ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789  +   /
41303    // Index:   0 - 25                    26 - 51              52 - 61   62  63
41304    // ASCII:  65 - 90                    97 - 122             48 - 57   43  47
41305    //
41306    // Encode 6 bits in b into a new character.
41307    Coder.prototype._encodeByte = function (b) {
41308        // Encoding uses constant time operations as follows:
41309        //
41310        // 1. Define comparison of A with B using (A - B) >>> 8:
41311        //          if A > B, then result is positive integer
41312        //          if A <= B, then result is 0
41313        //
41314        // 2. Define selection of C or 0 using bitwise AND: X & C:
41315        //          if X == 0, then result is 0
41316        //          if X != 0, then result is C
41317        //
41318        // 3. Start with the smallest comparison (b >= 0), which is always
41319        //    true, so set the result to the starting ASCII value (65).
41320        //
41321        // 4. Continue comparing b to higher ASCII values, and selecting
41322        //    zero if comparison isn't true, otherwise selecting a value
41323        //    to add to result, which:
41324        //
41325        //          a) undoes the previous addition
41326        //          b) provides new value to add
41327        //
41328        var result = b;
41329        // b >= 0
41330        result += 65;
41331        // b > 25
41332        result += ((25 - b) >>> 8) & ((0 - 65) - 26 + 97);
41333        // b > 51
41334        result += ((51 - b) >>> 8) & ((26 - 97) - 52 + 48);
41335        // b > 61
41336        result += ((61 - b) >>> 8) & ((52 - 48) - 62 + 43);
41337        // b > 62
41338        result += ((62 - b) >>> 8) & ((62 - 43) - 63 + 47);
41339        return String.fromCharCode(result);
41340    };
41341    // Decode a character code into a byte.
41342    // Must return 256 if character is out of alphabet range.
41343    Coder.prototype._decodeChar = function (c) {
41344        // Decoding works similar to encoding: using the same comparison
41345        // function, but now it works on ranges: result is always incremented
41346        // by value, but this value becomes zero if the range is not
41347        // satisfied.
41348        //
41349        // Decoding starts with invalid value, 256, which is then
41350        // subtracted when the range is satisfied. If none of the ranges
41351        // apply, the function returns 256, which is then checked by
41352        // the caller to throw error.
41353        var result = INVALID_BYTE; // start with invalid character
41354        // c == 43 (c > 42 and c < 44)
41355        result += (((42 - c) & (c - 44)) >>> 8) & (-INVALID_BYTE + c - 43 + 62);
41356        // c == 47 (c > 46 and c < 48)
41357        result += (((46 - c) & (c - 48)) >>> 8) & (-INVALID_BYTE + c - 47 + 63);
41358        // c > 47 and c < 58
41359        result += (((47 - c) & (c - 58)) >>> 8) & (-INVALID_BYTE + c - 48 + 52);
41360        // c > 64 and c < 91
41361        result += (((64 - c) & (c - 91)) >>> 8) & (-INVALID_BYTE + c - 65 + 0);
41362        // c > 96 and c < 123
41363        result += (((96 - c) & (c - 123)) >>> 8) & (-INVALID_BYTE + c - 97 + 26);
41364        return result;
41365    };
41366    Coder.prototype._getPaddingLength = function (s) {
41367        var paddingLength = 0;
41368        if (this._paddingCharacter) {
41369            for (var i = s.length - 1; i >= 0; i--) {
41370                if (s[i] !== this._paddingCharacter) {
41371                    break;
41372                }
41373                paddingLength++;
41374            }
41375            if (s.length < 4 || paddingLength > 2) {
41376                throw new Error("Base64Coder: incorrect padding");
41377            }
41378        }
41379        return paddingLength;
41380    };
41381    return Coder;
41382}());
41383exports.Coder = Coder;
41384var stdCoder = new Coder();
41385function encode(data) {
41386    return stdCoder.encode(data);
41387}
41388exports.encode = encode;
41389function decode(s) {
41390    return stdCoder.decode(s);
41391}
41392exports.decode = decode;
41393/**
41394 * Implements URL-safe Base64 encoding.
41395 * (Same as Base64, but '+' is replaced with '-', and '/' with '_').
41396 *
41397 * Operates in constant time.
41398 */
41399var URLSafeCoder = /** @class */ (function (_super) {
41400    __extends(URLSafeCoder, _super);
41401    function URLSafeCoder() {
41402        return _super !== null && _super.apply(this, arguments) || this;
41403    }
41404    // URL-safe encoding have the following encoded/decoded ranges:
41405    //
41406    // ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789  -   _
41407    // Index:   0 - 25                    26 - 51              52 - 61   62  63
41408    // ASCII:  65 - 90                    97 - 122             48 - 57   45  95
41409    //
41410    URLSafeCoder.prototype._encodeByte = function (b) {
41411        var result = b;
41412        // b >= 0
41413        result += 65;
41414        // b > 25
41415        result += ((25 - b) >>> 8) & ((0 - 65) - 26 + 97);
41416        // b > 51
41417        result += ((51 - b) >>> 8) & ((26 - 97) - 52 + 48);
41418        // b > 61
41419        result += ((61 - b) >>> 8) & ((52 - 48) - 62 + 45);
41420        // b > 62
41421        result += ((62 - b) >>> 8) & ((62 - 45) - 63 + 95);
41422        return String.fromCharCode(result);
41423    };
41424    URLSafeCoder.prototype._decodeChar = function (c) {
41425        var result = INVALID_BYTE;
41426        // c == 45 (c > 44 and c < 46)
41427        result += (((44 - c) & (c - 46)) >>> 8) & (-INVALID_BYTE + c - 45 + 62);
41428        // c == 95 (c > 94 and c < 96)
41429        result += (((94 - c) & (c - 96)) >>> 8) & (-INVALID_BYTE + c - 95 + 63);
41430        // c > 47 and c < 58
41431        result += (((47 - c) & (c - 58)) >>> 8) & (-INVALID_BYTE + c - 48 + 52);
41432        // c > 64 and c < 91
41433        result += (((64 - c) & (c - 91)) >>> 8) & (-INVALID_BYTE + c - 65 + 0);
41434        // c > 96 and c < 123
41435        result += (((96 - c) & (c - 123)) >>> 8) & (-INVALID_BYTE + c - 97 + 26);
41436        return result;
41437    };
41438    return URLSafeCoder;
41439}(Coder));
41440exports.URLSafeCoder = URLSafeCoder;
41441var urlSafeCoder = new URLSafeCoder();
41442function encodeURLSafe(data) {
41443    return urlSafeCoder.encode(data);
41444}
41445exports.encodeURLSafe = encodeURLSafe;
41446function decodeURLSafe(s) {
41447    return urlSafeCoder.decode(s);
41448}
41449exports.decodeURLSafe = decodeURLSafe;
41450exports.encodedLength = function (length) {
41451    return stdCoder.encodedLength(length);
41452};
41453exports.maxDecodedLength = function (length) {
41454    return stdCoder.maxDecodedLength(length);
41455};
41456exports.decodedLength = function (s) {
41457    return stdCoder.decodedLength(s);
41458};
41459
41460
41461/***/ }),
41462/* 1 */
41463/***/ (function(module, exports, __webpack_require__) {
41464
41465"use strict";
41466
41467// Copyright (C) 2016 Dmitry Chestnykh
41468// MIT License. See LICENSE file for details.
41469Object.defineProperty(exports, "__esModule", { value: true });
41470/**
41471 * Package utf8 implements UTF-8 encoding and decoding.
41472 */
41473var INVALID_UTF16 = "utf8: invalid string";
41474var INVALID_UTF8 = "utf8: invalid source encoding";
41475/**
41476 * Encodes the given string into UTF-8 byte array.
41477 * Throws if the source string has invalid UTF-16 encoding.
41478 */
41479function encode(s) {
41480    // Calculate result length and allocate output array.
41481    // encodedLength() also validates string and throws errors,
41482    // so we don't need repeat validation here.
41483    var arr = new Uint8Array(encodedLength(s));
41484    var pos = 0;
41485    for (var i = 0; i < s.length; i++) {
41486        var c = s.charCodeAt(i);
41487        if (c < 0x80) {
41488            arr[pos++] = c;
41489        }
41490        else if (c < 0x800) {
41491            arr[pos++] = 0xc0 | c >> 6;
41492            arr[pos++] = 0x80 | c & 0x3f;
41493        }
41494        else if (c < 0xd800) {
41495            arr[pos++] = 0xe0 | c >> 12;
41496            arr[pos++] = 0x80 | (c >> 6) & 0x3f;
41497            arr[pos++] = 0x80 | c & 0x3f;
41498        }
41499        else {
41500            i++; // get one more character
41501            c = (c & 0x3ff) << 10;
41502            c |= s.charCodeAt(i) & 0x3ff;
41503            c += 0x10000;
41504            arr[pos++] = 0xf0 | c >> 18;
41505            arr[pos++] = 0x80 | (c >> 12) & 0x3f;
41506            arr[pos++] = 0x80 | (c >> 6) & 0x3f;
41507            arr[pos++] = 0x80 | c & 0x3f;
41508        }
41509    }
41510    return arr;
41511}
41512exports.encode = encode;
41513/**
41514 * Returns the number of bytes required to encode the given string into UTF-8.
41515 * Throws if the source string has invalid UTF-16 encoding.
41516 */
41517function encodedLength(s) {
41518    var result = 0;
41519    for (var i = 0; i < s.length; i++) {
41520        var c = s.charCodeAt(i);
41521        if (c < 0x80) {
41522            result += 1;
41523        }
41524        else if (c < 0x800) {
41525            result += 2;
41526        }
41527        else if (c < 0xd800) {
41528            result += 3;
41529        }
41530        else if (c <= 0xdfff) {
41531            if (i >= s.length - 1) {
41532                throw new Error(INVALID_UTF16);
41533            }
41534            i++; // "eat" next character
41535            result += 4;
41536        }
41537        else {
41538            throw new Error(INVALID_UTF16);
41539        }
41540    }
41541    return result;
41542}
41543exports.encodedLength = encodedLength;
41544/**
41545 * Decodes the given byte array from UTF-8 into a string.
41546 * Throws if encoding is invalid.
41547 */
41548function decode(arr) {
41549    var chars = [];
41550    for (var i = 0; i < arr.length; i++) {
41551        var b = arr[i];
41552        if (b & 0x80) {
41553            var min = void 0;
41554            if (b < 0xe0) {
41555                // Need 1 more byte.
41556                if (i >= arr.length) {
41557                    throw new Error(INVALID_UTF8);
41558                }
41559                var n1 = arr[++i];
41560                if ((n1 & 0xc0) !== 0x80) {
41561                    throw new Error(INVALID_UTF8);
41562                }
41563                b = (b & 0x1f) << 6 | (n1 & 0x3f);
41564                min = 0x80;
41565            }
41566            else if (b < 0xf0) {
41567                // Need 2 more bytes.
41568                if (i >= arr.length - 1) {
41569                    throw new Error(INVALID_UTF8);
41570                }
41571                var n1 = arr[++i];
41572                var n2 = arr[++i];
41573                if ((n1 & 0xc0) !== 0x80 || (n2 & 0xc0) !== 0x80) {
41574                    throw new Error(INVALID_UTF8);
41575                }
41576                b = (b & 0x0f) << 12 | (n1 & 0x3f) << 6 | (n2 & 0x3f);
41577                min = 0x800;
41578            }
41579            else if (b < 0xf8) {
41580                // Need 3 more bytes.
41581                if (i >= arr.length - 2) {
41582                    throw new Error(INVALID_UTF8);
41583                }
41584                var n1 = arr[++i];
41585                var n2 = arr[++i];
41586                var n3 = arr[++i];
41587                if ((n1 & 0xc0) !== 0x80 || (n2 & 0xc0) !== 0x80 || (n3 & 0xc0) !== 0x80) {
41588                    throw new Error(INVALID_UTF8);
41589                }
41590                b = (b & 0x0f) << 18 | (n1 & 0x3f) << 12 | (n2 & 0x3f) << 6 | (n3 & 0x3f);
41591                min = 0x10000;
41592            }
41593            else {
41594                throw new Error(INVALID_UTF8);
41595            }
41596            if (b < min || (b >= 0xd800 && b <= 0xdfff)) {
41597                throw new Error(INVALID_UTF8);
41598            }
41599            if (b >= 0x10000) {
41600                // Surrogate pair.
41601                if (b > 0x10ffff) {
41602                    throw new Error(INVALID_UTF8);
41603                }
41604                b -= 0x10000;
41605                chars.push(String.fromCharCode(0xd800 | (b >> 10)));
41606                b = 0xdc00 | (b & 0x3ff);
41607            }
41608        }
41609        chars.push(String.fromCharCode(b));
41610    }
41611    return chars.join("");
41612}
41613exports.decode = decode;
41614
41615
41616/***/ }),
41617/* 2 */
41618/***/ (function(module, exports, __nested_webpack_require_19901__) {
41619
41620// required so we don't have to do require('pusher').default etc.
41621module.exports = __nested_webpack_require_19901__(3).default;
41622
41623
41624/***/ }),
41625/* 3 */
41626/***/ (function(module, __nested_webpack_exports__, __nested_webpack_require_20105__) {
41627
41628"use strict";
41629// ESM COMPAT FLAG
41630__nested_webpack_require_20105__.r(__nested_webpack_exports__);
41631
41632// CONCATENATED MODULE: ./src/runtimes/web/dom/script_receiver_factory.ts
41633var ScriptReceiverFactory = (function () {
41634    function ScriptReceiverFactory(prefix, name) {
41635        this.lastId = 0;
41636        this.prefix = prefix;
41637        this.name = name;
41638    }
41639    ScriptReceiverFactory.prototype.create = function (callback) {
41640        this.lastId++;
41641        var number = this.lastId;
41642        var id = this.prefix + number;
41643        var name = this.name + '[' + number + ']';
41644        var called = false;
41645        var callbackWrapper = function () {
41646            if (!called) {
41647                callback.apply(null, arguments);
41648                called = true;
41649            }
41650        };
41651        this[number] = callbackWrapper;
41652        return { number: number, id: id, name: name, callback: callbackWrapper };
41653    };
41654    ScriptReceiverFactory.prototype.remove = function (receiver) {
41655        delete this[receiver.number];
41656    };
41657    return ScriptReceiverFactory;
41658}());
41659
41660var ScriptReceivers = new ScriptReceiverFactory('_pusher_script_', 'Pusher.ScriptReceivers');
41661
41662// CONCATENATED MODULE: ./src/core/defaults.ts
41663var Defaults = {
41664    VERSION: "7.6.0",
41665    PROTOCOL: 7,
41666    wsPort: 80,
41667    wssPort: 443,
41668    wsPath: '',
41669    httpHost: 'sockjs.pusher.com',
41670    httpPort: 80,
41671    httpsPort: 443,
41672    httpPath: '/pusher',
41673    stats_host: 'stats.pusher.com',
41674    authEndpoint: '/pusher/auth',
41675    authTransport: 'ajax',
41676    activityTimeout: 120000,
41677    pongTimeout: 30000,
41678    unavailableTimeout: 10000,
41679    cluster: 'mt1',
41680    userAuthentication: {
41681        endpoint: '/pusher/user-auth',
41682        transport: 'ajax'
41683    },
41684    channelAuthorization: {
41685        endpoint: '/pusher/auth',
41686        transport: 'ajax'
41687    },
41688    cdn_http: "http://js.pusher.com",
41689    cdn_https: "https://js.pusher.com",
41690    dependency_suffix: ""
41691};
41692/* harmony default export */ var defaults = (Defaults);
41693
41694// CONCATENATED MODULE: ./src/runtimes/web/dom/dependency_loader.ts
41695
41696
41697var dependency_loader_DependencyLoader = (function () {
41698    function DependencyLoader(options) {
41699        this.options = options;
41700        this.receivers = options.receivers || ScriptReceivers;
41701        this.loading = {};
41702    }
41703    DependencyLoader.prototype.load = function (name, options, callback) {
41704        var self = this;
41705        if (self.loading[name] && self.loading[name].length > 0) {
41706            self.loading[name].push(callback);
41707        }
41708        else {
41709            self.loading[name] = [callback];
41710            var request = runtime.createScriptRequest(self.getPath(name, options));
41711            var receiver = self.receivers.create(function (error) {
41712                self.receivers.remove(receiver);
41713                if (self.loading[name]) {
41714                    var callbacks = self.loading[name];
41715                    delete self.loading[name];
41716                    var successCallback = function (wasSuccessful) {
41717                        if (!wasSuccessful) {
41718                            request.cleanup();
41719                        }
41720                    };
41721                    for (var i = 0; i < callbacks.length; i++) {
41722                        callbacks[i](error, successCallback);
41723                    }
41724                }
41725            });
41726            request.send(receiver);
41727        }
41728    };
41729    DependencyLoader.prototype.getRoot = function (options) {
41730        var cdn;
41731        var protocol = runtime.getDocument().location.protocol;
41732        if ((options && options.useTLS) || protocol === 'https:') {
41733            cdn = this.options.cdn_https;
41734        }
41735        else {
41736            cdn = this.options.cdn_http;
41737        }
41738        return cdn.replace(/\/*$/, '') + '/' + this.options.version;
41739    };
41740    DependencyLoader.prototype.getPath = function (name, options) {
41741        return this.getRoot(options) + '/' + name + this.options.suffix + '.js';
41742    };
41743    return DependencyLoader;
41744}());
41745/* harmony default export */ var dependency_loader = (dependency_loader_DependencyLoader);
41746
41747// CONCATENATED MODULE: ./src/runtimes/web/dom/dependencies.ts
41748
41749
41750
41751var DependenciesReceivers = new ScriptReceiverFactory('_pusher_dependencies', 'Pusher.DependenciesReceivers');
41752var Dependencies = new dependency_loader({
41753    cdn_http: defaults.cdn_http,
41754    cdn_https: defaults.cdn_https,
41755    version: defaults.VERSION,
41756    suffix: defaults.dependency_suffix,
41757    receivers: DependenciesReceivers
41758});
41759
41760// CONCATENATED MODULE: ./src/core/utils/url_store.ts
41761var urlStore = {
41762    baseUrl: 'https://pusher.com',
41763    urls: {
41764        authenticationEndpoint: {
41765            path: '/docs/channels/server_api/authenticating_users'
41766        },
41767        authorizationEndpoint: {
41768            path: '/docs/channels/server_api/authorizing-users/'
41769        },
41770        javascriptQuickStart: {
41771            path: '/docs/javascript_quick_start'
41772        },
41773        triggeringClientEvents: {
41774            path: '/docs/client_api_guide/client_events#trigger-events'
41775        },
41776        encryptedChannelSupport: {
41777            fullUrl: 'https://github.com/pusher/pusher-js/tree/cc491015371a4bde5743d1c87a0fbac0feb53195#encrypted-channel-support'
41778        }
41779    }
41780};
41781var buildLogSuffix = function (key) {
41782    var urlPrefix = 'See:';
41783    var urlObj = urlStore.urls[key];
41784    if (!urlObj)
41785        return '';
41786    var url;
41787    if (urlObj.fullUrl) {
41788        url = urlObj.fullUrl;
41789    }
41790    else if (urlObj.path) {
41791        url = urlStore.baseUrl + urlObj.path;
41792    }
41793    if (!url)
41794        return '';
41795    return urlPrefix + " " + url;
41796};
41797/* harmony default export */ var url_store = ({ buildLogSuffix: buildLogSuffix });
41798
41799// CONCATENATED MODULE: ./src/core/auth/options.ts
41800var AuthRequestType;
41801(function (AuthRequestType) {
41802    AuthRequestType["UserAuthentication"] = "user-authentication";
41803    AuthRequestType["ChannelAuthorization"] = "channel-authorization";
41804})(AuthRequestType || (AuthRequestType = {}));
41805
41806// CONCATENATED MODULE: ./src/core/errors.ts
41807var __extends = ( false) || (function () {
41808    var extendStatics = function (d, b) {
41809        extendStatics = Object.setPrototypeOf ||
41810            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
41811            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
41812        return extendStatics(d, b);
41813    };
41814    return function (d, b) {
41815        extendStatics(d, b);
41816        function __() { this.constructor = d; }
41817        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
41818    };
41819})();
41820var BadEventName = (function (_super) {
41821    __extends(BadEventName, _super);
41822    function BadEventName(msg) {
41823        var _newTarget = this.constructor;
41824        var _this = _super.call(this, msg) || this;
41825        Object.setPrototypeOf(_this, _newTarget.prototype);
41826        return _this;
41827    }
41828    return BadEventName;
41829}(Error));
41830
41831var BadChannelName = (function (_super) {
41832    __extends(BadChannelName, _super);
41833    function BadChannelName(msg) {
41834        var _newTarget = this.constructor;
41835        var _this = _super.call(this, msg) || this;
41836        Object.setPrototypeOf(_this, _newTarget.prototype);
41837        return _this;
41838    }
41839    return BadChannelName;
41840}(Error));
41841
41842var RequestTimedOut = (function (_super) {
41843    __extends(RequestTimedOut, _super);
41844    function RequestTimedOut(msg) {
41845        var _newTarget = this.constructor;
41846        var _this = _super.call(this, msg) || this;
41847        Object.setPrototypeOf(_this, _newTarget.prototype);
41848        return _this;
41849    }
41850    return RequestTimedOut;
41851}(Error));
41852
41853var TransportPriorityTooLow = (function (_super) {
41854    __extends(TransportPriorityTooLow, _super);
41855    function TransportPriorityTooLow(msg) {
41856        var _newTarget = this.constructor;
41857        var _this = _super.call(this, msg) || this;
41858        Object.setPrototypeOf(_this, _newTarget.prototype);
41859        return _this;
41860    }
41861    return TransportPriorityTooLow;
41862}(Error));
41863
41864var TransportClosed = (function (_super) {
41865    __extends(TransportClosed, _super);
41866    function TransportClosed(msg) {
41867        var _newTarget = this.constructor;
41868        var _this = _super.call(this, msg) || this;
41869        Object.setPrototypeOf(_this, _newTarget.prototype);
41870        return _this;
41871    }
41872    return TransportClosed;
41873}(Error));
41874
41875var UnsupportedFeature = (function (_super) {
41876    __extends(UnsupportedFeature, _super);
41877    function UnsupportedFeature(msg) {
41878        var _newTarget = this.constructor;
41879        var _this = _super.call(this, msg) || this;
41880        Object.setPrototypeOf(_this, _newTarget.prototype);
41881        return _this;
41882    }
41883    return UnsupportedFeature;
41884}(Error));
41885
41886var UnsupportedTransport = (function (_super) {
41887    __extends(UnsupportedTransport, _super);
41888    function UnsupportedTransport(msg) {
41889        var _newTarget = this.constructor;
41890        var _this = _super.call(this, msg) || this;
41891        Object.setPrototypeOf(_this, _newTarget.prototype);
41892        return _this;
41893    }
41894    return UnsupportedTransport;
41895}(Error));
41896
41897var UnsupportedStrategy = (function (_super) {
41898    __extends(UnsupportedStrategy, _super);
41899    function UnsupportedStrategy(msg) {
41900        var _newTarget = this.constructor;
41901        var _this = _super.call(this, msg) || this;
41902        Object.setPrototypeOf(_this, _newTarget.prototype);
41903        return _this;
41904    }
41905    return UnsupportedStrategy;
41906}(Error));
41907
41908var HTTPAuthError = (function (_super) {
41909    __extends(HTTPAuthError, _super);
41910    function HTTPAuthError(status, msg) {
41911        var _newTarget = this.constructor;
41912        var _this = _super.call(this, msg) || this;
41913        _this.status = status;
41914        Object.setPrototypeOf(_this, _newTarget.prototype);
41915        return _this;
41916    }
41917    return HTTPAuthError;
41918}(Error));
41919
41920
41921// CONCATENATED MODULE: ./src/runtimes/isomorphic/auth/xhr_auth.ts
41922
41923
41924
41925
41926var ajax = function (context, query, authOptions, authRequestType, callback) {
41927    var xhr = runtime.createXHR();
41928    xhr.open('POST', authOptions.endpoint, true);
41929    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
41930    for (var headerName in authOptions.headers) {
41931        xhr.setRequestHeader(headerName, authOptions.headers[headerName]);
41932    }
41933    if (authOptions.headersProvider != null) {
41934        var dynamicHeaders = authOptions.headersProvider();
41935        for (var headerName in dynamicHeaders) {
41936            xhr.setRequestHeader(headerName, dynamicHeaders[headerName]);
41937        }
41938    }
41939    xhr.onreadystatechange = function () {
41940        if (xhr.readyState === 4) {
41941            if (xhr.status === 200) {
41942                var data = void 0;
41943                var parsed = false;
41944                try {
41945                    data = JSON.parse(xhr.responseText);
41946                    parsed = true;
41947                }
41948                catch (e) {
41949                    callback(new HTTPAuthError(200, "JSON returned from " + authRequestType.toString() + " endpoint was invalid, yet status code was 200. Data was: " + xhr.responseText), null);
41950                }
41951                if (parsed) {
41952                    callback(null, data);
41953                }
41954            }
41955            else {
41956                var suffix = '';
41957                switch (authRequestType) {
41958                    case AuthRequestType.UserAuthentication:
41959                        suffix = url_store.buildLogSuffix('authenticationEndpoint');
41960                        break;
41961                    case AuthRequestType.ChannelAuthorization:
41962                        suffix = "Clients must be authorized to join private or presence channels. " + url_store.buildLogSuffix('authorizationEndpoint');
41963                        break;
41964                }
41965                callback(new HTTPAuthError(xhr.status, "Unable to retrieve auth string from " + authRequestType.toString() + " endpoint - " +
41966                    ("received status: " + xhr.status + " from " + authOptions.endpoint + ". " + suffix)), null);
41967            }
41968        }
41969    };
41970    xhr.send(query);
41971    return xhr;
41972};
41973/* harmony default export */ var xhr_auth = (ajax);
41974
41975// CONCATENATED MODULE: ./src/core/base64.ts
41976function encode(s) {
41977    return btoa(utob(s));
41978}
41979var fromCharCode = String.fromCharCode;
41980var b64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
41981var b64tab = {};
41982for (var base64_i = 0, l = b64chars.length; base64_i < l; base64_i++) {
41983    b64tab[b64chars.charAt(base64_i)] = base64_i;
41984}
41985var cb_utob = function (c) {
41986    var cc = c.charCodeAt(0);
41987    return cc < 0x80
41988        ? c
41989        : cc < 0x800
41990            ? fromCharCode(0xc0 | (cc >>> 6)) + fromCharCode(0x80 | (cc & 0x3f))
41991            : fromCharCode(0xe0 | ((cc >>> 12) & 0x0f)) +
41992                fromCharCode(0x80 | ((cc >>> 6) & 0x3f)) +
41993                fromCharCode(0x80 | (cc & 0x3f));
41994};
41995var utob = function (u) {
41996    return u.replace(/[^\x00-\x7F]/g, cb_utob);
41997};
41998var cb_encode = function (ccc) {
41999    var padlen = [0, 2, 1][ccc.length % 3];
42000    var ord = (ccc.charCodeAt(0) << 16) |
42001        ((ccc.length > 1 ? ccc.charCodeAt(1) : 0) << 8) |
42002        (ccc.length > 2 ? ccc.charCodeAt(2) : 0);
42003    var chars = [
42004        b64chars.charAt(ord >>> 18),
42005        b64chars.charAt((ord >>> 12) & 63),
42006        padlen >= 2 ? '=' : b64chars.charAt((ord >>> 6) & 63),
42007        padlen >= 1 ? '=' : b64chars.charAt(ord & 63)
42008    ];
42009    return chars.join('');
42010};
42011var btoa = window.btoa ||
42012    function (b) {
42013        return b.replace(/[\s\S]{1,3}/g, cb_encode);
42014    };
42015
42016// CONCATENATED MODULE: ./src/core/utils/timers/abstract_timer.ts
42017var Timer = (function () {
42018    function Timer(set, clear, delay, callback) {
42019        var _this = this;
42020        this.clear = clear;
42021        this.timer = set(function () {
42022            if (_this.timer) {
42023                _this.timer = callback(_this.timer);
42024            }
42025        }, delay);
42026    }
42027    Timer.prototype.isRunning = function () {
42028        return this.timer !== null;
42029    };
42030    Timer.prototype.ensureAborted = function () {
42031        if (this.timer) {
42032            this.clear(this.timer);
42033            this.timer = null;
42034        }
42035    };
42036    return Timer;
42037}());
42038/* harmony default export */ var abstract_timer = (Timer);
42039
42040// CONCATENATED MODULE: ./src/core/utils/timers/index.ts
42041var timers_extends = ( false) || (function () {
42042    var extendStatics = function (d, b) {
42043        extendStatics = Object.setPrototypeOf ||
42044            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
42045            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
42046        return extendStatics(d, b);
42047    };
42048    return function (d, b) {
42049        extendStatics(d, b);
42050        function __() { this.constructor = d; }
42051        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
42052    };
42053})();
42054
42055function timers_clearTimeout(timer) {
42056    window.clearTimeout(timer);
42057}
42058function timers_clearInterval(timer) {
42059    window.clearInterval(timer);
42060}
42061var OneOffTimer = (function (_super) {
42062    timers_extends(OneOffTimer, _super);
42063    function OneOffTimer(delay, callback) {
42064        return _super.call(this, setTimeout, timers_clearTimeout, delay, function (timer) {
42065            callback();
42066            return null;
42067        }) || this;
42068    }
42069    return OneOffTimer;
42070}(abstract_timer));
42071
42072var PeriodicTimer = (function (_super) {
42073    timers_extends(PeriodicTimer, _super);
42074    function PeriodicTimer(delay, callback) {
42075        return _super.call(this, setInterval, timers_clearInterval, delay, function (timer) {
42076            callback();
42077            return timer;
42078        }) || this;
42079    }
42080    return PeriodicTimer;
42081}(abstract_timer));
42082
42083
42084// CONCATENATED MODULE: ./src/core/util.ts
42085
42086var Util = {
42087    now: function () {
42088        if (Date.now) {
42089            return Date.now();
42090        }
42091        else {
42092            return new Date().valueOf();
42093        }
42094    },
42095    defer: function (callback) {
42096        return new OneOffTimer(0, callback);
42097    },
42098    method: function (name) {
42099        var args = [];
42100        for (var _i = 1; _i < arguments.length; _i++) {
42101            args[_i - 1] = arguments[_i];
42102        }
42103        var boundArguments = Array.prototype.slice.call(arguments, 1);
42104        return function (object) {
42105            return object[name].apply(object, boundArguments.concat(arguments));
42106        };
42107    }
42108};
42109/* harmony default export */ var util = (Util);
42110
42111// CONCATENATED MODULE: ./src/core/utils/collections.ts
42112
42113
42114function extend(target) {
42115    var sources = [];
42116    for (var _i = 1; _i < arguments.length; _i++) {
42117        sources[_i - 1] = arguments[_i];
42118    }
42119    for (var i = 0; i < sources.length; i++) {
42120        var extensions = sources[i];
42121        for (var property in extensions) {
42122            if (extensions[property] &&
42123                extensions[property].constructor &&
42124                extensions[property].constructor === Object) {
42125                target[property] = extend(target[property] || {}, extensions[property]);
42126            }
42127            else {
42128                target[property] = extensions[property];
42129            }
42130        }
42131    }
42132    return target;
42133}
42134function stringify() {
42135    var m = ['Pusher'];
42136    for (var i = 0; i < arguments.length; i++) {
42137        if (typeof arguments[i] === 'string') {
42138            m.push(arguments[i]);
42139        }
42140        else {
42141            m.push(safeJSONStringify(arguments[i]));
42142        }
42143    }
42144    return m.join(' : ');
42145}
42146function arrayIndexOf(array, item) {
42147    var nativeIndexOf = Array.prototype.indexOf;
42148    if (array === null) {
42149        return -1;
42150    }
42151    if (nativeIndexOf && array.indexOf === nativeIndexOf) {
42152        return array.indexOf(item);
42153    }
42154    for (var i = 0, l = array.length; i < l; i++) {
42155        if (array[i] === item) {
42156            return i;
42157        }
42158    }
42159    return -1;
42160}
42161function objectApply(object, f) {
42162    for (var key in object) {
42163        if (Object.prototype.hasOwnProperty.call(object, key)) {
42164            f(object[key], key, object);
42165        }
42166    }
42167}
42168function keys(object) {
42169    var keys = [];
42170    objectApply(object, function (_, key) {
42171        keys.push(key);
42172    });
42173    return keys;
42174}
42175function values(object) {
42176    var values = [];
42177    objectApply(object, function (value) {
42178        values.push(value);
42179    });
42180    return values;
42181}
42182function apply(array, f, context) {
42183    for (var i = 0; i < array.length; i++) {
42184        f.call(context || window, array[i], i, array);
42185    }
42186}
42187function map(array, f) {
42188    var result = [];
42189    for (var i = 0; i < array.length; i++) {
42190        result.push(f(array[i], i, array, result));
42191    }
42192    return result;
42193}
42194function mapObject(object, f) {
42195    var result = {};
42196    objectApply(object, function (value, key) {
42197        result[key] = f(value);
42198    });
42199    return result;
42200}
42201function filter(array, test) {
42202    test =
42203        test ||
42204            function (value) {
42205                return !!value;
42206            };
42207    var result = [];
42208    for (var i = 0; i < array.length; i++) {
42209        if (test(array[i], i, array, result)) {
42210            result.push(array[i]);
42211        }
42212    }
42213    return result;
42214}
42215function filterObject(object, test) {
42216    var result = {};
42217    objectApply(object, function (value, key) {
42218        if ((test && test(value, key, object, result)) || Boolean(value)) {
42219            result[key] = value;
42220        }
42221    });
42222    return result;
42223}
42224function flatten(object) {
42225    var result = [];
42226    objectApply(object, function (value, key) {
42227        result.push([key, value]);
42228    });
42229    return result;
42230}
42231function any(array, test) {
42232    for (var i = 0; i < array.length; i++) {
42233        if (test(array[i], i, array)) {
42234            return true;
42235        }
42236    }
42237    return false;
42238}
42239function collections_all(array, test) {
42240    for (var i = 0; i < array.length; i++) {
42241        if (!test(array[i], i, array)) {
42242            return false;
42243        }
42244    }
42245    return true;
42246}
42247function encodeParamsObject(data) {
42248    return mapObject(data, function (value) {
42249        if (typeof value === 'object') {
42250            value = safeJSONStringify(value);
42251        }
42252        return encodeURIComponent(encode(value.toString()));
42253    });
42254}
42255function buildQueryString(data) {
42256    var params = filterObject(data, function (value) {
42257        return value !== undefined;
42258    });
42259    var query = map(flatten(encodeParamsObject(params)), util.method('join', '=')).join('&');
42260    return query;
42261}
42262function decycleObject(object) {
42263    var objects = [], paths = [];
42264    return (function derez(value, path) {
42265        var i, name, nu;
42266        switch (typeof value) {
42267            case 'object':
42268                if (!value) {
42269                    return null;
42270                }
42271                for (i = 0; i < objects.length; i += 1) {
42272                    if (objects[i] === value) {
42273                        return { $ref: paths[i] };
42274                    }
42275                }
42276                objects.push(value);
42277                paths.push(path);
42278                if (Object.prototype.toString.apply(value) === '[object Array]') {
42279                    nu = [];
42280                    for (i = 0; i < value.length; i += 1) {
42281                        nu[i] = derez(value[i], path + '[' + i + ']');
42282                    }
42283                }
42284                else {
42285                    nu = {};
42286                    for (name in value) {
42287                        if (Object.prototype.hasOwnProperty.call(value, name)) {
42288                            nu[name] = derez(value[name], path + '[' + JSON.stringify(name) + ']');
42289                        }
42290                    }
42291                }
42292                return nu;
42293            case 'number':
42294            case 'string':
42295            case 'boolean':
42296                return value;
42297        }
42298    })(object, '$');
42299}
42300function safeJSONStringify(source) {
42301    try {
42302        return JSON.stringify(source);
42303    }
42304    catch (e) {
42305        return JSON.stringify(decycleObject(source));
42306    }
42307}
42308
42309// CONCATENATED MODULE: ./src/core/logger.ts
42310
42311
42312var logger_Logger = (function () {
42313    function Logger() {
42314        this.globalLog = function (message) {
42315            if (window.console && window.console.log) {
42316                window.console.log(message);
42317            }
42318        };
42319    }
42320    Logger.prototype.debug = function () {
42321        var args = [];
42322        for (var _i = 0; _i < arguments.length; _i++) {
42323            args[_i] = arguments[_i];
42324        }
42325        this.log(this.globalLog, args);
42326    };
42327    Logger.prototype.warn = function () {
42328        var args = [];
42329        for (var _i = 0; _i < arguments.length; _i++) {
42330            args[_i] = arguments[_i];
42331        }
42332        this.log(this.globalLogWarn, args);
42333    };
42334    Logger.prototype.error = function () {
42335        var args = [];
42336        for (var _i = 0; _i < arguments.length; _i++) {
42337            args[_i] = arguments[_i];
42338        }
42339        this.log(this.globalLogError, args);
42340    };
42341    Logger.prototype.globalLogWarn = function (message) {
42342        if (window.console && window.console.warn) {
42343            window.console.warn(message);
42344        }
42345        else {
42346            this.globalLog(message);
42347        }
42348    };
42349    Logger.prototype.globalLogError = function (message) {
42350        if (window.console && window.console.error) {
42351            window.console.error(message);
42352        }
42353        else {
42354            this.globalLogWarn(message);
42355        }
42356    };
42357    Logger.prototype.log = function (defaultLoggingFunction) {
42358        var args = [];
42359        for (var _i = 1; _i < arguments.length; _i++) {
42360            args[_i - 1] = arguments[_i];
42361        }
42362        var message = stringify.apply(this, arguments);
42363        if (core_pusher.log) {
42364            core_pusher.log(message);
42365        }
42366        else if (core_pusher.logToConsole) {
42367            var log = defaultLoggingFunction.bind(this);
42368            log(message);
42369        }
42370    };
42371    return Logger;
42372}());
42373/* harmony default export */ var logger = (new logger_Logger());
42374
42375// CONCATENATED MODULE: ./src/runtimes/web/auth/jsonp_auth.ts
42376
42377var jsonp = function (context, query, authOptions, authRequestType, callback) {
42378    if (authOptions.headers !== undefined ||
42379        authOptions.headersProvider != null) {
42380        logger.warn("To send headers with the " + authRequestType.toString() + " request, you must use AJAX, rather than JSONP.");
42381    }
42382    var callbackName = context.nextAuthCallbackID.toString();
42383    context.nextAuthCallbackID++;
42384    var document = context.getDocument();
42385    var script = document.createElement('script');
42386    context.auth_callbacks[callbackName] = function (data) {
42387        callback(null, data);
42388    };
42389    var callback_name = "Pusher.auth_callbacks['" + callbackName + "']";
42390    script.src =
42391        authOptions.endpoint +
42392            '?callback=' +
42393            encodeURIComponent(callback_name) +
42394            '&' +
42395            query;
42396    var head = document.getElementsByTagName('head')[0] || document.documentElement;
42397    head.insertBefore(script, head.firstChild);
42398};
42399/* harmony default export */ var jsonp_auth = (jsonp);
42400
42401// CONCATENATED MODULE: ./src/runtimes/web/dom/script_request.ts
42402var ScriptRequest = (function () {
42403    function ScriptRequest(src) {
42404        this.src = src;
42405    }
42406    ScriptRequest.prototype.send = function (receiver) {
42407        var self = this;
42408        var errorString = 'Error loading ' + self.src;
42409        self.script = document.createElement('script');
42410        self.script.id = receiver.id;
42411        self.script.src = self.src;
42412        self.script.type = 'text/javascript';
42413        self.script.charset = 'UTF-8';
42414        if (self.script.addEventListener) {
42415            self.script.onerror = function () {
42416                receiver.callback(errorString);
42417            };
42418            self.script.onload = function () {
42419                receiver.callback(null);
42420            };
42421        }
42422        else {
42423            self.script.onreadystatechange = function () {
42424                if (self.script.readyState === 'loaded' ||
42425                    self.script.readyState === 'complete') {
42426                    receiver.callback(null);
42427                }
42428            };
42429        }
42430        if (self.script.async === undefined &&
42431            document.attachEvent &&
42432            /opera/i.test(navigator.userAgent)) {
42433            self.errorScript = document.createElement('script');
42434            self.errorScript.id = receiver.id + '_error';
42435            self.errorScript.text = receiver.name + "('" + errorString + "');";
42436            self.script.async = self.errorScript.async = false;
42437        }
42438        else {
42439            self.script.async = true;
42440        }
42441        var head = document.getElementsByTagName('head')[0];
42442        head.insertBefore(self.script, head.firstChild);
42443        if (self.errorScript) {
42444            head.insertBefore(self.errorScript, self.script.nextSibling);
42445        }
42446    };
42447    ScriptRequest.prototype.cleanup = function () {
42448        if (this.script) {
42449            this.script.onload = this.script.onerror = null;
42450            this.script.onreadystatechange = null;
42451        }
42452        if (this.script && this.script.parentNode) {
42453            this.script.parentNode.removeChild(this.script);
42454        }
42455        if (this.errorScript && this.errorScript.parentNode) {
42456            this.errorScript.parentNode.removeChild(this.errorScript);
42457        }
42458        this.script = null;
42459        this.errorScript = null;
42460    };
42461    return ScriptRequest;
42462}());
42463/* harmony default export */ var script_request = (ScriptRequest);
42464
42465// CONCATENATED MODULE: ./src/runtimes/web/dom/jsonp_request.ts
42466
42467
42468var jsonp_request_JSONPRequest = (function () {
42469    function JSONPRequest(url, data) {
42470        this.url = url;
42471        this.data = data;
42472    }
42473    JSONPRequest.prototype.send = function (receiver) {
42474        if (this.request) {
42475            return;
42476        }
42477        var query = buildQueryString(this.data);
42478        var url = this.url + '/' + receiver.number + '?' + query;
42479        this.request = runtime.createScriptRequest(url);
42480        this.request.send(receiver);
42481    };
42482    JSONPRequest.prototype.cleanup = function () {
42483        if (this.request) {
42484            this.request.cleanup();
42485        }
42486    };
42487    return JSONPRequest;
42488}());
42489/* harmony default export */ var jsonp_request = (jsonp_request_JSONPRequest);
42490
42491// CONCATENATED MODULE: ./src/runtimes/web/timeline/jsonp_timeline.ts
42492
42493
42494var getAgent = function (sender, useTLS) {
42495    return function (data, callback) {
42496        var scheme = 'http' + (useTLS ? 's' : '') + '://';
42497        var url = scheme + (sender.host || sender.options.host) + sender.options.path;
42498        var request = runtime.createJSONPRequest(url, data);
42499        var receiver = runtime.ScriptReceivers.create(function (error, result) {
42500            ScriptReceivers.remove(receiver);
42501            request.cleanup();
42502            if (result && result.host) {
42503                sender.host = result.host;
42504            }
42505            if (callback) {
42506                callback(error, result);
42507            }
42508        });
42509        request.send(receiver);
42510    };
42511};
42512var jsonp_timeline_jsonp = {
42513    name: 'jsonp',
42514    getAgent: getAgent
42515};
42516/* harmony default export */ var jsonp_timeline = (jsonp_timeline_jsonp);
42517
42518// CONCATENATED MODULE: ./src/core/transports/url_schemes.ts
42519
42520function getGenericURL(baseScheme, params, path) {
42521    var scheme = baseScheme + (params.useTLS ? 's' : '');
42522    var host = params.useTLS ? params.hostTLS : params.hostNonTLS;
42523    return scheme + '://' + host + path;
42524}
42525function getGenericPath(key, queryString) {
42526    var path = '/app/' + key;
42527    var query = '?protocol=' +
42528        defaults.PROTOCOL +
42529        '&client=js' +
42530        '&version=' +
42531        defaults.VERSION +
42532        (queryString ? '&' + queryString : '');
42533    return path + query;
42534}
42535var ws = {
42536    getInitial: function (key, params) {
42537        var path = (params.httpPath || '') + getGenericPath(key, 'flash=false');
42538        return getGenericURL('ws', params, path);
42539    }
42540};
42541var http = {
42542    getInitial: function (key, params) {
42543        var path = (params.httpPath || '/pusher') + getGenericPath(key);
42544        return getGenericURL('http', params, path);
42545    }
42546};
42547var sockjs = {
42548    getInitial: function (key, params) {
42549        return getGenericURL('http', params, params.httpPath || '/pusher');
42550    },
42551    getPath: function (key, params) {
42552        return getGenericPath(key);
42553    }
42554};
42555
42556// CONCATENATED MODULE: ./src/core/events/callback_registry.ts
42557
42558var callback_registry_CallbackRegistry = (function () {
42559    function CallbackRegistry() {
42560        this._callbacks = {};
42561    }
42562    CallbackRegistry.prototype.get = function (name) {
42563        return this._callbacks[prefix(name)];
42564    };
42565    CallbackRegistry.prototype.add = function (name, callback, context) {
42566        var prefixedEventName = prefix(name);
42567        this._callbacks[prefixedEventName] =
42568            this._callbacks[prefixedEventName] || [];
42569        this._callbacks[prefixedEventName].push({
42570            fn: callback,
42571            context: context
42572        });
42573    };
42574    CallbackRegistry.prototype.remove = function (name, callback, context) {
42575        if (!name && !callback && !context) {
42576            this._callbacks = {};
42577            return;
42578        }
42579        var names = name ? [prefix(name)] : keys(this._callbacks);
42580        if (callback || context) {
42581            this.removeCallback(names, callback, context);
42582        }
42583        else {
42584            this.removeAllCallbacks(names);
42585        }
42586    };
42587    CallbackRegistry.prototype.removeCallback = function (names, callback, context) {
42588        apply(names, function (name) {
42589            this._callbacks[name] = filter(this._callbacks[name] || [], function (binding) {
42590                return ((callback && callback !== binding.fn) ||
42591                    (context && context !== binding.context));
42592            });
42593            if (this._callbacks[name].length === 0) {
42594                delete this._callbacks[name];
42595            }
42596        }, this);
42597    };
42598    CallbackRegistry.prototype.removeAllCallbacks = function (names) {
42599        apply(names, function (name) {
42600            delete this._callbacks[name];
42601        }, this);
42602    };
42603    return CallbackRegistry;
42604}());
42605/* harmony default export */ var callback_registry = (callback_registry_CallbackRegistry);
42606function prefix(name) {
42607    return '_' + name;
42608}
42609
42610// CONCATENATED MODULE: ./src/core/events/dispatcher.ts
42611
42612
42613var dispatcher_Dispatcher = (function () {
42614    function Dispatcher(failThrough) {
42615        this.callbacks = new callback_registry();
42616        this.global_callbacks = [];
42617        this.failThrough = failThrough;
42618    }
42619    Dispatcher.prototype.bind = function (eventName, callback, context) {
42620        this.callbacks.add(eventName, callback, context);
42621        return this;
42622    };
42623    Dispatcher.prototype.bind_global = function (callback) {
42624        this.global_callbacks.push(callback);
42625        return this;
42626    };
42627    Dispatcher.prototype.unbind = function (eventName, callback, context) {
42628        this.callbacks.remove(eventName, callback, context);
42629        return this;
42630    };
42631    Dispatcher.prototype.unbind_global = function (callback) {
42632        if (!callback) {
42633            this.global_callbacks = [];
42634            return this;
42635        }
42636        this.global_callbacks = filter(this.global_callbacks || [], function (c) { return c !== callback; });
42637        return this;
42638    };
42639    Dispatcher.prototype.unbind_all = function () {
42640        this.unbind();
42641        this.unbind_global();
42642        return this;
42643    };
42644    Dispatcher.prototype.emit = function (eventName, data, metadata) {
42645        for (var i = 0; i < this.global_callbacks.length; i++) {
42646            this.global_callbacks[i](eventName, data);
42647        }
42648        var callbacks = this.callbacks.get(eventName);
42649        var args = [];
42650        if (metadata) {
42651            args.push(data, metadata);
42652        }
42653        else if (data) {
42654            args.push(data);
42655        }
42656        if (callbacks && callbacks.length > 0) {
42657            for (var i = 0; i < callbacks.length; i++) {
42658                callbacks[i].fn.apply(callbacks[i].context || window, args);
42659            }
42660        }
42661        else if (this.failThrough) {
42662            this.failThrough(eventName, data);
42663        }
42664        return this;
42665    };
42666    return Dispatcher;
42667}());
42668/* harmony default export */ var dispatcher = (dispatcher_Dispatcher);
42669
42670// CONCATENATED MODULE: ./src/core/transports/transport_connection.ts
42671var transport_connection_extends = ( false) || (function () {
42672    var extendStatics = function (d, b) {
42673        extendStatics = Object.setPrototypeOf ||
42674            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
42675            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
42676        return extendStatics(d, b);
42677    };
42678    return function (d, b) {
42679        extendStatics(d, b);
42680        function __() { this.constructor = d; }
42681        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
42682    };
42683})();
42684
42685
42686
42687
42688
42689var transport_connection_TransportConnection = (function (_super) {
42690    transport_connection_extends(TransportConnection, _super);
42691    function TransportConnection(hooks, name, priority, key, options) {
42692        var _this = _super.call(this) || this;
42693        _this.initialize = runtime.transportConnectionInitializer;
42694        _this.hooks = hooks;
42695        _this.name = name;
42696        _this.priority = priority;
42697        _this.key = key;
42698        _this.options = options;
42699        _this.state = 'new';
42700        _this.timeline = options.timeline;
42701        _this.activityTimeout = options.activityTimeout;
42702        _this.id = _this.timeline.generateUniqueID();
42703        return _this;
42704    }
42705    TransportConnection.prototype.handlesActivityChecks = function () {
42706        return Boolean(this.hooks.handlesActivityChecks);
42707    };
42708    TransportConnection.prototype.supportsPing = function () {
42709        return Boolean(this.hooks.supportsPing);
42710    };
42711    TransportConnection.prototype.connect = function () {
42712        var _this = this;
42713        if (this.socket || this.state !== 'initialized') {
42714            return false;
42715        }
42716        var url = this.hooks.urls.getInitial(this.key, this.options);
42717        try {
42718            this.socket = this.hooks.getSocket(url, this.options);
42719        }
42720        catch (e) {
42721            util.defer(function () {
42722                _this.onError(e);
42723                _this.changeState('closed');
42724            });
42725            return false;
42726        }
42727        this.bindListeners();
42728        logger.debug('Connecting', { transport: this.name, url: url });
42729        this.changeState('connecting');
42730        return true;
42731    };
42732    TransportConnection.prototype.close = function () {
42733        if (this.socket) {
42734            this.socket.close();
42735            return true;
42736        }
42737        else {
42738            return false;
42739        }
42740    };
42741    TransportConnection.prototype.send = function (data) {
42742        var _this = this;
42743        if (this.state === 'open') {
42744            util.defer(function () {
42745                if (_this.socket) {
42746                    _this.socket.send(data);
42747                }
42748            });
42749            return true;
42750        }
42751        else {
42752            return false;
42753        }
42754    };
42755    TransportConnection.prototype.ping = function () {
42756        if (this.state === 'open' && this.supportsPing()) {
42757            this.socket.ping();
42758        }
42759    };
42760    TransportConnection.prototype.onOpen = function () {
42761        if (this.hooks.beforeOpen) {
42762            this.hooks.beforeOpen(this.socket, this.hooks.urls.getPath(this.key, this.options));
42763        }
42764        this.changeState('open');
42765        this.socket.onopen = undefined;
42766    };
42767    TransportConnection.prototype.onError = function (error) {
42768        this.emit('error', { type: 'WebSocketError', error: error });
42769        this.timeline.error(this.buildTimelineMessage({ error: error.toString() }));
42770    };
42771    TransportConnection.prototype.onClose = function (closeEvent) {
42772        if (closeEvent) {
42773            this.changeState('closed', {
42774                code: closeEvent.code,
42775                reason: closeEvent.reason,
42776                wasClean: closeEvent.wasClean
42777            });
42778        }
42779        else {
42780            this.changeState('closed');
42781        }
42782        this.unbindListeners();
42783        this.socket = undefined;
42784    };
42785    TransportConnection.prototype.onMessage = function (message) {
42786        this.emit('message', message);
42787    };
42788    TransportConnection.prototype.onActivity = function () {
42789        this.emit('activity');
42790    };
42791    TransportConnection.prototype.bindListeners = function () {
42792        var _this = this;
42793        this.socket.onopen = function () {
42794            _this.onOpen();
42795        };
42796        this.socket.onerror = function (error) {
42797            _this.onError(error);
42798        };
42799        this.socket.onclose = function (closeEvent) {
42800            _this.onClose(closeEvent);
42801        };
42802        this.socket.onmessage = function (message) {
42803            _this.onMessage(message);
42804        };
42805        if (this.supportsPing()) {
42806            this.socket.onactivity = function () {
42807                _this.onActivity();
42808            };
42809        }
42810    };
42811    TransportConnection.prototype.unbindListeners = function () {
42812        if (this.socket) {
42813            this.socket.onopen = undefined;
42814            this.socket.onerror = undefined;
42815            this.socket.onclose = undefined;
42816            this.socket.onmessage = undefined;
42817            if (this.supportsPing()) {
42818                this.socket.onactivity = undefined;
42819            }
42820        }
42821    };
42822    TransportConnection.prototype.changeState = function (state, params) {
42823        this.state = state;
42824        this.timeline.info(this.buildTimelineMessage({
42825            state: state,
42826            params: params
42827        }));
42828        this.emit(state, params);
42829    };
42830    TransportConnection.prototype.buildTimelineMessage = function (message) {
42831        return extend({ cid: this.id }, message);
42832    };
42833    return TransportConnection;
42834}(dispatcher));
42835/* harmony default export */ var transport_connection = (transport_connection_TransportConnection);
42836
42837// CONCATENATED MODULE: ./src/core/transports/transport.ts
42838
42839var transport_Transport = (function () {
42840    function Transport(hooks) {
42841        this.hooks = hooks;
42842    }
42843    Transport.prototype.isSupported = function (environment) {
42844        return this.hooks.isSupported(environment);
42845    };
42846    Transport.prototype.createConnection = function (name, priority, key, options) {
42847        return new transport_connection(this.hooks, name, priority, key, options);
42848    };
42849    return Transport;
42850}());
42851/* harmony default export */ var transports_transport = (transport_Transport);
42852
42853// CONCATENATED MODULE: ./src/runtimes/isomorphic/transports/transports.ts
42854
42855
42856
42857
42858var WSTransport = new transports_transport({
42859    urls: ws,
42860    handlesActivityChecks: false,
42861    supportsPing: false,
42862    isInitialized: function () {
42863        return Boolean(runtime.getWebSocketAPI());
42864    },
42865    isSupported: function () {
42866        return Boolean(runtime.getWebSocketAPI());
42867    },
42868    getSocket: function (url) {
42869        return runtime.createWebSocket(url);
42870    }
42871});
42872var httpConfiguration = {
42873    urls: http,
42874    handlesActivityChecks: false,
42875    supportsPing: true,
42876    isInitialized: function () {
42877        return true;
42878    }
42879};
42880var streamingConfiguration = extend({
42881    getSocket: function (url) {
42882        return runtime.HTTPFactory.createStreamingSocket(url);
42883    }
42884}, httpConfiguration);
42885var pollingConfiguration = extend({
42886    getSocket: function (url) {
42887        return runtime.HTTPFactory.createPollingSocket(url);
42888    }
42889}, httpConfiguration);
42890var xhrConfiguration = {
42891    isSupported: function () {
42892        return runtime.isXHRSupported();
42893    }
42894};
42895var XHRStreamingTransport = new transports_transport((extend({}, streamingConfiguration, xhrConfiguration)));
42896var XHRPollingTransport = new transports_transport(extend({}, pollingConfiguration, xhrConfiguration));
42897var Transports = {
42898    ws: WSTransport,
42899    xhr_streaming: XHRStreamingTransport,
42900    xhr_polling: XHRPollingTransport
42901};
42902/* harmony default export */ var transports = (Transports);
42903
42904// CONCATENATED MODULE: ./src/runtimes/web/transports/transports.ts
42905
42906
42907
42908
42909
42910
42911var SockJSTransport = new transports_transport({
42912    file: 'sockjs',
42913    urls: sockjs,
42914    handlesActivityChecks: true,
42915    supportsPing: false,
42916    isSupported: function () {
42917        return true;
42918    },
42919    isInitialized: function () {
42920        return window.SockJS !== undefined;
42921    },
42922    getSocket: function (url, options) {
42923        return new window.SockJS(url, null, {
42924            js_path: Dependencies.getPath('sockjs', {
42925                useTLS: options.useTLS
42926            }),
42927            ignore_null_origin: options.ignoreNullOrigin
42928        });
42929    },
42930    beforeOpen: function (socket, path) {
42931        socket.send(JSON.stringify({
42932            path: path
42933        }));
42934    }
42935});
42936var xdrConfiguration = {
42937    isSupported: function (environment) {
42938        var yes = runtime.isXDRSupported(environment.useTLS);
42939        return yes;
42940    }
42941};
42942var XDRStreamingTransport = new transports_transport((extend({}, streamingConfiguration, xdrConfiguration)));
42943var XDRPollingTransport = new transports_transport(extend({}, pollingConfiguration, xdrConfiguration));
42944transports.xdr_streaming = XDRStreamingTransport;
42945transports.xdr_polling = XDRPollingTransport;
42946transports.sockjs = SockJSTransport;
42947/* harmony default export */ var transports_transports = (transports);
42948
42949// CONCATENATED MODULE: ./src/runtimes/web/net_info.ts
42950var net_info_extends = ( false) || (function () {
42951    var extendStatics = function (d, b) {
42952        extendStatics = Object.setPrototypeOf ||
42953            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
42954            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
42955        return extendStatics(d, b);
42956    };
42957    return function (d, b) {
42958        extendStatics(d, b);
42959        function __() { this.constructor = d; }
42960        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
42961    };
42962})();
42963
42964var NetInfo = (function (_super) {
42965    net_info_extends(NetInfo, _super);
42966    function NetInfo() {
42967        var _this = _super.call(this) || this;
42968        var self = _this;
42969        if (window.addEventListener !== undefined) {
42970            window.addEventListener('online', function () {
42971                self.emit('online');
42972            }, false);
42973            window.addEventListener('offline', function () {
42974                self.emit('offline');
42975            }, false);
42976        }
42977        return _this;
42978    }
42979    NetInfo.prototype.isOnline = function () {
42980        if (window.navigator.onLine === undefined) {
42981            return true;
42982        }
42983        else {
42984            return window.navigator.onLine;
42985        }
42986    };
42987    return NetInfo;
42988}(dispatcher));
42989
42990var net_info_Network = new NetInfo();
42991
42992// CONCATENATED MODULE: ./src/core/transports/assistant_to_the_transport_manager.ts
42993
42994
42995var assistant_to_the_transport_manager_AssistantToTheTransportManager = (function () {
42996    function AssistantToTheTransportManager(manager, transport, options) {
42997        this.manager = manager;
42998        this.transport = transport;
42999        this.minPingDelay = options.minPingDelay;
43000        this.maxPingDelay = options.maxPingDelay;
43001        this.pingDelay = undefined;
43002    }
43003    AssistantToTheTransportManager.prototype.createConnection = function (name, priority, key, options) {
43004        var _this = this;
43005        options = extend({}, options, {
43006            activityTimeout: this.pingDelay
43007        });
43008        var connection = this.transport.createConnection(name, priority, key, options);
43009        var openTimestamp = null;
43010        var onOpen = function () {
43011            connection.unbind('open', onOpen);
43012            connection.bind('closed', onClosed);
43013            openTimestamp = util.now();
43014        };
43015        var onClosed = function (closeEvent) {
43016            connection.unbind('closed', onClosed);
43017            if (closeEvent.code === 1002 || closeEvent.code === 1003) {
43018                _this.manager.reportDeath();
43019            }
43020            else if (!closeEvent.wasClean && openTimestamp) {
43021                var lifespan = util.now() - openTimestamp;
43022                if (lifespan < 2 * _this.maxPingDelay) {
43023                    _this.manager.reportDeath();
43024                    _this.pingDelay = Math.max(lifespan / 2, _this.minPingDelay);
43025                }
43026            }
43027        };
43028        connection.bind('open', onOpen);
43029        return connection;
43030    };
43031    AssistantToTheTransportManager.prototype.isSupported = function (environment) {
43032        return this.manager.isAlive() && this.transport.isSupported(environment);
43033    };
43034    return AssistantToTheTransportManager;
43035}());
43036/* harmony default export */ var assistant_to_the_transport_manager = (assistant_to_the_transport_manager_AssistantToTheTransportManager);
43037
43038// CONCATENATED MODULE: ./src/core/connection/protocol/protocol.ts
43039var Protocol = {
43040    decodeMessage: function (messageEvent) {
43041        try {
43042            var messageData = JSON.parse(messageEvent.data);
43043            var pusherEventData = messageData.data;
43044            if (typeof pusherEventData === 'string') {
43045                try {
43046                    pusherEventData = JSON.parse(messageData.data);
43047                }
43048                catch (e) { }
43049            }
43050            var pusherEvent = {
43051                event: messageData.event,
43052                channel: messageData.channel,
43053                data: pusherEventData
43054            };
43055            if (messageData.user_id) {
43056                pusherEvent.user_id = messageData.user_id;
43057            }
43058            return pusherEvent;
43059        }
43060        catch (e) {
43061            throw { type: 'MessageParseError', error: e, data: messageEvent.data };
43062        }
43063    },
43064    encodeMessage: function (event) {
43065        return JSON.stringify(event);
43066    },
43067    processHandshake: function (messageEvent) {
43068        var message = Protocol.decodeMessage(messageEvent);
43069        if (message.event === 'pusher:connection_established') {
43070            if (!message.data.activity_timeout) {
43071                throw 'No activity timeout specified in handshake';
43072            }
43073            return {
43074                action: 'connected',
43075                id: message.data.socket_id,
43076                activityTimeout: message.data.activity_timeout * 1000
43077            };
43078        }
43079        else if (message.event === 'pusher:error') {
43080            return {
43081                action: this.getCloseAction(message.data),
43082                error: this.getCloseError(message.data)
43083            };
43084        }
43085        else {
43086            throw 'Invalid handshake';
43087        }
43088    },
43089    getCloseAction: function (closeEvent) {
43090        if (closeEvent.code < 4000) {
43091            if (closeEvent.code >= 1002 && closeEvent.code <= 1004) {
43092                return 'backoff';
43093            }
43094            else {
43095                return null;
43096            }
43097        }
43098        else if (closeEvent.code === 4000) {
43099            return 'tls_only';
43100        }
43101        else if (closeEvent.code < 4100) {
43102            return 'refused';
43103        }
43104        else if (closeEvent.code < 4200) {
43105            return 'backoff';
43106        }
43107        else if (closeEvent.code < 4300) {
43108            return 'retry';
43109        }
43110        else {
43111            return 'refused';
43112        }
43113    },
43114    getCloseError: function (closeEvent) {
43115        if (closeEvent.code !== 1000 && closeEvent.code !== 1001) {
43116            return {
43117                type: 'PusherError',
43118                data: {
43119                    code: closeEvent.code,
43120                    message: closeEvent.reason || closeEvent.message
43121                }
43122            };
43123        }
43124        else {
43125            return null;
43126        }
43127    }
43128};
43129/* harmony default export */ var protocol_protocol = (Protocol);
43130
43131// CONCATENATED MODULE: ./src/core/connection/connection.ts
43132var connection_extends = ( false) || (function () {
43133    var extendStatics = function (d, b) {
43134        extendStatics = Object.setPrototypeOf ||
43135            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
43136            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
43137        return extendStatics(d, b);
43138    };
43139    return function (d, b) {
43140        extendStatics(d, b);
43141        function __() { this.constructor = d; }
43142        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
43143    };
43144})();
43145
43146
43147
43148
43149var connection_Connection = (function (_super) {
43150    connection_extends(Connection, _super);
43151    function Connection(id, transport) {
43152        var _this = _super.call(this) || this;
43153        _this.id = id;
43154        _this.transport = transport;
43155        _this.activityTimeout = transport.activityTimeout;
43156        _this.bindListeners();
43157        return _this;
43158    }
43159    Connection.prototype.handlesActivityChecks = function () {
43160        return this.transport.handlesActivityChecks();
43161    };
43162    Connection.prototype.send = function (data) {
43163        return this.transport.send(data);
43164    };
43165    Connection.prototype.send_event = function (name, data, channel) {
43166        var event = { event: name, data: data };
43167        if (channel) {
43168            event.channel = channel;
43169        }
43170        logger.debug('Event sent', event);
43171        return this.send(protocol_protocol.encodeMessage(event));
43172    };
43173    Connection.prototype.ping = function () {
43174        if (this.transport.supportsPing()) {
43175            this.transport.ping();
43176        }
43177        else {
43178            this.send_event('pusher:ping', {});
43179        }
43180    };
43181    Connection.prototype.close = function () {
43182        this.transport.close();
43183    };
43184    Connection.prototype.bindListeners = function () {
43185        var _this = this;
43186        var listeners = {
43187            message: function (messageEvent) {
43188                var pusherEvent;
43189                try {
43190                    pusherEvent = protocol_protocol.decodeMessage(messageEvent);
43191                }
43192                catch (e) {
43193                    _this.emit('error', {
43194                        type: 'MessageParseError',
43195                        error: e,
43196                        data: messageEvent.data
43197                    });
43198                }
43199                if (pusherEvent !== undefined) {
43200                    logger.debug('Event recd', pusherEvent);
43201                    switch (pusherEvent.event) {
43202                        case 'pusher:error':
43203                            _this.emit('error', {
43204                                type: 'PusherError',
43205                                data: pusherEvent.data
43206                            });
43207                            break;
43208                        case 'pusher:ping':
43209                            _this.emit('ping');
43210                            break;
43211                        case 'pusher:pong':
43212                            _this.emit('pong');
43213                            break;
43214                    }
43215                    _this.emit('message', pusherEvent);
43216                }
43217            },
43218            activity: function () {
43219                _this.emit('activity');
43220            },
43221            error: function (error) {
43222                _this.emit('error', error);
43223            },
43224            closed: function (closeEvent) {
43225                unbindListeners();
43226                if (closeEvent && closeEvent.code) {
43227                    _this.handleCloseEvent(closeEvent);
43228                }
43229                _this.transport = null;
43230                _this.emit('closed');
43231            }
43232        };
43233        var unbindListeners = function () {
43234            objectApply(listeners, function (listener, event) {
43235                _this.transport.unbind(event, listener);
43236            });
43237        };
43238        objectApply(listeners, function (listener, event) {
43239            _this.transport.bind(event, listener);
43240        });
43241    };
43242    Connection.prototype.handleCloseEvent = function (closeEvent) {
43243        var action = protocol_protocol.getCloseAction(closeEvent);
43244        var error = protocol_protocol.getCloseError(closeEvent);
43245        if (error) {
43246            this.emit('error', error);
43247        }
43248        if (action) {
43249            this.emit(action, { action: action, error: error });
43250        }
43251    };
43252    return Connection;
43253}(dispatcher));
43254/* harmony default export */ var connection_connection = (connection_Connection);
43255
43256// CONCATENATED MODULE: ./src/core/connection/handshake/index.ts
43257
43258
43259
43260var handshake_Handshake = (function () {
43261    function Handshake(transport, callback) {
43262        this.transport = transport;
43263        this.callback = callback;
43264        this.bindListeners();
43265    }
43266    Handshake.prototype.close = function () {
43267        this.unbindListeners();
43268        this.transport.close();
43269    };
43270    Handshake.prototype.bindListeners = function () {
43271        var _this = this;
43272        this.onMessage = function (m) {
43273            _this.unbindListeners();
43274            var result;
43275            try {
43276                result = protocol_protocol.processHandshake(m);
43277            }
43278            catch (e) {
43279                _this.finish('error', { error: e });
43280                _this.transport.close();
43281                return;
43282            }
43283            if (result.action === 'connected') {
43284                _this.finish('connected', {
43285                    connection: new connection_connection(result.id, _this.transport),
43286                    activityTimeout: result.activityTimeout
43287                });
43288            }
43289            else {
43290                _this.finish(result.action, { error: result.error });
43291                _this.transport.close();
43292            }
43293        };
43294        this.onClosed = function (closeEvent) {
43295            _this.unbindListeners();
43296            var action = protocol_protocol.getCloseAction(closeEvent) || 'backoff';
43297            var error = protocol_protocol.getCloseError(closeEvent);
43298            _this.finish(action, { error: error });
43299        };
43300        this.transport.bind('message', this.onMessage);
43301        this.transport.bind('closed', this.onClosed);
43302    };
43303    Handshake.prototype.unbindListeners = function () {
43304        this.transport.unbind('message', this.onMessage);
43305        this.transport.unbind('closed', this.onClosed);
43306    };
43307    Handshake.prototype.finish = function (action, params) {
43308        this.callback(extend({ transport: this.transport, action: action }, params));
43309    };
43310    return Handshake;
43311}());
43312/* harmony default export */ var connection_handshake = (handshake_Handshake);
43313
43314// CONCATENATED MODULE: ./src/core/timeline/timeline_sender.ts
43315
43316var timeline_sender_TimelineSender = (function () {
43317    function TimelineSender(timeline, options) {
43318        this.timeline = timeline;
43319        this.options = options || {};
43320    }
43321    TimelineSender.prototype.send = function (useTLS, callback) {
43322        if (this.timeline.isEmpty()) {
43323            return;
43324        }
43325        this.timeline.send(runtime.TimelineTransport.getAgent(this, useTLS), callback);
43326    };
43327    return TimelineSender;
43328}());
43329/* harmony default export */ var timeline_sender = (timeline_sender_TimelineSender);
43330
43331// CONCATENATED MODULE: ./src/core/channels/channel.ts
43332var channel_extends = ( false) || (function () {
43333    var extendStatics = function (d, b) {
43334        extendStatics = Object.setPrototypeOf ||
43335            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
43336            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
43337        return extendStatics(d, b);
43338    };
43339    return function (d, b) {
43340        extendStatics(d, b);
43341        function __() { this.constructor = d; }
43342        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
43343    };
43344})();
43345
43346
43347
43348
43349
43350var channel_Channel = (function (_super) {
43351    channel_extends(Channel, _super);
43352    function Channel(name, pusher) {
43353        var _this = _super.call(this, function (event, data) {
43354            logger.debug('No callbacks on ' + name + ' for ' + event);
43355        }) || this;
43356        _this.name = name;
43357        _this.pusher = pusher;
43358        _this.subscribed = false;
43359        _this.subscriptionPending = false;
43360        _this.subscriptionCancelled = false;
43361        return _this;
43362    }
43363    Channel.prototype.authorize = function (socketId, callback) {
43364        return callback(null, { auth: '' });
43365    };
43366    Channel.prototype.trigger = function (event, data) {
43367        if (event.indexOf('client-') !== 0) {
43368            throw new BadEventName("Event '" + event + "' does not start with 'client-'");
43369        }
43370        if (!this.subscribed) {
43371            var suffix = url_store.buildLogSuffix('triggeringClientEvents');
43372            logger.warn("Client event triggered before channel 'subscription_succeeded' event . " + suffix);
43373        }
43374        return this.pusher.send_event(event, data, this.name);
43375    };
43376    Channel.prototype.disconnect = function () {
43377        this.subscribed = false;
43378        this.subscriptionPending = false;
43379    };
43380    Channel.prototype.handleEvent = function (event) {
43381        var eventName = event.event;
43382        var data = event.data;
43383        if (eventName === 'pusher_internal:subscription_succeeded') {
43384            this.handleSubscriptionSucceededEvent(event);
43385        }
43386        else if (eventName === 'pusher_internal:subscription_count') {
43387            this.handleSubscriptionCountEvent(event);
43388        }
43389        else if (eventName.indexOf('pusher_internal:') !== 0) {
43390            var metadata = {};
43391            this.emit(eventName, data, metadata);
43392        }
43393    };
43394    Channel.prototype.handleSubscriptionSucceededEvent = function (event) {
43395        this.subscriptionPending = false;
43396        this.subscribed = true;
43397        if (this.subscriptionCancelled) {
43398            this.pusher.unsubscribe(this.name);
43399        }
43400        else {
43401            this.emit('pusher:subscription_succeeded', event.data);
43402        }
43403    };
43404    Channel.prototype.handleSubscriptionCountEvent = function (event) {
43405        if (event.data.subscription_count) {
43406            this.subscriptionCount = event.data.subscription_count;
43407        }
43408        this.emit('pusher:subscription_count', event.data);
43409    };
43410    Channel.prototype.subscribe = function () {
43411        var _this = this;
43412        if (this.subscribed) {
43413            return;
43414        }
43415        this.subscriptionPending = true;
43416        this.subscriptionCancelled = false;
43417        this.authorize(this.pusher.connection.socket_id, function (error, data) {
43418            if (error) {
43419                _this.subscriptionPending = false;
43420                logger.error(error.toString());
43421                _this.emit('pusher:subscription_error', Object.assign({}, {
43422                    type: 'AuthError',
43423                    error: error.message
43424                }, error instanceof HTTPAuthError ? { status: error.status } : {}));
43425            }
43426            else {
43427                _this.pusher.send_event('pusher:subscribe', {
43428                    auth: data.auth,
43429                    channel_data: data.channel_data,
43430                    channel: _this.name
43431                });
43432            }
43433        });
43434    };
43435    Channel.prototype.unsubscribe = function () {
43436        this.subscribed = false;
43437        this.pusher.send_event('pusher:unsubscribe', {
43438            channel: this.name
43439        });
43440    };
43441    Channel.prototype.cancelSubscription = function () {
43442        this.subscriptionCancelled = true;
43443    };
43444    Channel.prototype.reinstateSubscription = function () {
43445        this.subscriptionCancelled = false;
43446    };
43447    return Channel;
43448}(dispatcher));
43449/* harmony default export */ var channels_channel = (channel_Channel);
43450
43451// CONCATENATED MODULE: ./src/core/channels/private_channel.ts
43452var private_channel_extends = ( false) || (function () {
43453    var extendStatics = function (d, b) {
43454        extendStatics = Object.setPrototypeOf ||
43455            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
43456            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
43457        return extendStatics(d, b);
43458    };
43459    return function (d, b) {
43460        extendStatics(d, b);
43461        function __() { this.constructor = d; }
43462        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
43463    };
43464})();
43465
43466var PrivateChannel = (function (_super) {
43467    private_channel_extends(PrivateChannel, _super);
43468    function PrivateChannel() {
43469        return _super !== null && _super.apply(this, arguments) || this;
43470    }
43471    PrivateChannel.prototype.authorize = function (socketId, callback) {
43472        return this.pusher.config.channelAuthorizer({
43473            channelName: this.name,
43474            socketId: socketId
43475        }, callback);
43476    };
43477    return PrivateChannel;
43478}(channels_channel));
43479/* harmony default export */ var private_channel = (PrivateChannel);
43480
43481// CONCATENATED MODULE: ./src/core/channels/members.ts
43482
43483var members_Members = (function () {
43484    function Members() {
43485        this.reset();
43486    }
43487    Members.prototype.get = function (id) {
43488        if (Object.prototype.hasOwnProperty.call(this.members, id)) {
43489            return {
43490                id: id,
43491                info: this.members[id]
43492            };
43493        }
43494        else {
43495            return null;
43496        }
43497    };
43498    Members.prototype.each = function (callback) {
43499        var _this = this;
43500        objectApply(this.members, function (member, id) {
43501            callback(_this.get(id));
43502        });
43503    };
43504    Members.prototype.setMyID = function (id) {
43505        this.myID = id;
43506    };
43507    Members.prototype.onSubscription = function (subscriptionData) {
43508        this.members = subscriptionData.presence.hash;
43509        this.count = subscriptionData.presence.count;
43510        this.me = this.get(this.myID);
43511    };
43512    Members.prototype.addMember = function (memberData) {
43513        if (this.get(memberData.user_id) === null) {
43514            this.count++;
43515        }
43516        this.members[memberData.user_id] = memberData.user_info;
43517        return this.get(memberData.user_id);
43518    };
43519    Members.prototype.removeMember = function (memberData) {
43520        var member = this.get(memberData.user_id);
43521        if (member) {
43522            delete this.members[memberData.user_id];
43523            this.count--;
43524        }
43525        return member;
43526    };
43527    Members.prototype.reset = function () {
43528        this.members = {};
43529        this.count = 0;
43530        this.myID = null;
43531        this.me = null;
43532    };
43533    return Members;
43534}());
43535/* harmony default export */ var members = (members_Members);
43536
43537// CONCATENATED MODULE: ./src/core/channels/presence_channel.ts
43538var presence_channel_extends = ( false) || (function () {
43539    var extendStatics = function (d, b) {
43540        extendStatics = Object.setPrototypeOf ||
43541            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
43542            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
43543        return extendStatics(d, b);
43544    };
43545    return function (d, b) {
43546        extendStatics(d, b);
43547        function __() { this.constructor = d; }
43548        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
43549    };
43550})();
43551var __awaiter = ( false) || function (thisArg, _arguments, P, generator) {
43552    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
43553    return new (P || (P = Promise))(function (resolve, reject) {
43554        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
43555        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
43556        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
43557        step((generator = generator.apply(thisArg, _arguments || [])).next());
43558    });
43559};
43560var __generator = ( false) || function (thisArg, body) {
43561    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
43562    return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
43563    function verb(n) { return function (v) { return step([n, v]); }; }
43564    function step(op) {
43565        if (f) throw new TypeError("Generator is already executing.");
43566        while (_) try {
43567            if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
43568            if (y = 0, t) op = [op[0] & 2, t.value];
43569            switch (op[0]) {
43570                case 0: case 1: t = op; break;
43571                case 4: _.label++; return { value: op[1], done: false };
43572                case 5: _.label++; y = op[1]; op = [0]; continue;
43573                case 7: op = _.ops.pop(); _.trys.pop(); continue;
43574                default:
43575                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
43576                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
43577                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
43578                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
43579                    if (t[2]) _.ops.pop();
43580                    _.trys.pop(); continue;
43581            }
43582            op = body.call(thisArg, _);
43583        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
43584        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
43585    }
43586};
43587
43588
43589
43590
43591var presence_channel_PresenceChannel = (function (_super) {
43592    presence_channel_extends(PresenceChannel, _super);
43593    function PresenceChannel(name, pusher) {
43594        var _this = _super.call(this, name, pusher) || this;
43595        _this.members = new members();
43596        return _this;
43597    }
43598    PresenceChannel.prototype.authorize = function (socketId, callback) {
43599        var _this = this;
43600        _super.prototype.authorize.call(this, socketId, function (error, authData) { return __awaiter(_this, void 0, void 0, function () {
43601            var channelData, suffix;
43602            return __generator(this, function (_a) {
43603                switch (_a.label) {
43604                    case 0:
43605                        if (!!error) return [3, 3];
43606                        authData = authData;
43607                        if (!(authData.channel_data != null)) return [3, 1];
43608                        channelData = JSON.parse(authData.channel_data);
43609                        this.members.setMyID(channelData.user_id);
43610                        return [3, 3];
43611                    case 1: return [4, this.pusher.user.signinDonePromise];
43612                    case 2:
43613                        _a.sent();
43614                        if (this.pusher.user.user_data != null) {
43615                            this.members.setMyID(this.pusher.user.user_data.id);
43616                        }
43617                        else {
43618                            suffix = url_store.buildLogSuffix('authorizationEndpoint');
43619                            logger.error("Invalid auth response for channel '" + this.name + "', " +
43620                                ("expected 'channel_data' field. " + suffix + ", ") +
43621                                "or the user should be signed in.");
43622                            callback('Invalid auth response');
43623                            return [2];
43624                        }
43625                        _a.label = 3;
43626                    case 3:
43627                        callback(error, authData);
43628                        return [2];
43629                }
43630            });
43631        }); });
43632    };
43633    PresenceChannel.prototype.handleEvent = function (event) {
43634        var eventName = event.event;
43635        if (eventName.indexOf('pusher_internal:') === 0) {
43636            this.handleInternalEvent(event);
43637        }
43638        else {
43639            var data = event.data;
43640            var metadata = {};
43641            if (event.user_id) {
43642                metadata.user_id = event.user_id;
43643            }
43644            this.emit(eventName, data, metadata);
43645        }
43646    };
43647    PresenceChannel.prototype.handleInternalEvent = function (event) {
43648        var eventName = event.event;
43649        var data = event.data;
43650        switch (eventName) {
43651            case 'pusher_internal:subscription_succeeded':
43652                this.handleSubscriptionSucceededEvent(event);
43653                break;
43654            case 'pusher_internal:subscription_count':
43655                this.handleSubscriptionCountEvent(event);
43656                break;
43657            case 'pusher_internal:member_added':
43658                var addedMember = this.members.addMember(data);
43659                this.emit('pusher:member_added', addedMember);
43660                break;
43661            case 'pusher_internal:member_removed':
43662                var removedMember = this.members.removeMember(data);
43663                if (removedMember) {
43664                    this.emit('pusher:member_removed', removedMember);
43665                }
43666                break;
43667        }
43668    };
43669    PresenceChannel.prototype.handleSubscriptionSucceededEvent = function (event) {
43670        this.subscriptionPending = false;
43671        this.subscribed = true;
43672        if (this.subscriptionCancelled) {
43673            this.pusher.unsubscribe(this.name);
43674        }
43675        else {
43676            this.members.onSubscription(event.data);
43677            this.emit('pusher:subscription_succeeded', this.members);
43678        }
43679    };
43680    PresenceChannel.prototype.disconnect = function () {
43681        this.members.reset();
43682        _super.prototype.disconnect.call(this);
43683    };
43684    return PresenceChannel;
43685}(private_channel));
43686/* harmony default export */ var presence_channel = (presence_channel_PresenceChannel);
43687
43688// EXTERNAL MODULE: ./node_modules/@stablelib/utf8/lib/utf8.js
43689var utf8 = __nested_webpack_require_20105__(1);
43690
43691// EXTERNAL MODULE: ./node_modules/@stablelib/base64/lib/base64.js
43692var base64 = __nested_webpack_require_20105__(0);
43693
43694// CONCATENATED MODULE: ./src/core/channels/encrypted_channel.ts
43695var encrypted_channel_extends = ( false) || (function () {
43696    var extendStatics = function (d, b) {
43697        extendStatics = Object.setPrototypeOf ||
43698            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
43699            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
43700        return extendStatics(d, b);
43701    };
43702    return function (d, b) {
43703        extendStatics(d, b);
43704        function __() { this.constructor = d; }
43705        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
43706    };
43707})();
43708
43709
43710
43711
43712
43713var encrypted_channel_EncryptedChannel = (function (_super) {
43714    encrypted_channel_extends(EncryptedChannel, _super);
43715    function EncryptedChannel(name, pusher, nacl) {
43716        var _this = _super.call(this, name, pusher) || this;
43717        _this.key = null;
43718        _this.nacl = nacl;
43719        return _this;
43720    }
43721    EncryptedChannel.prototype.authorize = function (socketId, callback) {
43722        var _this = this;
43723        _super.prototype.authorize.call(this, socketId, function (error, authData) {
43724            if (error) {
43725                callback(error, authData);
43726                return;
43727            }
43728            var sharedSecret = authData['shared_secret'];
43729            if (!sharedSecret) {
43730                callback(new Error("No shared_secret key in auth payload for encrypted channel: " + _this.name), null);
43731                return;
43732            }
43733            _this.key = Object(base64["decode"])(sharedSecret);
43734            delete authData['shared_secret'];
43735            callback(null, authData);
43736        });
43737    };
43738    EncryptedChannel.prototype.trigger = function (event, data) {
43739        throw new UnsupportedFeature('Client events are not currently supported for encrypted channels');
43740    };
43741    EncryptedChannel.prototype.handleEvent = function (event) {
43742        var eventName = event.event;
43743        var data = event.data;
43744        if (eventName.indexOf('pusher_internal:') === 0 ||
43745            eventName.indexOf('pusher:') === 0) {
43746            _super.prototype.handleEvent.call(this, event);
43747            return;
43748        }
43749        this.handleEncryptedEvent(eventName, data);
43750    };
43751    EncryptedChannel.prototype.handleEncryptedEvent = function (event, data) {
43752        var _this = this;
43753        if (!this.key) {
43754            logger.debug('Received encrypted event before key has been retrieved from the authEndpoint');
43755            return;
43756        }
43757        if (!data.ciphertext || !data.nonce) {
43758            logger.error('Unexpected format for encrypted event, expected object with `ciphertext` and `nonce` fields, got: ' +
43759                data);
43760            return;
43761        }
43762        var cipherText = Object(base64["decode"])(data.ciphertext);
43763        if (cipherText.length < this.nacl.secretbox.overheadLength) {
43764            logger.error("Expected encrypted event ciphertext length to be " + this.nacl.secretbox.overheadLength + ", got: " + cipherText.length);
43765            return;
43766        }
43767        var nonce = Object(base64["decode"])(data.nonce);
43768        if (nonce.length < this.nacl.secretbox.nonceLength) {
43769            logger.error("Expected encrypted event nonce length to be " + this.nacl.secretbox.nonceLength + ", got: " + nonce.length);
43770            return;
43771        }
43772        var bytes = this.nacl.secretbox.open(cipherText, nonce, this.key);
43773        if (bytes === null) {
43774            logger.debug('Failed to decrypt an event, probably because it was encrypted with a different key. Fetching a new key from the authEndpoint...');
43775            this.authorize(this.pusher.connection.socket_id, function (error, authData) {
43776                if (error) {
43777                    logger.error("Failed to make a request to the authEndpoint: " + authData + ". Unable to fetch new key, so dropping encrypted event");
43778                    return;
43779                }
43780                bytes = _this.nacl.secretbox.open(cipherText, nonce, _this.key);
43781                if (bytes === null) {
43782                    logger.error("Failed to decrypt event with new key. Dropping encrypted event");
43783                    return;
43784                }
43785                _this.emit(event, _this.getDataToEmit(bytes));
43786                return;
43787            });
43788            return;
43789        }
43790        this.emit(event, this.getDataToEmit(bytes));
43791    };
43792    EncryptedChannel.prototype.getDataToEmit = function (bytes) {
43793        var raw = Object(utf8["decode"])(bytes);
43794        try {
43795            return JSON.parse(raw);
43796        }
43797        catch (_a) {
43798            return raw;
43799        }
43800    };
43801    return EncryptedChannel;
43802}(private_channel));
43803/* harmony default export */ var encrypted_channel = (encrypted_channel_EncryptedChannel);
43804
43805// CONCATENATED MODULE: ./src/core/connection/connection_manager.ts
43806var connection_manager_extends = ( false) || (function () {
43807    var extendStatics = function (d, b) {
43808        extendStatics = Object.setPrototypeOf ||
43809            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
43810            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
43811        return extendStatics(d, b);
43812    };
43813    return function (d, b) {
43814        extendStatics(d, b);
43815        function __() { this.constructor = d; }
43816        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
43817    };
43818})();
43819
43820
43821
43822
43823
43824var connection_manager_ConnectionManager = (function (_super) {
43825    connection_manager_extends(ConnectionManager, _super);
43826    function ConnectionManager(key, options) {
43827        var _this = _super.call(this) || this;
43828        _this.state = 'initialized';
43829        _this.connection = null;
43830        _this.key = key;
43831        _this.options = options;
43832        _this.timeline = _this.options.timeline;
43833        _this.usingTLS = _this.options.useTLS;
43834        _this.errorCallbacks = _this.buildErrorCallbacks();
43835        _this.connectionCallbacks = _this.buildConnectionCallbacks(_this.errorCallbacks);
43836        _this.handshakeCallbacks = _this.buildHandshakeCallbacks(_this.errorCallbacks);
43837        var Network = runtime.getNetwork();
43838        Network.bind('online', function () {
43839            _this.timeline.info({ netinfo: 'online' });
43840            if (_this.state === 'connecting' || _this.state === 'unavailable') {
43841                _this.retryIn(0);
43842            }
43843        });
43844        Network.bind('offline', function () {
43845            _this.timeline.info({ netinfo: 'offline' });
43846            if (_this.connection) {
43847                _this.sendActivityCheck();
43848            }
43849        });
43850        _this.updateStrategy();
43851        return _this;
43852    }
43853    ConnectionManager.prototype.connect = function () {
43854        if (this.connection || this.runner) {
43855            return;
43856        }
43857        if (!this.strategy.isSupported()) {
43858            this.updateState('failed');
43859            return;
43860        }
43861        this.updateState('connecting');
43862        this.startConnecting();
43863        this.setUnavailableTimer();
43864    };
43865    ConnectionManager.prototype.send = function (data) {
43866        if (this.connection) {
43867            return this.connection.send(data);
43868        }
43869        else {
43870            return false;
43871        }
43872    };
43873    ConnectionManager.prototype.send_event = function (name, data, channel) {
43874        if (this.connection) {
43875            return this.connection.send_event(name, data, channel);
43876        }
43877        else {
43878            return false;
43879        }
43880    };
43881    ConnectionManager.prototype.disconnect = function () {
43882        this.disconnectInternally();
43883        this.updateState('disconnected');
43884    };
43885    ConnectionManager.prototype.isUsingTLS = function () {
43886        return this.usingTLS;
43887    };
43888    ConnectionManager.prototype.startConnecting = function () {
43889        var _this = this;
43890        var callback = function (error, handshake) {
43891            if (error) {
43892                _this.runner = _this.strategy.connect(0, callback);
43893            }
43894            else {
43895                if (handshake.action === 'error') {
43896                    _this.emit('error', {
43897                        type: 'HandshakeError',
43898                        error: handshake.error
43899                    });
43900                    _this.timeline.error({ handshakeError: handshake.error });
43901                }
43902                else {
43903                    _this.abortConnecting();
43904                    _this.handshakeCallbacks[handshake.action](handshake);
43905                }
43906            }
43907        };
43908        this.runner = this.strategy.connect(0, callback);
43909    };
43910    ConnectionManager.prototype.abortConnecting = function () {
43911        if (this.runner) {
43912            this.runner.abort();
43913            this.runner = null;
43914        }
43915    };
43916    ConnectionManager.prototype.disconnectInternally = function () {
43917        this.abortConnecting();
43918        this.clearRetryTimer();
43919        this.clearUnavailableTimer();
43920        if (this.connection) {
43921            var connection = this.abandonConnection();
43922            connection.close();
43923        }
43924    };
43925    ConnectionManager.prototype.updateStrategy = function () {
43926        this.strategy = this.options.getStrategy({
43927            key: this.key,
43928            timeline: this.timeline,
43929            useTLS: this.usingTLS
43930        });
43931    };
43932    ConnectionManager.prototype.retryIn = function (delay) {
43933        var _this = this;
43934        this.timeline.info({ action: 'retry', delay: delay });
43935        if (delay > 0) {
43936            this.emit('connecting_in', Math.round(delay / 1000));
43937        }
43938        this.retryTimer = new OneOffTimer(delay || 0, function () {
43939            _this.disconnectInternally();
43940            _this.connect();
43941        });
43942    };
43943    ConnectionManager.prototype.clearRetryTimer = function () {
43944        if (this.retryTimer) {
43945            this.retryTimer.ensureAborted();
43946            this.retryTimer = null;
43947        }
43948    };
43949    ConnectionManager.prototype.setUnavailableTimer = function () {
43950        var _this = this;
43951        this.unavailableTimer = new OneOffTimer(this.options.unavailableTimeout, function () {
43952            _this.updateState('unavailable');
43953        });
43954    };
43955    ConnectionManager.prototype.clearUnavailableTimer = function () {
43956        if (this.unavailableTimer) {
43957            this.unavailableTimer.ensureAborted();
43958        }
43959    };
43960    ConnectionManager.prototype.sendActivityCheck = function () {
43961        var _this = this;
43962        this.stopActivityCheck();
43963        this.connection.ping();
43964        this.activityTimer = new OneOffTimer(this.options.pongTimeout, function () {
43965            _this.timeline.error({ pong_timed_out: _this.options.pongTimeout });
43966            _this.retryIn(0);
43967        });
43968    };
43969    ConnectionManager.prototype.resetActivityCheck = function () {
43970        var _this = this;
43971        this.stopActivityCheck();
43972        if (this.connection && !this.connection.handlesActivityChecks()) {
43973            this.activityTimer = new OneOffTimer(this.activityTimeout, function () {
43974                _this.sendActivityCheck();
43975            });
43976        }
43977    };
43978    ConnectionManager.prototype.stopActivityCheck = function () {
43979        if (this.activityTimer) {
43980            this.activityTimer.ensureAborted();
43981        }
43982    };
43983    ConnectionManager.prototype.buildConnectionCallbacks = function (errorCallbacks) {
43984        var _this = this;
43985        return extend({}, errorCallbacks, {
43986            message: function (message) {
43987                _this.resetActivityCheck();
43988                _this.emit('message', message);
43989            },
43990            ping: function () {
43991                _this.send_event('pusher:pong', {});
43992            },
43993            activity: function () {
43994                _this.resetActivityCheck();
43995            },
43996            error: function (error) {
43997                _this.emit('error', error);
43998            },
43999            closed: function () {
44000                _this.abandonConnection();
44001                if (_this.shouldRetry()) {
44002                    _this.retryIn(1000);
44003                }
44004            }
44005        });
44006    };
44007    ConnectionManager.prototype.buildHandshakeCallbacks = function (errorCallbacks) {
44008        var _this = this;
44009        return extend({}, errorCallbacks, {
44010            connected: function (handshake) {
44011                _this.activityTimeout = Math.min(_this.options.activityTimeout, handshake.activityTimeout, handshake.connection.activityTimeout || Infinity);
44012                _this.clearUnavailableTimer();
44013                _this.setConnection(handshake.connection);
44014                _this.socket_id = _this.connection.id;
44015                _this.updateState('connected', { socket_id: _this.socket_id });
44016            }
44017        });
44018    };
44019    ConnectionManager.prototype.buildErrorCallbacks = function () {
44020        var _this = this;
44021        var withErrorEmitted = function (callback) {
44022            return function (result) {
44023                if (result.error) {
44024                    _this.emit('error', { type: 'WebSocketError', error: result.error });
44025                }
44026                callback(result);
44027            };
44028        };
44029        return {
44030            tls_only: withErrorEmitted(function () {
44031                _this.usingTLS = true;
44032                _this.updateStrategy();
44033                _this.retryIn(0);
44034            }),
44035            refused: withErrorEmitted(function () {
44036                _this.disconnect();
44037            }),
44038            backoff: withErrorEmitted(function () {
44039                _this.retryIn(1000);
44040            }),
44041            retry: withErrorEmitted(function () {
44042                _this.retryIn(0);
44043            })
44044        };
44045    };
44046    ConnectionManager.prototype.setConnection = function (connection) {
44047        this.connection = connection;
44048        for (var event in this.connectionCallbacks) {
44049            this.connection.bind(event, this.connectionCallbacks[event]);
44050        }
44051        this.resetActivityCheck();
44052    };
44053    ConnectionManager.prototype.abandonConnection = function () {
44054        if (!this.connection) {
44055            return;
44056        }
44057        this.stopActivityCheck();
44058        for (var event in this.connectionCallbacks) {
44059            this.connection.unbind(event, this.connectionCallbacks[event]);
44060        }
44061        var connection = this.connection;
44062        this.connection = null;
44063        return connection;
44064    };
44065    ConnectionManager.prototype.updateState = function (newState, data) {
44066        var previousState = this.state;
44067        this.state = newState;
44068        if (previousState !== newState) {
44069            var newStateDescription = newState;
44070            if (newStateDescription === 'connected') {
44071                newStateDescription += ' with new socket ID ' + data.socket_id;
44072            }
44073            logger.debug('State changed', previousState + ' -> ' + newStateDescription);
44074            this.timeline.info({ state: newState, params: data });
44075            this.emit('state_change', { previous: previousState, current: newState });
44076            this.emit(newState, data);
44077        }
44078    };
44079    ConnectionManager.prototype.shouldRetry = function () {
44080        return this.state === 'connecting' || this.state === 'connected';
44081    };
44082    return ConnectionManager;
44083}(dispatcher));
44084/* harmony default export */ var connection_manager = (connection_manager_ConnectionManager);
44085
44086// CONCATENATED MODULE: ./src/core/channels/channels.ts
44087
44088
44089
44090
44091var channels_Channels = (function () {
44092    function Channels() {
44093        this.channels = {};
44094    }
44095    Channels.prototype.add = function (name, pusher) {
44096        if (!this.channels[name]) {
44097            this.channels[name] = createChannel(name, pusher);
44098        }
44099        return this.channels[name];
44100    };
44101    Channels.prototype.all = function () {
44102        return values(this.channels);
44103    };
44104    Channels.prototype.find = function (name) {
44105        return this.channels[name];
44106    };
44107    Channels.prototype.remove = function (name) {
44108        var channel = this.channels[name];
44109        delete this.channels[name];
44110        return channel;
44111    };
44112    Channels.prototype.disconnect = function () {
44113        objectApply(this.channels, function (channel) {
44114            channel.disconnect();
44115        });
44116    };
44117    return Channels;
44118}());
44119/* harmony default export */ var channels = (channels_Channels);
44120function createChannel(name, pusher) {
44121    if (name.indexOf('private-encrypted-') === 0) {
44122        if (pusher.config.nacl) {
44123            return factory.createEncryptedChannel(name, pusher, pusher.config.nacl);
44124        }
44125        var errMsg = 'Tried to subscribe to a private-encrypted- channel but no nacl implementation available';
44126        var suffix = url_store.buildLogSuffix('encryptedChannelSupport');
44127        throw new UnsupportedFeature(errMsg + ". " + suffix);
44128    }
44129    else if (name.indexOf('private-') === 0) {
44130        return factory.createPrivateChannel(name, pusher);
44131    }
44132    else if (name.indexOf('presence-') === 0) {
44133        return factory.createPresenceChannel(name, pusher);
44134    }
44135    else if (name.indexOf('#') === 0) {
44136        throw new BadChannelName('Cannot create a channel with name "' + name + '".');
44137    }
44138    else {
44139        return factory.createChannel(name, pusher);
44140    }
44141}
44142
44143// CONCATENATED MODULE: ./src/core/utils/factory.ts
44144
44145
44146
44147
44148
44149
44150
44151
44152
44153var Factory = {
44154    createChannels: function () {
44155        return new channels();
44156    },
44157    createConnectionManager: function (key, options) {
44158        return new connection_manager(key, options);
44159    },
44160    createChannel: function (name, pusher) {
44161        return new channels_channel(name, pusher);
44162    },
44163    createPrivateChannel: function (name, pusher) {
44164        return new private_channel(name, pusher);
44165    },
44166    createPresenceChannel: function (name, pusher) {
44167        return new presence_channel(name, pusher);
44168    },
44169    createEncryptedChannel: function (name, pusher, nacl) {
44170        return new encrypted_channel(name, pusher, nacl);
44171    },
44172    createTimelineSender: function (timeline, options) {
44173        return new timeline_sender(timeline, options);
44174    },
44175    createHandshake: function (transport, callback) {
44176        return new connection_handshake(transport, callback);
44177    },
44178    createAssistantToTheTransportManager: function (manager, transport, options) {
44179        return new assistant_to_the_transport_manager(manager, transport, options);
44180    }
44181};
44182/* harmony default export */ var factory = (Factory);
44183
44184// CONCATENATED MODULE: ./src/core/transports/transport_manager.ts
44185
44186var transport_manager_TransportManager = (function () {
44187    function TransportManager(options) {
44188        this.options = options || {};
44189        this.livesLeft = this.options.lives || Infinity;
44190    }
44191    TransportManager.prototype.getAssistant = function (transport) {
44192        return factory.createAssistantToTheTransportManager(this, transport, {
44193            minPingDelay: this.options.minPingDelay,
44194            maxPingDelay: this.options.maxPingDelay
44195        });
44196    };
44197    TransportManager.prototype.isAlive = function () {
44198        return this.livesLeft > 0;
44199    };
44200    TransportManager.prototype.reportDeath = function () {
44201        this.livesLeft -= 1;
44202    };
44203    return TransportManager;
44204}());
44205/* harmony default export */ var transport_manager = (transport_manager_TransportManager);
44206
44207// CONCATENATED MODULE: ./src/core/strategies/sequential_strategy.ts
44208
44209
44210
44211var sequential_strategy_SequentialStrategy = (function () {
44212    function SequentialStrategy(strategies, options) {
44213        this.strategies = strategies;
44214        this.loop = Boolean(options.loop);
44215        this.failFast = Boolean(options.failFast);
44216        this.timeout = options.timeout;
44217        this.timeoutLimit = options.timeoutLimit;
44218    }
44219    SequentialStrategy.prototype.isSupported = function () {
44220        return any(this.strategies, util.method('isSupported'));
44221    };
44222    SequentialStrategy.prototype.connect = function (minPriority, callback) {
44223        var _this = this;
44224        var strategies = this.strategies;
44225        var current = 0;
44226        var timeout = this.timeout;
44227        var runner = null;
44228        var tryNextStrategy = function (error, handshake) {
44229            if (handshake) {
44230                callback(null, handshake);
44231            }
44232            else {
44233                current = current + 1;
44234                if (_this.loop) {
44235                    current = current % strategies.length;
44236                }
44237                if (current < strategies.length) {
44238                    if (timeout) {
44239                        timeout = timeout * 2;
44240                        if (_this.timeoutLimit) {
44241                            timeout = Math.min(timeout, _this.timeoutLimit);
44242                        }
44243                    }
44244                    runner = _this.tryStrategy(strategies[current], minPriority, { timeout: timeout, failFast: _this.failFast }, tryNextStrategy);
44245                }
44246                else {
44247                    callback(true);
44248                }
44249            }
44250        };
44251        runner = this.tryStrategy(strategies[current], minPriority, { timeout: timeout, failFast: this.failFast }, tryNextStrategy);
44252        return {
44253            abort: function () {
44254                runner.abort();
44255            },
44256            forceMinPriority: function (p) {
44257                minPriority = p;
44258                if (runner) {
44259                    runner.forceMinPriority(p);
44260                }
44261            }
44262        };
44263    };
44264    SequentialStrategy.prototype.tryStrategy = function (strategy, minPriority, options, callback) {
44265        var timer = null;
44266        var runner = null;
44267        if (options.timeout > 0) {
44268            timer = new OneOffTimer(options.timeout, function () {
44269                runner.abort();
44270                callback(true);
44271            });
44272        }
44273        runner = strategy.connect(minPriority, function (error, handshake) {
44274            if (error && timer && timer.isRunning() && !options.failFast) {
44275                return;
44276            }
44277            if (timer) {
44278                timer.ensureAborted();
44279            }
44280            callback(error, handshake);
44281        });
44282        return {
44283            abort: function () {
44284                if (timer) {
44285                    timer.ensureAborted();
44286                }
44287                runner.abort();
44288            },
44289            forceMinPriority: function (p) {
44290                runner.forceMinPriority(p);
44291            }
44292        };
44293    };
44294    return SequentialStrategy;
44295}());
44296/* harmony default export */ var sequential_strategy = (sequential_strategy_SequentialStrategy);
44297
44298// CONCATENATED MODULE: ./src/core/strategies/best_connected_ever_strategy.ts
44299
44300
44301var best_connected_ever_strategy_BestConnectedEverStrategy = (function () {
44302    function BestConnectedEverStrategy(strategies) {
44303        this.strategies = strategies;
44304    }
44305    BestConnectedEverStrategy.prototype.isSupported = function () {
44306        return any(this.strategies, util.method('isSupported'));
44307    };
44308    BestConnectedEverStrategy.prototype.connect = function (minPriority, callback) {
44309        return connect(this.strategies, minPriority, function (i, runners) {
44310            return function (error, handshake) {
44311                runners[i].error = error;
44312                if (error) {
44313                    if (allRunnersFailed(runners)) {
44314                        callback(true);
44315                    }
44316                    return;
44317                }
44318                apply(runners, function (runner) {
44319                    runner.forceMinPriority(handshake.transport.priority);
44320                });
44321                callback(null, handshake);
44322            };
44323        });
44324    };
44325    return BestConnectedEverStrategy;
44326}());
44327/* harmony default export */ var best_connected_ever_strategy = (best_connected_ever_strategy_BestConnectedEverStrategy);
44328function connect(strategies, minPriority, callbackBuilder) {
44329    var runners = map(strategies, function (strategy, i, _, rs) {
44330        return strategy.connect(minPriority, callbackBuilder(i, rs));
44331    });
44332    return {
44333        abort: function () {
44334            apply(runners, abortRunner);
44335        },
44336        forceMinPriority: function (p) {
44337            apply(runners, function (runner) {
44338                runner.forceMinPriority(p);
44339            });
44340        }
44341    };
44342}
44343function allRunnersFailed(runners) {
44344    return collections_all(runners, function (runner) {
44345        return Boolean(runner.error);
44346    });
44347}
44348function abortRunner(runner) {
44349    if (!runner.error && !runner.aborted) {
44350        runner.abort();
44351        runner.aborted = true;
44352    }
44353}
44354
44355// CONCATENATED MODULE: ./src/core/strategies/cached_strategy.ts
44356
44357
44358
44359
44360var cached_strategy_CachedStrategy = (function () {
44361    function CachedStrategy(strategy, transports, options) {
44362        this.strategy = strategy;
44363        this.transports = transports;
44364        this.ttl = options.ttl || 1800 * 1000;
44365        this.usingTLS = options.useTLS;
44366        this.timeline = options.timeline;
44367    }
44368    CachedStrategy.prototype.isSupported = function () {
44369        return this.strategy.isSupported();
44370    };
44371    CachedStrategy.prototype.connect = function (minPriority, callback) {
44372        var usingTLS = this.usingTLS;
44373        var info = fetchTransportCache(usingTLS);
44374        var strategies = [this.strategy];
44375        if (info && info.timestamp + this.ttl >= util.now()) {
44376            var transport = this.transports[info.transport];
44377            if (transport) {
44378                this.timeline.info({
44379                    cached: true,
44380                    transport: info.transport,
44381                    latency: info.latency
44382                });
44383                strategies.push(new sequential_strategy([transport], {
44384                    timeout: info.latency * 2 + 1000,
44385                    failFast: true
44386                }));
44387            }
44388        }
44389        var startTimestamp = util.now();
44390        var runner = strategies
44391            .pop()
44392            .connect(minPriority, function cb(error, handshake) {
44393            if (error) {
44394                flushTransportCache(usingTLS);
44395                if (strategies.length > 0) {
44396                    startTimestamp = util.now();
44397                    runner = strategies.pop().connect(minPriority, cb);
44398                }
44399                else {
44400                    callback(error);
44401                }
44402            }
44403            else {
44404                storeTransportCache(usingTLS, handshake.transport.name, util.now() - startTimestamp);
44405                callback(null, handshake);
44406            }
44407        });
44408        return {
44409            abort: function () {
44410                runner.abort();
44411            },
44412            forceMinPriority: function (p) {
44413                minPriority = p;
44414                if (runner) {
44415                    runner.forceMinPriority(p);
44416                }
44417            }
44418        };
44419    };
44420    return CachedStrategy;
44421}());
44422/* harmony default export */ var cached_strategy = (cached_strategy_CachedStrategy);
44423function getTransportCacheKey(usingTLS) {
44424    return 'pusherTransport' + (usingTLS ? 'TLS' : 'NonTLS');
44425}
44426function fetchTransportCache(usingTLS) {
44427    var storage = runtime.getLocalStorage();
44428    if (storage) {
44429        try {
44430            var serializedCache = storage[getTransportCacheKey(usingTLS)];
44431            if (serializedCache) {
44432                return JSON.parse(serializedCache);
44433            }
44434        }
44435        catch (e) {
44436            flushTransportCache(usingTLS);
44437        }
44438    }
44439    return null;
44440}
44441function storeTransportCache(usingTLS, transport, latency) {
44442    var storage = runtime.getLocalStorage();
44443    if (storage) {
44444        try {
44445            storage[getTransportCacheKey(usingTLS)] = safeJSONStringify({
44446                timestamp: util.now(),
44447                transport: transport,
44448                latency: latency
44449            });
44450        }
44451        catch (e) {
44452        }
44453    }
44454}
44455function flushTransportCache(usingTLS) {
44456    var storage = runtime.getLocalStorage();
44457    if (storage) {
44458        try {
44459            delete storage[getTransportCacheKey(usingTLS)];
44460        }
44461        catch (e) {
44462        }
44463    }
44464}
44465
44466// CONCATENATED MODULE: ./src/core/strategies/delayed_strategy.ts
44467
44468var delayed_strategy_DelayedStrategy = (function () {
44469    function DelayedStrategy(strategy, _a) {
44470        var number = _a.delay;
44471        this.strategy = strategy;
44472        this.options = { delay: number };
44473    }
44474    DelayedStrategy.prototype.isSupported = function () {
44475        return this.strategy.isSupported();
44476    };
44477    DelayedStrategy.prototype.connect = function (minPriority, callback) {
44478        var strategy = this.strategy;
44479        var runner;
44480        var timer = new OneOffTimer(this.options.delay, function () {
44481            runner = strategy.connect(minPriority, callback);
44482        });
44483        return {
44484            abort: function () {
44485                timer.ensureAborted();
44486                if (runner) {
44487                    runner.abort();
44488                }
44489            },
44490            forceMinPriority: function (p) {
44491                minPriority = p;
44492                if (runner) {
44493                    runner.forceMinPriority(p);
44494                }
44495            }
44496        };
44497    };
44498    return DelayedStrategy;
44499}());
44500/* harmony default export */ var delayed_strategy = (delayed_strategy_DelayedStrategy);
44501
44502// CONCATENATED MODULE: ./src/core/strategies/if_strategy.ts
44503var IfStrategy = (function () {
44504    function IfStrategy(test, trueBranch, falseBranch) {
44505        this.test = test;
44506        this.trueBranch = trueBranch;
44507        this.falseBranch = falseBranch;
44508    }
44509    IfStrategy.prototype.isSupported = function () {
44510        var branch = this.test() ? this.trueBranch : this.falseBranch;
44511        return branch.isSupported();
44512    };
44513    IfStrategy.prototype.connect = function (minPriority, callback) {
44514        var branch = this.test() ? this.trueBranch : this.falseBranch;
44515        return branch.connect(minPriority, callback);
44516    };
44517    return IfStrategy;
44518}());
44519/* harmony default export */ var if_strategy = (IfStrategy);
44520
44521// CONCATENATED MODULE: ./src/core/strategies/first_connected_strategy.ts
44522var FirstConnectedStrategy = (function () {
44523    function FirstConnectedStrategy(strategy) {
44524        this.strategy = strategy;
44525    }
44526    FirstConnectedStrategy.prototype.isSupported = function () {
44527        return this.strategy.isSupported();
44528    };
44529    FirstConnectedStrategy.prototype.connect = function (minPriority, callback) {
44530        var runner = this.strategy.connect(minPriority, function (error, handshake) {
44531            if (handshake) {
44532                runner.abort();
44533            }
44534            callback(error, handshake);
44535        });
44536        return runner;
44537    };
44538    return FirstConnectedStrategy;
44539}());
44540/* harmony default export */ var first_connected_strategy = (FirstConnectedStrategy);
44541
44542// CONCATENATED MODULE: ./src/runtimes/web/default_strategy.ts
44543
44544
44545
44546
44547
44548
44549
44550function testSupportsStrategy(strategy) {
44551    return function () {
44552        return strategy.isSupported();
44553    };
44554}
44555var getDefaultStrategy = function (config, baseOptions, defineTransport) {
44556    var definedTransports = {};
44557    function defineTransportStrategy(name, type, priority, options, manager) {
44558        var transport = defineTransport(config, name, type, priority, options, manager);
44559        definedTransports[name] = transport;
44560        return transport;
44561    }
44562    var ws_options = Object.assign({}, baseOptions, {
44563        hostNonTLS: config.wsHost + ':' + config.wsPort,
44564        hostTLS: config.wsHost + ':' + config.wssPort,
44565        httpPath: config.wsPath
44566    });
44567    var wss_options = Object.assign({}, ws_options, {
44568        useTLS: true
44569    });
44570    var sockjs_options = Object.assign({}, baseOptions, {
44571        hostNonTLS: config.httpHost + ':' + config.httpPort,
44572        hostTLS: config.httpHost + ':' + config.httpsPort,
44573        httpPath: config.httpPath
44574    });
44575    var timeouts = {
44576        loop: true,
44577        timeout: 15000,
44578        timeoutLimit: 60000
44579    };
44580    var ws_manager = new transport_manager({
44581        lives: 2,
44582        minPingDelay: 10000,
44583        maxPingDelay: config.activityTimeout
44584    });
44585    var streaming_manager = new transport_manager({
44586        lives: 2,
44587        minPingDelay: 10000,
44588        maxPingDelay: config.activityTimeout
44589    });
44590    var ws_transport = defineTransportStrategy('ws', 'ws', 3, ws_options, ws_manager);
44591    var wss_transport = defineTransportStrategy('wss', 'ws', 3, wss_options, ws_manager);
44592    var sockjs_transport = defineTransportStrategy('sockjs', 'sockjs', 1, sockjs_options);
44593    var xhr_streaming_transport = defineTransportStrategy('xhr_streaming', 'xhr_streaming', 1, sockjs_options, streaming_manager);
44594    var xdr_streaming_transport = defineTransportStrategy('xdr_streaming', 'xdr_streaming', 1, sockjs_options, streaming_manager);
44595    var xhr_polling_transport = defineTransportStrategy('xhr_polling', 'xhr_polling', 1, sockjs_options);
44596    var xdr_polling_transport = defineTransportStrategy('xdr_polling', 'xdr_polling', 1, sockjs_options);
44597    var ws_loop = new sequential_strategy([ws_transport], timeouts);
44598    var wss_loop = new sequential_strategy([wss_transport], timeouts);
44599    var sockjs_loop = new sequential_strategy([sockjs_transport], timeouts);
44600    var streaming_loop = new sequential_strategy([
44601        new if_strategy(testSupportsStrategy(xhr_streaming_transport), xhr_streaming_transport, xdr_streaming_transport)
44602    ], timeouts);
44603    var polling_loop = new sequential_strategy([
44604        new if_strategy(testSupportsStrategy(xhr_polling_transport), xhr_polling_transport, xdr_polling_transport)
44605    ], timeouts);
44606    var http_loop = new sequential_strategy([
44607        new if_strategy(testSupportsStrategy(streaming_loop), new best_connected_ever_strategy([
44608            streaming_loop,
44609            new delayed_strategy(polling_loop, { delay: 4000 })
44610        ]), polling_loop)
44611    ], timeouts);
44612    var http_fallback_loop = new if_strategy(testSupportsStrategy(http_loop), http_loop, sockjs_loop);
44613    var wsStrategy;
44614    if (baseOptions.useTLS) {
44615        wsStrategy = new best_connected_ever_strategy([
44616            ws_loop,
44617            new delayed_strategy(http_fallback_loop, { delay: 2000 })
44618        ]);
44619    }
44620    else {
44621        wsStrategy = new best_connected_ever_strategy([
44622            ws_loop,
44623            new delayed_strategy(wss_loop, { delay: 2000 }),
44624            new delayed_strategy(http_fallback_loop, { delay: 5000 })
44625        ]);
44626    }
44627    return new cached_strategy(new first_connected_strategy(new if_strategy(testSupportsStrategy(ws_transport), wsStrategy, http_fallback_loop)), definedTransports, {
44628        ttl: 1800000,
44629        timeline: baseOptions.timeline,
44630        useTLS: baseOptions.useTLS
44631    });
44632};
44633/* harmony default export */ var default_strategy = (getDefaultStrategy);
44634
44635// CONCATENATED MODULE: ./src/runtimes/web/transports/transport_connection_initializer.ts
44636
44637/* harmony default export */ var transport_connection_initializer = (function () {
44638    var self = this;
44639    self.timeline.info(self.buildTimelineMessage({
44640        transport: self.name + (self.options.useTLS ? 's' : '')
44641    }));
44642    if (self.hooks.isInitialized()) {
44643        self.changeState('initialized');
44644    }
44645    else if (self.hooks.file) {
44646        self.changeState('initializing');
44647        Dependencies.load(self.hooks.file, { useTLS: self.options.useTLS }, function (error, callback) {
44648            if (self.hooks.isInitialized()) {
44649                self.changeState('initialized');
44650                callback(true);
44651            }
44652            else {
44653                if (error) {
44654                    self.onError(error);
44655                }
44656                self.onClose();
44657                callback(false);
44658            }
44659        });
44660    }
44661    else {
44662        self.onClose();
44663    }
44664});
44665
44666// CONCATENATED MODULE: ./src/runtimes/web/http/http_xdomain_request.ts
44667
44668var http_xdomain_request_hooks = {
44669    getRequest: function (socket) {
44670        var xdr = new window.XDomainRequest();
44671        xdr.ontimeout = function () {
44672            socket.emit('error', new RequestTimedOut());
44673            socket.close();
44674        };
44675        xdr.onerror = function (e) {
44676            socket.emit('error', e);
44677            socket.close();
44678        };
44679        xdr.onprogress = function () {
44680            if (xdr.responseText && xdr.responseText.length > 0) {
44681                socket.onChunk(200, xdr.responseText);
44682            }
44683        };
44684        xdr.onload = function () {
44685            if (xdr.responseText && xdr.responseText.length > 0) {
44686                socket.onChunk(200, xdr.responseText);
44687            }
44688            socket.emit('finished', 200);
44689            socket.close();
44690        };
44691        return xdr;
44692    },
44693    abortRequest: function (xdr) {
44694        xdr.ontimeout = xdr.onerror = xdr.onprogress = xdr.onload = null;
44695        xdr.abort();
44696    }
44697};
44698/* harmony default export */ var http_xdomain_request = (http_xdomain_request_hooks);
44699
44700// CONCATENATED MODULE: ./src/core/http/http_request.ts
44701var http_request_extends = ( false) || (function () {
44702    var extendStatics = function (d, b) {
44703        extendStatics = Object.setPrototypeOf ||
44704            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
44705            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
44706        return extendStatics(d, b);
44707    };
44708    return function (d, b) {
44709        extendStatics(d, b);
44710        function __() { this.constructor = d; }
44711        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
44712    };
44713})();
44714
44715
44716var MAX_BUFFER_LENGTH = 256 * 1024;
44717var http_request_HTTPRequest = (function (_super) {
44718    http_request_extends(HTTPRequest, _super);
44719    function HTTPRequest(hooks, method, url) {
44720        var _this = _super.call(this) || this;
44721        _this.hooks = hooks;
44722        _this.method = method;
44723        _this.url = url;
44724        return _this;
44725    }
44726    HTTPRequest.prototype.start = function (payload) {
44727        var _this = this;
44728        this.position = 0;
44729        this.xhr = this.hooks.getRequest(this);
44730        this.unloader = function () {
44731            _this.close();
44732        };
44733        runtime.addUnloadListener(this.unloader);
44734        this.xhr.open(this.method, this.url, true);
44735        if (this.xhr.setRequestHeader) {
44736            this.xhr.setRequestHeader('Content-Type', 'application/json');
44737        }
44738        this.xhr.send(payload);
44739    };
44740    HTTPRequest.prototype.close = function () {
44741        if (this.unloader) {
44742            runtime.removeUnloadListener(this.unloader);
44743            this.unloader = null;
44744        }
44745        if (this.xhr) {
44746            this.hooks.abortRequest(this.xhr);
44747            this.xhr = null;
44748        }
44749    };
44750    HTTPRequest.prototype.onChunk = function (status, data) {
44751        while (true) {
44752            var chunk = this.advanceBuffer(data);
44753            if (chunk) {
44754                this.emit('chunk', { status: status, data: chunk });
44755            }
44756            else {
44757                break;
44758            }
44759        }
44760        if (this.isBufferTooLong(data)) {
44761            this.emit('buffer_too_long');
44762        }
44763    };
44764    HTTPRequest.prototype.advanceBuffer = function (buffer) {
44765        var unreadData = buffer.slice(this.position);
44766        var endOfLinePosition = unreadData.indexOf('\n');
44767        if (endOfLinePosition !== -1) {
44768            this.position += endOfLinePosition + 1;
44769            return unreadData.slice(0, endOfLinePosition);
44770        }
44771        else {
44772            return null;
44773        }
44774    };
44775    HTTPRequest.prototype.isBufferTooLong = function (buffer) {
44776        return this.position === buffer.length && buffer.length > MAX_BUFFER_LENGTH;
44777    };
44778    return HTTPRequest;
44779}(dispatcher));
44780/* harmony default export */ var http_request = (http_request_HTTPRequest);
44781
44782// CONCATENATED MODULE: ./src/core/http/state.ts
44783var State;
44784(function (State) {
44785    State[State["CONNECTING"] = 0] = "CONNECTING";
44786    State[State["OPEN"] = 1] = "OPEN";
44787    State[State["CLOSED"] = 3] = "CLOSED";
44788})(State || (State = {}));
44789/* harmony default export */ var state = (State);
44790
44791// CONCATENATED MODULE: ./src/core/http/http_socket.ts
44792
44793
44794
44795var autoIncrement = 1;
44796var http_socket_HTTPSocket = (function () {
44797    function HTTPSocket(hooks, url) {
44798        this.hooks = hooks;
44799        this.session = randomNumber(1000) + '/' + randomString(8);
44800        this.location = getLocation(url);
44801        this.readyState = state.CONNECTING;
44802        this.openStream();
44803    }
44804    HTTPSocket.prototype.send = function (payload) {
44805        return this.sendRaw(JSON.stringify([payload]));
44806    };
44807    HTTPSocket.prototype.ping = function () {
44808        this.hooks.sendHeartbeat(this);
44809    };
44810    HTTPSocket.prototype.close = function (code, reason) {
44811        this.onClose(code, reason, true);
44812    };
44813    HTTPSocket.prototype.sendRaw = function (payload) {
44814        if (this.readyState === state.OPEN) {
44815            try {
44816                runtime.createSocketRequest('POST', getUniqueURL(getSendURL(this.location, this.session))).start(payload);
44817                return true;
44818            }
44819            catch (e) {
44820                return false;
44821            }
44822        }
44823        else {
44824            return false;
44825        }
44826    };
44827    HTTPSocket.prototype.reconnect = function () {
44828        this.closeStream();
44829        this.openStream();
44830    };
44831    HTTPSocket.prototype.onClose = function (code, reason, wasClean) {
44832        this.closeStream();
44833        this.readyState = state.CLOSED;
44834        if (this.onclose) {
44835            this.onclose({
44836                code: code,
44837                reason: reason,
44838                wasClean: wasClean
44839            });
44840        }
44841    };
44842    HTTPSocket.prototype.onChunk = function (chunk) {
44843        if (chunk.status !== 200) {
44844            return;
44845        }
44846        if (this.readyState === state.OPEN) {
44847            this.onActivity();
44848        }
44849        var payload;
44850        var type = chunk.data.slice(0, 1);
44851        switch (type) {
44852            case 'o':
44853                payload = JSON.parse(chunk.data.slice(1) || '{}');
44854                this.onOpen(payload);
44855                break;
44856            case 'a':
44857                payload = JSON.parse(chunk.data.slice(1) || '[]');
44858                for (var i = 0; i < payload.length; i++) {
44859                    this.onEvent(payload[i]);
44860                }
44861                break;
44862            case 'm':
44863                payload = JSON.parse(chunk.data.slice(1) || 'null');
44864                this.onEvent(payload);
44865                break;
44866            case 'h':
44867                this.hooks.onHeartbeat(this);
44868                break;
44869            case 'c':
44870                payload = JSON.parse(chunk.data.slice(1) || '[]');
44871                this.onClose(payload[0], payload[1], true);
44872                break;
44873        }
44874    };
44875    HTTPSocket.prototype.onOpen = function (options) {
44876        if (this.readyState === state.CONNECTING) {
44877            if (options && options.hostname) {
44878                this.location.base = replaceHost(this.location.base, options.hostname);
44879            }
44880            this.readyState = state.OPEN;
44881            if (this.onopen) {
44882                this.onopen();
44883            }
44884        }
44885        else {
44886            this.onClose(1006, 'Server lost session', true);
44887        }
44888    };
44889    HTTPSocket.prototype.onEvent = function (event) {
44890        if (this.readyState === state.OPEN && this.onmessage) {
44891            this.onmessage({ data: event });
44892        }
44893    };
44894    HTTPSocket.prototype.onActivity = function () {
44895        if (this.onactivity) {
44896            this.onactivity();
44897        }
44898    };
44899    HTTPSocket.prototype.onError = function (error) {
44900        if (this.onerror) {
44901            this.onerror(error);
44902        }
44903    };
44904    HTTPSocket.prototype.openStream = function () {
44905        var _this = this;
44906        this.stream = runtime.createSocketRequest('POST', getUniqueURL(this.hooks.getReceiveURL(this.location, this.session)));
44907        this.stream.bind('chunk', function (chunk) {
44908            _this.onChunk(chunk);
44909        });
44910        this.stream.bind('finished', function (status) {
44911            _this.hooks.onFinished(_this, status);
44912        });
44913        this.stream.bind('buffer_too_long', function () {
44914            _this.reconnect();
44915        });
44916        try {
44917            this.stream.start();
44918        }
44919        catch (error) {
44920            util.defer(function () {
44921                _this.onError(error);
44922                _this.onClose(1006, 'Could not start streaming', false);
44923            });
44924        }
44925    };
44926    HTTPSocket.prototype.closeStream = function () {
44927        if (this.stream) {
44928            this.stream.unbind_all();
44929            this.stream.close();
44930            this.stream = null;
44931        }
44932    };
44933    return HTTPSocket;
44934}());
44935function getLocation(url) {
44936    var parts = /([^\?]*)\/*(\??.*)/.exec(url);
44937    return {
44938        base: parts[1],
44939        queryString: parts[2]
44940    };
44941}
44942function getSendURL(url, session) {
44943    return url.base + '/' + session + '/xhr_send';
44944}
44945function getUniqueURL(url) {
44946    var separator = url.indexOf('?') === -1 ? '?' : '&';
44947    return url + separator + 't=' + +new Date() + '&n=' + autoIncrement++;
44948}
44949function replaceHost(url, hostname) {
44950    var urlParts = /(https?:\/\/)([^\/:]+)((\/|:)?.*)/.exec(url);
44951    return urlParts[1] + hostname + urlParts[3];
44952}
44953function randomNumber(max) {
44954    return runtime.randomInt(max);
44955}
44956function randomString(length) {
44957    var result = [];
44958    for (var i = 0; i < length; i++) {
44959        result.push(randomNumber(32).toString(32));
44960    }
44961    return result.join('');
44962}
44963/* harmony default export */ var http_socket = (http_socket_HTTPSocket);
44964
44965// CONCATENATED MODULE: ./src/core/http/http_streaming_socket.ts
44966var http_streaming_socket_hooks = {
44967    getReceiveURL: function (url, session) {
44968        return url.base + '/' + session + '/xhr_streaming' + url.queryString;
44969    },
44970    onHeartbeat: function (socket) {
44971        socket.sendRaw('[]');
44972    },
44973    sendHeartbeat: function (socket) {
44974        socket.sendRaw('[]');
44975    },
44976    onFinished: function (socket, status) {
44977        socket.onClose(1006, 'Connection interrupted (' + status + ')', false);
44978    }
44979};
44980/* harmony default export */ var http_streaming_socket = (http_streaming_socket_hooks);
44981
44982// CONCATENATED MODULE: ./src/core/http/http_polling_socket.ts
44983var http_polling_socket_hooks = {
44984    getReceiveURL: function (url, session) {
44985        return url.base + '/' + session + '/xhr' + url.queryString;
44986    },
44987    onHeartbeat: function () {
44988    },
44989    sendHeartbeat: function (socket) {
44990        socket.sendRaw('[]');
44991    },
44992    onFinished: function (socket, status) {
44993        if (status === 200) {
44994            socket.reconnect();
44995        }
44996        else {
44997            socket.onClose(1006, 'Connection interrupted (' + status + ')', false);
44998        }
44999    }
45000};
45001/* harmony default export */ var http_polling_socket = (http_polling_socket_hooks);
45002
45003// CONCATENATED MODULE: ./src/runtimes/isomorphic/http/http_xhr_request.ts
45004
45005var http_xhr_request_hooks = {
45006    getRequest: function (socket) {
45007        var Constructor = runtime.getXHRAPI();
45008        var xhr = new Constructor();
45009        xhr.onreadystatechange = xhr.onprogress = function () {
45010            switch (xhr.readyState) {
45011                case 3:
45012                    if (xhr.responseText && xhr.responseText.length > 0) {
45013                        socket.onChunk(xhr.status, xhr.responseText);
45014                    }
45015                    break;
45016                case 4:
45017                    if (xhr.responseText && xhr.responseText.length > 0) {
45018                        socket.onChunk(xhr.status, xhr.responseText);
45019                    }
45020                    socket.emit('finished', xhr.status);
45021                    socket.close();
45022                    break;
45023            }
45024        };
45025        return xhr;
45026    },
45027    abortRequest: function (xhr) {
45028        xhr.onreadystatechange = null;
45029        xhr.abort();
45030    }
45031};
45032/* harmony default export */ var http_xhr_request = (http_xhr_request_hooks);
45033
45034// CONCATENATED MODULE: ./src/runtimes/isomorphic/http/http.ts
45035
45036
45037
45038
45039
45040var HTTP = {
45041    createStreamingSocket: function (url) {
45042        return this.createSocket(http_streaming_socket, url);
45043    },
45044    createPollingSocket: function (url) {
45045        return this.createSocket(http_polling_socket, url);
45046    },
45047    createSocket: function (hooks, url) {
45048        return new http_socket(hooks, url);
45049    },
45050    createXHR: function (method, url) {
45051        return this.createRequest(http_xhr_request, method, url);
45052    },
45053    createRequest: function (hooks, method, url) {
45054        return new http_request(hooks, method, url);
45055    }
45056};
45057/* harmony default export */ var http_http = (HTTP);
45058
45059// CONCATENATED MODULE: ./src/runtimes/web/http/http.ts
45060
45061
45062http_http.createXDR = function (method, url) {
45063    return this.createRequest(http_xdomain_request, method, url);
45064};
45065/* harmony default export */ var web_http_http = (http_http);
45066
45067// CONCATENATED MODULE: ./src/runtimes/web/runtime.ts
45068
45069
45070
45071
45072
45073
45074
45075
45076
45077
45078
45079
45080var Runtime = {
45081    nextAuthCallbackID: 1,
45082    auth_callbacks: {},
45083    ScriptReceivers: ScriptReceivers,
45084    DependenciesReceivers: DependenciesReceivers,
45085    getDefaultStrategy: default_strategy,
45086    Transports: transports_transports,
45087    transportConnectionInitializer: transport_connection_initializer,
45088    HTTPFactory: web_http_http,
45089    TimelineTransport: jsonp_timeline,
45090    getXHRAPI: function () {
45091        return window.XMLHttpRequest;
45092    },
45093    getWebSocketAPI: function () {
45094        return window.WebSocket || window.MozWebSocket;
45095    },
45096    setup: function (PusherClass) {
45097        var _this = this;
45098        window.Pusher = PusherClass;
45099        var initializeOnDocumentBody = function () {
45100            _this.onDocumentBody(PusherClass.ready);
45101        };
45102        if (!window.JSON) {
45103            Dependencies.load('json2', {}, initializeOnDocumentBody);
45104        }
45105        else {
45106            initializeOnDocumentBody();
45107        }
45108    },
45109    getDocument: function () {
45110        return document;
45111    },
45112    getProtocol: function () {
45113        return this.getDocument().location.protocol;
45114    },
45115    getAuthorizers: function () {
45116        return { ajax: xhr_auth, jsonp: jsonp_auth };
45117    },
45118    onDocumentBody: function (callback) {
45119        var _this = this;
45120        if (document.body) {
45121            callback();
45122        }
45123        else {
45124            setTimeout(function () {
45125                _this.onDocumentBody(callback);
45126            }, 0);
45127        }
45128    },
45129    createJSONPRequest: function (url, data) {
45130        return new jsonp_request(url, data);
45131    },
45132    createScriptRequest: function (src) {
45133        return new script_request(src);
45134    },
45135    getLocalStorage: function () {
45136        try {
45137            return window.localStorage;
45138        }
45139        catch (e) {
45140            return undefined;
45141        }
45142    },
45143    createXHR: function () {
45144        if (this.getXHRAPI()) {
45145            return this.createXMLHttpRequest();
45146        }
45147        else {
45148            return this.createMicrosoftXHR();
45149        }
45150    },
45151    createXMLHttpRequest: function () {
45152        var Constructor = this.getXHRAPI();
45153        return new Constructor();
45154    },
45155    createMicrosoftXHR: function () {
45156        return new ActiveXObject('Microsoft.XMLHTTP');
45157    },
45158    getNetwork: function () {
45159        return net_info_Network;
45160    },
45161    createWebSocket: function (url) {
45162        var Constructor = this.getWebSocketAPI();
45163        return new Constructor(url);
45164    },
45165    createSocketRequest: function (method, url) {
45166        if (this.isXHRSupported()) {
45167            return this.HTTPFactory.createXHR(method, url);
45168        }
45169        else if (this.isXDRSupported(url.indexOf('https:') === 0)) {
45170            return this.HTTPFactory.createXDR(method, url);
45171        }
45172        else {
45173            throw 'Cross-origin HTTP requests are not supported';
45174        }
45175    },
45176    isXHRSupported: function () {
45177        var Constructor = this.getXHRAPI();
45178        return (Boolean(Constructor) && new Constructor().withCredentials !== undefined);
45179    },
45180    isXDRSupported: function (useTLS) {
45181        var protocol = useTLS ? 'https:' : 'http:';
45182        var documentProtocol = this.getProtocol();
45183        return (Boolean(window['XDomainRequest']) && documentProtocol === protocol);
45184    },
45185    addUnloadListener: function (listener) {
45186        if (window.addEventListener !== undefined) {
45187            window.addEventListener('unload', listener, false);
45188        }
45189        else if (window.attachEvent !== undefined) {
45190            window.attachEvent('onunload', listener);
45191        }
45192    },
45193    removeUnloadListener: function (listener) {
45194        if (window.addEventListener !== undefined) {
45195            window.removeEventListener('unload', listener, false);
45196        }
45197        else if (window.detachEvent !== undefined) {
45198            window.detachEvent('onunload', listener);
45199        }
45200    },
45201    randomInt: function (max) {
45202        var random = function () {
45203            var crypto = window.crypto || window['msCrypto'];
45204            var random = crypto.getRandomValues(new Uint32Array(1))[0];
45205            return random / Math.pow(2, 32);
45206        };
45207        return Math.floor(random() * max);
45208    }
45209};
45210/* harmony default export */ var runtime = (Runtime);
45211
45212// CONCATENATED MODULE: ./src/core/timeline/level.ts
45213var TimelineLevel;
45214(function (TimelineLevel) {
45215    TimelineLevel[TimelineLevel["ERROR"] = 3] = "ERROR";
45216    TimelineLevel[TimelineLevel["INFO"] = 6] = "INFO";
45217    TimelineLevel[TimelineLevel["DEBUG"] = 7] = "DEBUG";
45218})(TimelineLevel || (TimelineLevel = {}));
45219/* harmony default export */ var timeline_level = (TimelineLevel);
45220
45221// CONCATENATED MODULE: ./src/core/timeline/timeline.ts
45222
45223
45224
45225var timeline_Timeline = (function () {
45226    function Timeline(key, session, options) {
45227        this.key = key;
45228        this.session = session;
45229        this.events = [];
45230        this.options = options || {};
45231        this.sent = 0;
45232        this.uniqueID = 0;
45233    }
45234    Timeline.prototype.log = function (level, event) {
45235        if (level <= this.options.level) {
45236            this.events.push(extend({}, event, { timestamp: util.now() }));
45237            if (this.options.limit && this.events.length > this.options.limit) {
45238                this.events.shift();
45239            }
45240        }
45241    };
45242    Timeline.prototype.error = function (event) {
45243        this.log(timeline_level.ERROR, event);
45244    };
45245    Timeline.prototype.info = function (event) {
45246        this.log(timeline_level.INFO, event);
45247    };
45248    Timeline.prototype.debug = function (event) {
45249        this.log(timeline_level.DEBUG, event);
45250    };
45251    Timeline.prototype.isEmpty = function () {
45252        return this.events.length === 0;
45253    };
45254    Timeline.prototype.send = function (sendfn, callback) {
45255        var _this = this;
45256        var data = extend({
45257            session: this.session,
45258            bundle: this.sent + 1,
45259            key: this.key,
45260            lib: 'js',
45261            version: this.options.version,
45262            cluster: this.options.cluster,
45263            features: this.options.features,
45264            timeline: this.events
45265        }, this.options.params);
45266        this.events = [];
45267        sendfn(data, function (error, result) {
45268            if (!error) {
45269                _this.sent++;
45270            }
45271            if (callback) {
45272                callback(error, result);
45273            }
45274        });
45275        return true;
45276    };
45277    Timeline.prototype.generateUniqueID = function () {
45278        this.uniqueID++;
45279        return this.uniqueID;
45280    };
45281    return Timeline;
45282}());
45283/* harmony default export */ var timeline_timeline = (timeline_Timeline);
45284
45285// CONCATENATED MODULE: ./src/core/strategies/transport_strategy.ts
45286
45287
45288
45289
45290var transport_strategy_TransportStrategy = (function () {
45291    function TransportStrategy(name, priority, transport, options) {
45292        this.name = name;
45293        this.priority = priority;
45294        this.transport = transport;
45295        this.options = options || {};
45296    }
45297    TransportStrategy.prototype.isSupported = function () {
45298        return this.transport.isSupported({
45299            useTLS: this.options.useTLS
45300        });
45301    };
45302    TransportStrategy.prototype.connect = function (minPriority, callback) {
45303        var _this = this;
45304        if (!this.isSupported()) {
45305            return failAttempt(new UnsupportedStrategy(), callback);
45306        }
45307        else if (this.priority < minPriority) {
45308            return failAttempt(new TransportPriorityTooLow(), callback);
45309        }
45310        var connected = false;
45311        var transport = this.transport.createConnection(this.name, this.priority, this.options.key, this.options);
45312        var handshake = null;
45313        var onInitialized = function () {
45314            transport.unbind('initialized', onInitialized);
45315            transport.connect();
45316        };
45317        var onOpen = function () {
45318            handshake = factory.createHandshake(transport, function (result) {
45319                connected = true;
45320                unbindListeners();
45321                callback(null, result);
45322            });
45323        };
45324        var onError = function (error) {
45325            unbindListeners();
45326            callback(error);
45327        };
45328        var onClosed = function () {
45329            unbindListeners();
45330            var serializedTransport;
45331            serializedTransport = safeJSONStringify(transport);
45332            callback(new TransportClosed(serializedTransport));
45333        };
45334        var unbindListeners = function () {
45335            transport.unbind('initialized', onInitialized);
45336            transport.unbind('open', onOpen);
45337            transport.unbind('error', onError);
45338            transport.unbind('closed', onClosed);
45339        };
45340        transport.bind('initialized', onInitialized);
45341        transport.bind('open', onOpen);
45342        transport.bind('error', onError);
45343        transport.bind('closed', onClosed);
45344        transport.initialize();
45345        return {
45346            abort: function () {
45347                if (connected) {
45348                    return;
45349                }
45350                unbindListeners();
45351                if (handshake) {
45352                    handshake.close();
45353                }
45354                else {
45355                    transport.close();
45356                }
45357            },
45358            forceMinPriority: function (p) {
45359                if (connected) {
45360                    return;
45361                }
45362                if (_this.priority < p) {
45363                    if (handshake) {
45364                        handshake.close();
45365                    }
45366                    else {
45367                        transport.close();
45368                    }
45369                }
45370            }
45371        };
45372    };
45373    return TransportStrategy;
45374}());
45375/* harmony default export */ var transport_strategy = (transport_strategy_TransportStrategy);
45376function failAttempt(error, callback) {
45377    util.defer(function () {
45378        callback(error);
45379    });
45380    return {
45381        abort: function () { },
45382        forceMinPriority: function () { }
45383    };
45384}
45385
45386// CONCATENATED MODULE: ./src/core/strategies/strategy_builder.ts
45387
45388
45389
45390
45391
45392var strategy_builder_Transports = runtime.Transports;
45393var strategy_builder_defineTransport = function (config, name, type, priority, options, manager) {
45394    var transportClass = strategy_builder_Transports[type];
45395    if (!transportClass) {
45396        throw new UnsupportedTransport(type);
45397    }
45398    var enabled = (!config.enabledTransports ||
45399        arrayIndexOf(config.enabledTransports, name) !== -1) &&
45400        (!config.disabledTransports ||
45401            arrayIndexOf(config.disabledTransports, name) === -1);
45402    var transport;
45403    if (enabled) {
45404        options = Object.assign({ ignoreNullOrigin: config.ignoreNullOrigin }, options);
45405        transport = new transport_strategy(name, priority, manager ? manager.getAssistant(transportClass) : transportClass, options);
45406    }
45407    else {
45408        transport = strategy_builder_UnsupportedStrategy;
45409    }
45410    return transport;
45411};
45412var strategy_builder_UnsupportedStrategy = {
45413    isSupported: function () {
45414        return false;
45415    },
45416    connect: function (_, callback) {
45417        var deferred = util.defer(function () {
45418            callback(new UnsupportedStrategy());
45419        });
45420        return {
45421            abort: function () {
45422                deferred.ensureAborted();
45423            },
45424            forceMinPriority: function () { }
45425        };
45426    }
45427};
45428
45429// CONCATENATED MODULE: ./src/core/auth/user_authenticator.ts
45430
45431
45432var composeChannelQuery = function (params, authOptions) {
45433    var query = 'socket_id=' + encodeURIComponent(params.socketId);
45434    for (var key in authOptions.params) {
45435        query +=
45436            '&' +
45437                encodeURIComponent(key) +
45438                '=' +
45439                encodeURIComponent(authOptions.params[key]);
45440    }
45441    if (authOptions.paramsProvider != null) {
45442        var dynamicParams = authOptions.paramsProvider();
45443        for (var key in dynamicParams) {
45444            query +=
45445                '&' +
45446                    encodeURIComponent(key) +
45447                    '=' +
45448                    encodeURIComponent(dynamicParams[key]);
45449        }
45450    }
45451    return query;
45452};
45453var UserAuthenticator = function (authOptions) {
45454    if (typeof runtime.getAuthorizers()[authOptions.transport] === 'undefined') {
45455        throw "'" + authOptions.transport + "' is not a recognized auth transport";
45456    }
45457    return function (params, callback) {
45458        var query = composeChannelQuery(params, authOptions);
45459        runtime.getAuthorizers()[authOptions.transport](runtime, query, authOptions, AuthRequestType.UserAuthentication, callback);
45460    };
45461};
45462/* harmony default export */ var user_authenticator = (UserAuthenticator);
45463
45464// CONCATENATED MODULE: ./src/core/auth/channel_authorizer.ts
45465
45466
45467var channel_authorizer_composeChannelQuery = function (params, authOptions) {
45468    var query = 'socket_id=' + encodeURIComponent(params.socketId);
45469    query += '&channel_name=' + encodeURIComponent(params.channelName);
45470    for (var key in authOptions.params) {
45471        query +=
45472            '&' +
45473                encodeURIComponent(key) +
45474                '=' +
45475                encodeURIComponent(authOptions.params[key]);
45476    }
45477    if (authOptions.paramsProvider != null) {
45478        var dynamicParams = authOptions.paramsProvider();
45479        for (var key in dynamicParams) {
45480            query +=
45481                '&' +
45482                    encodeURIComponent(key) +
45483                    '=' +
45484                    encodeURIComponent(dynamicParams[key]);
45485        }
45486    }
45487    return query;
45488};
45489var ChannelAuthorizer = function (authOptions) {
45490    if (typeof runtime.getAuthorizers()[authOptions.transport] === 'undefined') {
45491        throw "'" + authOptions.transport + "' is not a recognized auth transport";
45492    }
45493    return function (params, callback) {
45494        var query = channel_authorizer_composeChannelQuery(params, authOptions);
45495        runtime.getAuthorizers()[authOptions.transport](runtime, query, authOptions, AuthRequestType.ChannelAuthorization, callback);
45496    };
45497};
45498/* harmony default export */ var channel_authorizer = (ChannelAuthorizer);
45499
45500// CONCATENATED MODULE: ./src/core/auth/deprecated_channel_authorizer.ts
45501var ChannelAuthorizerProxy = function (pusher, authOptions, channelAuthorizerGenerator) {
45502    var deprecatedAuthorizerOptions = {
45503        authTransport: authOptions.transport,
45504        authEndpoint: authOptions.endpoint,
45505        auth: {
45506            params: authOptions.params,
45507            headers: authOptions.headers
45508        }
45509    };
45510    return function (params, callback) {
45511        var channel = pusher.channel(params.channelName);
45512        var channelAuthorizer = channelAuthorizerGenerator(channel, deprecatedAuthorizerOptions);
45513        channelAuthorizer.authorize(params.socketId, callback);
45514    };
45515};
45516
45517// CONCATENATED MODULE: ./src/core/config.ts
45518var __assign = ( false) || function () {
45519    __assign = Object.assign || function(t) {
45520        for (var s, i = 1, n = arguments.length; i < n; i++) {
45521            s = arguments[i];
45522            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
45523                t[p] = s[p];
45524        }
45525        return t;
45526    };
45527    return __assign.apply(this, arguments);
45528};
45529
45530
45531
45532
45533
45534function getConfig(opts, pusher) {
45535    var config = {
45536        activityTimeout: opts.activityTimeout || defaults.activityTimeout,
45537        cluster: opts.cluster || defaults.cluster,
45538        httpPath: opts.httpPath || defaults.httpPath,
45539        httpPort: opts.httpPort || defaults.httpPort,
45540        httpsPort: opts.httpsPort || defaults.httpsPort,
45541        pongTimeout: opts.pongTimeout || defaults.pongTimeout,
45542        statsHost: opts.statsHost || defaults.stats_host,
45543        unavailableTimeout: opts.unavailableTimeout || defaults.unavailableTimeout,
45544        wsPath: opts.wsPath || defaults.wsPath,
45545        wsPort: opts.wsPort || defaults.wsPort,
45546        wssPort: opts.wssPort || defaults.wssPort,
45547        enableStats: getEnableStatsConfig(opts),
45548        httpHost: getHttpHost(opts),
45549        useTLS: shouldUseTLS(opts),
45550        wsHost: getWebsocketHost(opts),
45551        userAuthenticator: buildUserAuthenticator(opts),
45552        channelAuthorizer: buildChannelAuthorizer(opts, pusher)
45553    };
45554    if ('disabledTransports' in opts)
45555        config.disabledTransports = opts.disabledTransports;
45556    if ('enabledTransports' in opts)
45557        config.enabledTransports = opts.enabledTransports;
45558    if ('ignoreNullOrigin' in opts)
45559        config.ignoreNullOrigin = opts.ignoreNullOrigin;
45560    if ('timelineParams' in opts)
45561        config.timelineParams = opts.timelineParams;
45562    if ('nacl' in opts) {
45563        config.nacl = opts.nacl;
45564    }
45565    return config;
45566}
45567function getHttpHost(opts) {
45568    if (opts.httpHost) {
45569        return opts.httpHost;
45570    }
45571    if (opts.cluster) {
45572        return "sockjs-" + opts.cluster + ".pusher.com";
45573    }
45574    return defaults.httpHost;
45575}
45576function getWebsocketHost(opts) {
45577    if (opts.wsHost) {
45578        return opts.wsHost;
45579    }
45580    if (opts.cluster) {
45581        return getWebsocketHostFromCluster(opts.cluster);
45582    }
45583    return getWebsocketHostFromCluster(defaults.cluster);
45584}
45585function getWebsocketHostFromCluster(cluster) {
45586    return "ws-" + cluster + ".pusher.com";
45587}
45588function shouldUseTLS(opts) {
45589    if (runtime.getProtocol() === 'https:') {
45590        return true;
45591    }
45592    else if (opts.forceTLS === false) {
45593        return false;
45594    }
45595    return true;
45596}
45597function getEnableStatsConfig(opts) {
45598    if ('enableStats' in opts) {
45599        return opts.enableStats;
45600    }
45601    if ('disableStats' in opts) {
45602        return !opts.disableStats;
45603    }
45604    return false;
45605}
45606function buildUserAuthenticator(opts) {
45607    var userAuthentication = __assign(__assign({}, defaults.userAuthentication), opts.userAuthentication);
45608    if ('customHandler' in userAuthentication &&
45609        userAuthentication['customHandler'] != null) {
45610        return userAuthentication['customHandler'];
45611    }
45612    return user_authenticator(userAuthentication);
45613}
45614function buildChannelAuth(opts, pusher) {
45615    var channelAuthorization;
45616    if ('channelAuthorization' in opts) {
45617        channelAuthorization = __assign(__assign({}, defaults.channelAuthorization), opts.channelAuthorization);
45618    }
45619    else {
45620        channelAuthorization = {
45621            transport: opts.authTransport || defaults.authTransport,
45622            endpoint: opts.authEndpoint || defaults.authEndpoint
45623        };
45624        if ('auth' in opts) {
45625            if ('params' in opts.auth)
45626                channelAuthorization.params = opts.auth.params;
45627            if ('headers' in opts.auth)
45628                channelAuthorization.headers = opts.auth.headers;
45629        }
45630        if ('authorizer' in opts)
45631            channelAuthorization.customHandler = ChannelAuthorizerProxy(pusher, channelAuthorization, opts.authorizer);
45632    }
45633    return channelAuthorization;
45634}
45635function buildChannelAuthorizer(opts, pusher) {
45636    var channelAuthorization = buildChannelAuth(opts, pusher);
45637    if ('customHandler' in channelAuthorization &&
45638        channelAuthorization['customHandler'] != null) {
45639        return channelAuthorization['customHandler'];
45640    }
45641    return channel_authorizer(channelAuthorization);
45642}
45643
45644// CONCATENATED MODULE: ./src/core/watchlist.ts
45645var watchlist_extends = ( false) || (function () {
45646    var extendStatics = function (d, b) {
45647        extendStatics = Object.setPrototypeOf ||
45648            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
45649            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
45650        return extendStatics(d, b);
45651    };
45652    return function (d, b) {
45653        extendStatics(d, b);
45654        function __() { this.constructor = d; }
45655        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
45656    };
45657})();
45658
45659
45660var watchlist_WatchlistFacade = (function (_super) {
45661    watchlist_extends(WatchlistFacade, _super);
45662    function WatchlistFacade(pusher) {
45663        var _this = _super.call(this, function (eventName, data) {
45664            logger.debug("No callbacks on watchlist events for " + eventName);
45665        }) || this;
45666        _this.pusher = pusher;
45667        _this.bindWatchlistInternalEvent();
45668        return _this;
45669    }
45670    WatchlistFacade.prototype.handleEvent = function (pusherEvent) {
45671        var _this = this;
45672        pusherEvent.data.events.forEach(function (watchlistEvent) {
45673            _this.emit(watchlistEvent.name, watchlistEvent);
45674        });
45675    };
45676    WatchlistFacade.prototype.bindWatchlistInternalEvent = function () {
45677        var _this = this;
45678        this.pusher.connection.bind('message', function (pusherEvent) {
45679            var eventName = pusherEvent.event;
45680            if (eventName === 'pusher_internal:watchlist_events') {
45681                _this.handleEvent(pusherEvent);
45682            }
45683        });
45684    };
45685    return WatchlistFacade;
45686}(dispatcher));
45687/* harmony default export */ var watchlist = (watchlist_WatchlistFacade);
45688
45689// CONCATENATED MODULE: ./src/core/utils/flat_promise.ts
45690function flatPromise() {
45691    var resolve, reject;
45692    var promise = new Promise(function (res, rej) {
45693        resolve = res;
45694        reject = rej;
45695    });
45696    return { promise: promise, resolve: resolve, reject: reject };
45697}
45698/* harmony default export */ var flat_promise = (flatPromise);
45699
45700// CONCATENATED MODULE: ./src/core/user.ts
45701var user_extends = ( false) || (function () {
45702    var extendStatics = function (d, b) {
45703        extendStatics = Object.setPrototypeOf ||
45704            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
45705            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
45706        return extendStatics(d, b);
45707    };
45708    return function (d, b) {
45709        extendStatics(d, b);
45710        function __() { this.constructor = d; }
45711        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
45712    };
45713})();
45714
45715
45716
45717
45718
45719var user_UserFacade = (function (_super) {
45720    user_extends(UserFacade, _super);
45721    function UserFacade(pusher) {
45722        var _this = _super.call(this, function (eventName, data) {
45723            logger.debug('No callbacks on user for ' + eventName);
45724        }) || this;
45725        _this.signin_requested = false;
45726        _this.user_data = null;
45727        _this.serverToUserChannel = null;
45728        _this.signinDonePromise = null;
45729        _this._signinDoneResolve = null;
45730        _this._onAuthorize = function (err, authData) {
45731            if (err) {
45732                logger.warn("Error during signin: " + err);
45733                _this._cleanup();
45734                return;
45735            }
45736            _this.pusher.send_event('pusher:signin', {
45737                auth: authData.auth,
45738                user_data: authData.user_data
45739            });
45740        };
45741        _this.pusher = pusher;
45742        _this.pusher.connection.bind('state_change', function (_a) {
45743            var previous = _a.previous, current = _a.current;
45744            if (previous !== 'connected' && current === 'connected') {
45745                _this._signin();
45746            }
45747            if (previous === 'connected' && current !== 'connected') {
45748                _this._cleanup();
45749                _this._newSigninPromiseIfNeeded();
45750            }
45751        });
45752        _this.watchlist = new watchlist(pusher);
45753        _this.pusher.connection.bind('message', function (event) {
45754            var eventName = event.event;
45755            if (eventName === 'pusher:signin_success') {
45756                _this._onSigninSuccess(event.data);
45757            }
45758            if (_this.serverToUserChannel &&
45759                _this.serverToUserChannel.name === event.channel) {
45760                _this.serverToUserChannel.handleEvent(event);
45761            }
45762        });
45763        return _this;
45764    }
45765    UserFacade.prototype.signin = function () {
45766        if (this.signin_requested) {
45767            return;
45768        }
45769        this.signin_requested = true;
45770        this._signin();
45771    };
45772    UserFacade.prototype._signin = function () {
45773        if (!this.signin_requested) {
45774            return;
45775        }
45776        this._newSigninPromiseIfNeeded();
45777        if (this.pusher.connection.state !== 'connected') {
45778            return;
45779        }
45780        this.pusher.config.userAuthenticator({
45781            socketId: this.pusher.connection.socket_id
45782        }, this._onAuthorize);
45783    };
45784    UserFacade.prototype._onSigninSuccess = function (data) {
45785        try {
45786            this.user_data = JSON.parse(data.user_data);
45787        }
45788        catch (e) {
45789            logger.error("Failed parsing user data after signin: " + data.user_data);
45790            this._cleanup();
45791            return;
45792        }
45793        if (typeof this.user_data.id !== 'string' || this.user_data.id === '') {
45794            logger.error("user_data doesn't contain an id. user_data: " + this.user_data);
45795            this._cleanup();
45796            return;
45797        }
45798        this._signinDoneResolve();
45799        this._subscribeChannels();
45800    };
45801    UserFacade.prototype._subscribeChannels = function () {
45802        var _this = this;
45803        var ensure_subscribed = function (channel) {
45804            if (channel.subscriptionPending && channel.subscriptionCancelled) {
45805                channel.reinstateSubscription();
45806            }
45807            else if (!channel.subscriptionPending &&
45808                _this.pusher.connection.state === 'connected') {
45809                channel.subscribe();
45810            }
45811        };
45812        this.serverToUserChannel = new channels_channel("#server-to-user-" + this.user_data.id, this.pusher);
45813        this.serverToUserChannel.bind_global(function (eventName, data) {
45814            if (eventName.indexOf('pusher_internal:') === 0 ||
45815                eventName.indexOf('pusher:') === 0) {
45816                return;
45817            }
45818            _this.emit(eventName, data);
45819        });
45820        ensure_subscribed(this.serverToUserChannel);
45821    };
45822    UserFacade.prototype._cleanup = function () {
45823        this.user_data = null;
45824        if (this.serverToUserChannel) {
45825            this.serverToUserChannel.unbind_all();
45826            this.serverToUserChannel.disconnect();
45827            this.serverToUserChannel = null;
45828        }
45829        if (this.signin_requested) {
45830            this._signinDoneResolve();
45831        }
45832    };
45833    UserFacade.prototype._newSigninPromiseIfNeeded = function () {
45834        if (!this.signin_requested) {
45835            return;
45836        }
45837        if (this.signinDonePromise && !this.signinDonePromise.done) {
45838            return;
45839        }
45840        var _a = flat_promise(), promise = _a.promise, resolve = _a.resolve, _ = _a.reject;
45841        promise.done = false;
45842        var setDone = function () {
45843            promise.done = true;
45844        };
45845        promise.then(setDone)["catch"](setDone);
45846        this.signinDonePromise = promise;
45847        this._signinDoneResolve = resolve;
45848    };
45849    return UserFacade;
45850}(dispatcher));
45851/* harmony default export */ var user = (user_UserFacade);
45852
45853// CONCATENATED MODULE: ./src/core/pusher.ts
45854
45855
45856
45857
45858
45859
45860
45861
45862
45863
45864
45865
45866
45867var pusher_Pusher = (function () {
45868    function Pusher(app_key, options) {
45869        var _this = this;
45870        checkAppKey(app_key);
45871        options = options || {};
45872        if (!options.cluster && !(options.wsHost || options.httpHost)) {
45873            var suffix = url_store.buildLogSuffix('javascriptQuickStart');
45874            logger.warn("You should always specify a cluster when connecting. " + suffix);
45875        }
45876        if ('disableStats' in options) {
45877            logger.warn('The disableStats option is deprecated in favor of enableStats');
45878        }
45879        this.key = app_key;
45880        this.config = getConfig(options, this);
45881        this.channels = factory.createChannels();
45882        this.global_emitter = new dispatcher();
45883        this.sessionID = runtime.randomInt(1000000000);
45884        this.timeline = new timeline_timeline(this.key, this.sessionID, {
45885            cluster: this.config.cluster,
45886            features: Pusher.getClientFeatures(),
45887            params: this.config.timelineParams || {},
45888            limit: 50,
45889            level: timeline_level.INFO,
45890            version: defaults.VERSION
45891        });
45892        if (this.config.enableStats) {
45893            this.timelineSender = factory.createTimelineSender(this.timeline, {
45894                host: this.config.statsHost,
45895                path: '/timeline/v2/' + runtime.TimelineTransport.name
45896            });
45897        }
45898        var getStrategy = function (options) {
45899            return runtime.getDefaultStrategy(_this.config, options, strategy_builder_defineTransport);
45900        };
45901        this.connection = factory.createConnectionManager(this.key, {
45902            getStrategy: getStrategy,
45903            timeline: this.timeline,
45904            activityTimeout: this.config.activityTimeout,
45905            pongTimeout: this.config.pongTimeout,
45906            unavailableTimeout: this.config.unavailableTimeout,
45907            useTLS: Boolean(this.config.useTLS)
45908        });
45909        this.connection.bind('connected', function () {
45910            _this.subscribeAll();
45911            if (_this.timelineSender) {
45912                _this.timelineSender.send(_this.connection.isUsingTLS());
45913            }
45914        });
45915        this.connection.bind('message', function (event) {
45916            var eventName = event.event;
45917            var internal = eventName.indexOf('pusher_internal:') === 0;
45918            if (event.channel) {
45919                var channel = _this.channel(event.channel);
45920                if (channel) {
45921                    channel.handleEvent(event);
45922                }
45923            }
45924            if (!internal) {
45925                _this.global_emitter.emit(event.event, event.data);
45926            }
45927        });
45928        this.connection.bind('connecting', function () {
45929            _this.channels.disconnect();
45930        });
45931        this.connection.bind('disconnected', function () {
45932            _this.channels.disconnect();
45933        });
45934        this.connection.bind('error', function (err) {
45935            logger.warn(err);
45936        });
45937        Pusher.instances.push(this);
45938        this.timeline.info({ instances: Pusher.instances.length });
45939        this.user = new user(this);
45940        if (Pusher.isReady) {
45941            this.connect();
45942        }
45943    }
45944    Pusher.ready = function () {
45945        Pusher.isReady = true;
45946        for (var i = 0, l = Pusher.instances.length; i < l; i++) {
45947            Pusher.instances[i].connect();
45948        }
45949    };
45950    Pusher.getClientFeatures = function () {
45951        return keys(filterObject({ ws: runtime.Transports.ws }, function (t) {
45952            return t.isSupported({});
45953        }));
45954    };
45955    Pusher.prototype.channel = function (name) {
45956        return this.channels.find(name);
45957    };
45958    Pusher.prototype.allChannels = function () {
45959        return this.channels.all();
45960    };
45961    Pusher.prototype.connect = function () {
45962        this.connection.connect();
45963        if (this.timelineSender) {
45964            if (!this.timelineSenderTimer) {
45965                var usingTLS = this.connection.isUsingTLS();
45966                var timelineSender = this.timelineSender;
45967                this.timelineSenderTimer = new PeriodicTimer(60000, function () {
45968                    timelineSender.send(usingTLS);
45969                });
45970            }
45971        }
45972    };
45973    Pusher.prototype.disconnect = function () {
45974        this.connection.disconnect();
45975        if (this.timelineSenderTimer) {
45976            this.timelineSenderTimer.ensureAborted();
45977            this.timelineSenderTimer = null;
45978        }
45979    };
45980    Pusher.prototype.bind = function (event_name, callback, context) {
45981        this.global_emitter.bind(event_name, callback, context);
45982        return this;
45983    };
45984    Pusher.prototype.unbind = function (event_name, callback, context) {
45985        this.global_emitter.unbind(event_name, callback, context);
45986        return this;
45987    };
45988    Pusher.prototype.bind_global = function (callback) {
45989        this.global_emitter.bind_global(callback);
45990        return this;
45991    };
45992    Pusher.prototype.unbind_global = function (callback) {
45993        this.global_emitter.unbind_global(callback);
45994        return this;
45995    };
45996    Pusher.prototype.unbind_all = function (callback) {
45997        this.global_emitter.unbind_all();
45998        return this;
45999    };
46000    Pusher.prototype.subscribeAll = function () {
46001        var channelName;
46002        for (channelName in this.channels.channels) {
46003            if (this.channels.channels.hasOwnProperty(channelName)) {
46004                this.subscribe(channelName);
46005            }
46006        }
46007    };
46008    Pusher.prototype.subscribe = function (channel_name) {
46009        var channel = this.channels.add(channel_name, this);
46010        if (channel.subscriptionPending && channel.subscriptionCancelled) {
46011            channel.reinstateSubscription();
46012        }
46013        else if (!channel.subscriptionPending &&
46014            this.connection.state === 'connected') {
46015            channel.subscribe();
46016        }
46017        return channel;
46018    };
46019    Pusher.prototype.unsubscribe = function (channel_name) {
46020        var channel = this.channels.find(channel_name);
46021        if (channel && channel.subscriptionPending) {
46022            channel.cancelSubscription();
46023        }
46024        else {
46025            channel = this.channels.remove(channel_name);
46026            if (channel && channel.subscribed) {
46027                channel.unsubscribe();
46028            }
46029        }
46030    };
46031    Pusher.prototype.send_event = function (event_name, data, channel) {
46032        return this.connection.send_event(event_name, data, channel);
46033    };
46034    Pusher.prototype.shouldUseTLS = function () {
46035        return this.config.useTLS;
46036    };
46037    Pusher.prototype.signin = function () {
46038        this.user.signin();
46039    };
46040    Pusher.instances = [];
46041    Pusher.isReady = false;
46042    Pusher.logToConsole = false;
46043    Pusher.Runtime = runtime;
46044    Pusher.ScriptReceivers = runtime.ScriptReceivers;
46045    Pusher.DependenciesReceivers = runtime.DependenciesReceivers;
46046    Pusher.auth_callbacks = runtime.auth_callbacks;
46047    return Pusher;
46048}());
46049/* harmony default export */ var core_pusher = __nested_webpack_exports__["default"] = (pusher_Pusher);
46050function checkAppKey(key) {
46051    if (key === null || key === undefined) {
46052        throw 'You must pass your app key when you instantiate Pusher.';
46053    }
46054}
46055runtime.setup(pusher_Pusher);
46056
46057
46058/***/ })
46059/******/ ]);
46060});
46061//# sourceMappingURL=pusher.js.map
46062
46063/***/ }),
46064
46065/***/ "./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-8.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-8.use[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ProfileEditModal.vue?vue&type=style&index=0&id=1d27ac85&scoped=true&lang=css":
46066/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
46067  !*** ./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-8.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-8.use[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ProfileEditModal.vue?vue&type=style&index=0&id=1d27ac85&scoped=true&lang=css ***!
46068  \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
46069/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
46070
46071"use strict";
46072__webpack_require__.r(__webpack_exports__);
46073/* harmony export */ __webpack_require__.d(__webpack_exports__, {
46074/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
46075/* harmony export */ });
46076/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");
46077/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);
46078/* harmony import */ var _node_modules_css_loader_dist_cjs_js_clonedRuleSet_8_use_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_clonedRuleSet_8_use_2_node_modules_vue_loader_lib_index_js_vue_loader_options_ProfileEditModal_vue_vue_type_style_index_0_id_1d27ac85_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !!../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-8.use[1]!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-8.use[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileEditModal.vue?vue&type=style&index=0&id=1d27ac85&scoped=true&lang=css */ "./node_modules/css-loader/dist/cjs.js??clonedRuleSet-8.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-8.use[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ProfileEditModal.vue?vue&type=style&index=0&id=1d27ac85&scoped=true&lang=css");
46079
46080            
46081
46082var options = {};
46083
46084options.insert = "head";
46085options.singleton = false;
46086
46087var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_clonedRuleSet_8_use_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_clonedRuleSet_8_use_2_node_modules_vue_loader_lib_index_js_vue_loader_options_ProfileEditModal_vue_vue_type_style_index_0_id_1d27ac85_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_1__["default"], options);
46088
46089
46090
46091/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_clonedRuleSet_8_use_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_clonedRuleSet_8_use_2_node_modules_vue_loader_lib_index_js_vue_loader_options_ProfileEditModal_vue_vue_type_style_index_0_id_1d27ac85_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_1__["default"].locals || {});
46092
46093/***/ }),
46094
vendor: 7,200 bytes, lines 46095-46373
46095/***/ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js":
46096/*!****************************************************************************!*\
46097  !*** ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js ***!
46098  \****************************************************************************/
46099/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
46100
46101"use strict";
46102
46103
46104var isOldIE = function isOldIE() {
46105  var memo;
46106  return function memorize() {
46107    if (typeof memo === 'undefined') {
46108      // Test for IE <= 9 as proposed by Browserhacks
46109      // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805
46110      // Tests for existence of standard globals is to allow style-loader
46111      // to operate correctly into non-standard environments
46112      // @see https://github.com/webpack-contrib/style-loader/issues/177
46113      memo = Boolean(window && document && document.all && !window.atob);
46114    }
46115
46116    return memo;
46117  };
46118}();
46119
46120var getTarget = function getTarget() {
46121  var memo = {};
46122  return function memorize(target) {
46123    if (typeof memo[target] === 'undefined') {
46124      var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself
46125
46126      if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {
46127        try {
46128          // This will throw an exception if access to iframe is blocked
46129          // due to cross-origin restrictions
46130          styleTarget = styleTarget.contentDocument.head;
46131        } catch (e) {
46132          // istanbul ignore next
46133          styleTarget = null;
46134        }
46135      }
46136
46137      memo[target] = styleTarget;
46138    }
46139
46140    return memo[target];
46141  };
46142}();
46143
46144var stylesInDom = [];
46145
46146function getIndexByIdentifier(identifier) {
46147  var result = -1;
46148
46149  for (var i = 0; i < stylesInDom.length; i++) {
46150    if (stylesInDom[i].identifier === identifier) {
46151      result = i;
46152      break;
46153    }
46154  }
46155
46156  return result;
46157}
46158
46159function modulesToDom(list, options) {
46160  var idCountMap = {};
46161  var identifiers = [];
46162
46163  for (var i = 0; i < list.length; i++) {
46164    var item = list[i];
46165    var id = options.base ? item[0] + options.base : item[0];
46166    var count = idCountMap[id] || 0;
46167    var identifier = "".concat(id, " ").concat(count);
46168    idCountMap[id] = count + 1;
46169    var index = getIndexByIdentifier(identifier);
46170    var obj = {
46171      css: item[1],
46172      media: item[2],
46173      sourceMap: item[3]
46174    };
46175
46176    if (index !== -1) {
46177      stylesInDom[index].references++;
46178      stylesInDom[index].updater(obj);
46179    } else {
46180      stylesInDom.push({
46181        identifier: identifier,
46182        updater: addStyle(obj, options),
46183        references: 1
46184      });
46185    }
46186
46187    identifiers.push(identifier);
46188  }
46189
46190  return identifiers;
46191}
46192
46193function insertStyleElement(options) {
46194  var style = document.createElement('style');
46195  var attributes = options.attributes || {};
46196
46197  if (typeof attributes.nonce === 'undefined') {
46198    var nonce =  true ? __webpack_require__.nc : 0;
46199
46200    if (nonce) {
46201      attributes.nonce = nonce;
46202    }
46203  }
46204
46205  Object.keys(attributes).forEach(function (key) {
46206    style.setAttribute(key, attributes[key]);
46207  });
46208
46209  if (typeof options.insert === 'function') {
46210    options.insert(style);
46211  } else {
46212    var target = getTarget(options.insert || 'head');
46213
46214    if (!target) {
46215      throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");
46216    }
46217
46218    target.appendChild(style);
46219  }
46220
46221  return style;
46222}
46223
46224function removeStyleElement(style) {
46225  // istanbul ignore if
46226  if (style.parentNode === null) {
46227    return false;
46228  }
46229
46230  style.parentNode.removeChild(style);
46231}
46232/* istanbul ignore next  */
46233
46234
46235var replaceText = function replaceText() {
46236  var textStore = [];
46237  return function replace(index, replacement) {
46238    textStore[index] = replacement;
46239    return textStore.filter(Boolean).join('\n');
46240  };
46241}();
46242
46243function applyToSingletonTag(style, index, remove, obj) {
46244  var css = remove ? '' : obj.media ? "@media ".concat(obj.media, " {").concat(obj.css, "}") : obj.css; // For old IE
46245
46246  /* istanbul ignore if  */
46247
46248  if (style.styleSheet) {
46249    style.styleSheet.cssText = replaceText(index, css);
46250  } else {
46251    var cssNode = document.createTextNode(css);
46252    var childNodes = style.childNodes;
46253
46254    if (childNodes[index]) {
46255      style.removeChild(childNodes[index]);
46256    }
46257
46258    if (childNodes.length) {
46259      style.insertBefore(cssNode, childNodes[index]);
46260    } else {
46261      style.appendChild(cssNode);
46262    }
46263  }
46264}
46265
46266function applyToTag(style, options, obj) {
46267  var css = obj.css;
46268  var media = obj.media;
46269  var sourceMap = obj.sourceMap;
46270
46271  if (media) {
46272    style.setAttribute('media', media);
46273  } else {
46274    style.removeAttribute('media');
46275  }
46276
46277  if (sourceMap && typeof btoa !== 'undefined') {
46278    css += "\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), " */");
46279  } // For old IE
46280
46281  /* istanbul ignore if  */
46282
46283
46284  if (style.styleSheet) {
46285    style.styleSheet.cssText = css;
46286  } else {
46287    while (style.firstChild) {
46288      style.removeChild(style.firstChild);
46289    }
46290
46291    style.appendChild(document.createTextNode(css));
46292  }
46293}
46294
46295var singleton = null;
46296var singletonCounter = 0;
46297
46298function addStyle(obj, options) {
46299  var style;
46300  var update;
46301  var remove;
46302
46303  if (options.singleton) {
46304    var styleIndex = singletonCounter++;
46305    style = singleton || (singleton = insertStyleElement(options));
46306    update = applyToSingletonTag.bind(null, style, styleIndex, false);
46307    remove = applyToSingletonTag.bind(null, style, styleIndex, true);
46308  } else {
46309    style = insertStyleElement(options);
46310    update = applyToTag.bind(null, style, options);
46311
46312    remove = function remove() {
46313      removeStyleElement(style);
46314    };
46315  }
46316
46317  update(obj);
46318  return function updateStyle(newObj) {
46319    if (newObj) {
46320      if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {
46321        return;
46322      }
46323
46324      update(obj = newObj);
46325    } else {
46326      remove();
46327    }
46328  };
46329}
46330
46331module.exports = function (list, options) {
46332  options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
46333  // tags it will allow on a page
46334
46335  if (!options.singleton && typeof options.singleton !== 'boolean') {
46336    options.singleton = isOldIE();
46337  }
46338
46339  list = list || [];
46340  var lastIdentifiers = modulesToDom(list, options);
46341  return function update(newList) {
46342    newList = newList || [];
46343
46344    if (Object.prototype.toString.call(newList) !== '[object Array]') {
46345      return;
46346    }
46347
46348    for (var i = 0; i < lastIdentifiers.length; i++) {
46349      var identifier = lastIdentifiers[i];
46350      var index = getIndexByIdentifier(identifier);
46351      stylesInDom[index].references--;
46352    }
46353
46354    var newLastIdentifiers = modulesToDom(newList, options);
46355
46356    for (var _i = 0; _i < lastIdentifiers.length; _i++) {
46357      var _identifier = lastIdentifiers[_i];
46358
46359      var _index = getIndexByIdentifier(_identifier);
46360
46361      if (stylesInDom[_index].references === 0) {
46362        stylesInDom[_index].updater();
46363
46364        stylesInDom.splice(_index, 1);
46365      }
46366    }
46367
46368    lastIdentifiers = newLastIdentifiers;
46369  };
46370};
46371
46372/***/ }),
46373
vendor: 281,376 bytes, lines 46374-54516
46374/***/ "./node_modules/swiper/dist/js/swiper.js":
46375/*!***********************************************!*\
46376  !*** ./node_modules/swiper/dist/js/swiper.js ***!
46377  \***********************************************/
46378/***/ (function(module) {
46379
46380/**
46381 * Swiper 4.5.1
46382 * Most modern mobile touch slider and framework with hardware accelerated transitions
46383 * http://www.idangero.us/swiper/
46384 *
46385 * Copyright 2014-2019 Vladimir Kharlampidi
46386 *
46387 * Released under the MIT License
46388 *
46389 * Released on: September 13, 2019
46390 */
46391
46392(function (global, factory) {
46393   true ? module.exports = factory() :
46394  0;
46395}(this, function () { 'use strict';
46396
46397  /**
46398   * SSR Window 1.0.1
46399   * Better handling for window object in SSR environment
46400   * https://github.com/nolimits4web/ssr-window
46401   *
46402   * Copyright 2018, Vladimir Kharlampidi
46403   *
46404   * Licensed under MIT
46405   *
46406   * Released on: July 18, 2018
46407   */
46408  var doc = (typeof document === 'undefined') ? {
46409    body: {},
46410    addEventListener: function addEventListener() {},
46411    removeEventListener: function removeEventListener() {},
46412    activeElement: {
46413      blur: function blur() {},
46414      nodeName: '',
46415    },
46416    querySelector: function querySelector() {
46417      return null;
46418    },
46419    querySelectorAll: function querySelectorAll() {
46420      return [];
46421    },
46422    getElementById: function getElementById() {
46423      return null;
46424    },
46425    createEvent: function createEvent() {
46426      return {
46427        initEvent: function initEvent() {},
46428      };
46429    },
46430    createElement: function createElement() {
46431      return {
46432        children: [],
46433        childNodes: [],
46434        style: {},
46435        setAttribute: function setAttribute() {},
46436        getElementsByTagName: function getElementsByTagName() {
46437          return [];
46438        },
46439      };
46440    },
46441    location: { hash: '' },
46442  } : document; // eslint-disable-line
46443
46444  var win = (typeof window === 'undefined') ? {
46445    document: doc,
46446    navigator: {
46447      userAgent: '',
46448    },
46449    location: {},
46450    history: {},
46451    CustomEvent: function CustomEvent() {
46452      return this;
46453    },
46454    addEventListener: function addEventListener() {},
46455    removeEventListener: function removeEventListener() {},
46456    getComputedStyle: function getComputedStyle() {
46457      return {
46458        getPropertyValue: function getPropertyValue() {
46459          return '';
46460        },
46461      };
46462    },
46463    Image: function Image() {},
46464    Date: function Date() {},
46465    screen: {},
46466    setTimeout: function setTimeout() {},
46467    clearTimeout: function clearTimeout() {},
46468  } : window; // eslint-disable-line
46469
46470  /**
46471   * Dom7 2.1.3
46472   * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API
46473   * http://framework7.io/docs/dom.html
46474   *
46475   * Copyright 2019, Vladimir Kharlampidi
46476   * The iDangero.us
46477   * http://www.idangero.us/
46478   *
46479   * Licensed under MIT
46480   *
46481   * Released on: February 11, 2019
46482   */
46483
46484  var Dom7 = function Dom7(arr) {
46485    var self = this;
46486    // Create array-like object
46487    for (var i = 0; i < arr.length; i += 1) {
46488      self[i] = arr[i];
46489    }
46490    self.length = arr.length;
46491    // Return collection with methods
46492    return this;
46493  };
46494
46495  function $(selector, context) {
46496    var arr = [];
46497    var i = 0;
46498    if (selector && !context) {
46499      if (selector instanceof Dom7) {
46500        return selector;
46501      }
46502    }
46503    if (selector) {
46504        // String
46505      if (typeof selector === 'string') {
46506        var els;
46507        var tempParent;
46508        var html = selector.trim();
46509        if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {
46510          var toCreate = 'div';
46511          if (html.indexOf('<li') === 0) { toCreate = 'ul'; }
46512          if (html.indexOf('<tr') === 0) { toCreate = 'tbody'; }
46513          if (html.indexOf('<td') === 0 || html.indexOf('<th') === 0) { toCreate = 'tr'; }
46514          if (html.indexOf('<tbody') === 0) { toCreate = 'table'; }
46515          if (html.indexOf('<option') === 0) { toCreate = 'select'; }
46516          tempParent = doc.createElement(toCreate);
46517          tempParent.innerHTML = html;
46518          for (i = 0; i < tempParent.childNodes.length; i += 1) {
46519            arr.push(tempParent.childNodes[i]);
46520          }
46521        } else {
46522          if (!context && selector[0] === '#' && !selector.match(/[ .<>:~]/)) {
46523            // Pure ID selector
46524            els = [doc.getElementById(selector.trim().split('#')[1])];
46525          } else {
46526            // Other selectors
46527            els = (context || doc).querySelectorAll(selector.trim());
46528          }
46529          for (i = 0; i < els.length; i += 1) {
46530            if (els[i]) { arr.push(els[i]); }
46531          }
46532        }
46533      } else if (selector.nodeType || selector === win || selector === doc) {
46534        // Node/element
46535        arr.push(selector);
46536      } else if (selector.length > 0 && selector[0].nodeType) {
46537        // Array of elements or instance of Dom
46538        for (i = 0; i < selector.length; i += 1) {
46539          arr.push(selector[i]);
46540        }
46541      }
46542    }
46543    return new Dom7(arr);
46544  }
46545
46546  $.fn = Dom7.prototype;
46547  $.Class = Dom7;
46548  $.Dom7 = Dom7;
46549
46550  function unique(arr) {
46551    var uniqueArray = [];
46552    for (var i = 0; i < arr.length; i += 1) {
46553      if (uniqueArray.indexOf(arr[i]) === -1) { uniqueArray.push(arr[i]); }
46554    }
46555    return uniqueArray;
46556  }
46557
46558  // Classes and attributes
46559  function addClass(className) {
46560    if (typeof className === 'undefined') {
46561      return this;
46562    }
46563    var classes = className.split(' ');
46564    for (var i = 0; i < classes.length; i += 1) {
46565      for (var j = 0; j < this.length; j += 1) {
46566        if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') { this[j].classList.add(classes[i]); }
46567      }
46568    }
46569    return this;
46570  }
46571  function removeClass(className) {
46572    var classes = className.split(' ');
46573    for (var i = 0; i < classes.length; i += 1) {
46574      for (var j = 0; j < this.length; j += 1) {
46575        if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') { this[j].classList.remove(classes[i]); }
46576      }
46577    }
46578    return this;
46579  }
46580  function hasClass(className) {
46581    if (!this[0]) { return false; }
46582    return this[0].classList.contains(className);
46583  }
46584  function toggleClass(className) {
46585    var classes = className.split(' ');
46586    for (var i = 0; i < classes.length; i += 1) {
46587      for (var j = 0; j < this.length; j += 1) {
46588        if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') { this[j].classList.toggle(classes[i]); }
46589      }
46590    }
46591    return this;
46592  }
46593  function attr(attrs, value) {
46594    var arguments$1 = arguments;
46595
46596    if (arguments.length === 1 && typeof attrs === 'string') {
46597      // Get attr
46598      if (this[0]) { return this[0].getAttribute(attrs); }
46599      return undefined;
46600    }
46601
46602    // Set attrs
46603    for (var i = 0; i < this.length; i += 1) {
46604      if (arguments$1.length === 2) {
46605        // String
46606        this[i].setAttribute(attrs, value);
46607      } else {
46608        // Object
46609        // eslint-disable-next-line
46610        for (var attrName in attrs) {
46611          this[i][attrName] = attrs[attrName];
46612          this[i].setAttribute(attrName, attrs[attrName]);
46613        }
46614      }
46615    }
46616    return this;
46617  }
46618  // eslint-disable-next-line
46619  function removeAttr(attr) {
46620    for (var i = 0; i < this.length; i += 1) {
46621      this[i].removeAttribute(attr);
46622    }
46623    return this;
46624  }
46625  function data(key, value) {
46626    var el;
46627    if (typeof value === 'undefined') {
46628      el = this[0];
46629      // Get value
46630      if (el) {
46631        if (el.dom7ElementDataStorage && (key in el.dom7ElementDataStorage)) {
46632          return el.dom7ElementDataStorage[key];
46633        }
46634
46635        var dataKey = el.getAttribute(("data-" + key));
46636        if (dataKey) {
46637          return dataKey;
46638        }
46639        return undefined;
46640      }
46641      return undefined;
46642    }
46643
46644    // Set value
46645    for (var i = 0; i < this.length; i += 1) {
46646      el = this[i];
46647      if (!el.dom7ElementDataStorage) { el.dom7ElementDataStorage = {}; }
46648      el.dom7ElementDataStorage[key] = value;
46649    }
46650    return this;
46651  }
46652  // Transforms
46653  // eslint-disable-next-line
46654  function transform(transform) {
46655    for (var i = 0; i < this.length; i += 1) {
46656      var elStyle = this[i].style;
46657      elStyle.webkitTransform = transform;
46658      elStyle.transform = transform;
46659    }
46660    return this;
46661  }
46662  function transition(duration) {
46663    if (typeof duration !== 'string') {
46664      duration = duration + "ms"; // eslint-disable-line
46665    }
46666    for (var i = 0; i < this.length; i += 1) {
46667      var elStyle = this[i].style;
46668      elStyle.webkitTransitionDuration = duration;
46669      elStyle.transitionDuration = duration;
46670    }
46671    return this;
46672  }
46673  // Events
46674  function on() {
46675    var assign;
46676
46677    var args = [], len = arguments.length;
46678    while ( len-- ) args[ len ] = arguments[ len ];
46679    var eventType = args[0];
46680    var targetSelector = args[1];
46681    var listener = args[2];
46682    var capture = args[3];
46683    if (typeof args[1] === 'function') {
46684      (assign = args, eventType = assign[0], listener = assign[1], capture = assign[2]);
46685      targetSelector = undefined;
46686    }
46687    if (!capture) { capture = false; }
46688
46689    function handleLiveEvent(e) {
46690      var target = e.target;
46691      if (!target) { return; }
46692      var eventData = e.target.dom7EventData || [];
46693      if (eventData.indexOf(e) < 0) {
46694        eventData.unshift(e);
46695      }
46696      if ($(target).is(targetSelector)) { listener.apply(target, eventData); }
46697      else {
46698        var parents = $(target).parents(); // eslint-disable-line
46699        for (var k = 0; k < parents.length; k += 1) {
46700          if ($(parents[k]).is(targetSelector)) { listener.apply(parents[k], eventData); }
46701        }
46702      }
46703    }
46704    function handleEvent(e) {
46705      var eventData = e && e.target ? e.target.dom7EventData || [] : [];
46706      if (eventData.indexOf(e) < 0) {
46707        eventData.unshift(e);
46708      }
46709      listener.apply(this, eventData);
46710    }
46711    var events = eventType.split(' ');
46712    var j;
46713    for (var i = 0; i < this.length; i += 1) {
46714      var el = this[i];
46715      if (!targetSelector) {
46716        for (j = 0; j < events.length; j += 1) {
46717          var event = events[j];
46718          if (!el.dom7Listeners) { el.dom7Listeners = {}; }
46719          if (!el.dom7Listeners[event]) { el.dom7Listeners[event] = []; }
46720          el.dom7Listeners[event].push({
46721            listener: listener,
46722            proxyListener: handleEvent,
46723          });
46724          el.addEventListener(event, handleEvent, capture);
46725        }
46726      } else {
46727        // Live events
46728        for (j = 0; j < events.length; j += 1) {
46729          var event$1 = events[j];
46730          if (!el.dom7LiveListeners) { el.dom7LiveListeners = {}; }
46731          if (!el.dom7LiveListeners[event$1]) { el.dom7LiveListeners[event$1] = []; }
46732          el.dom7LiveListeners[event$1].push({
46733            listener: listener,
46734            proxyListener: handleLiveEvent,
46735          });
46736          el.addEventListener(event$1, handleLiveEvent, capture);
46737        }
46738      }
46739    }
46740    return this;
46741  }
46742  function off() {
46743    var assign;
46744
46745    var args = [], len = arguments.length;
46746    while ( len-- ) args[ len ] = arguments[ len ];
46747    var eventType = args[0];
46748    var targetSelector = args[1];
46749    var listener = args[2];
46750    var capture = args[3];
46751    if (typeof args[1] === 'function') {
46752      (assign = args, eventType = assign[0], listener = assign[1], capture = assign[2]);
46753      targetSelector = undefined;
46754    }
46755    if (!capture) { capture = false; }
46756
46757    var events = eventType.split(' ');
46758    for (var i = 0; i < events.length; i += 1) {
46759      var event = events[i];
46760      for (var j = 0; j < this.length; j += 1) {
46761        var el = this[j];
46762        var handlers = (void 0);
46763        if (!targetSelector && el.dom7Listeners) {
46764          handlers = el.dom7Listeners[event];
46765        } else if (targetSelector && el.dom7LiveListeners) {
46766          handlers = el.dom7LiveListeners[event];
46767        }
46768        if (handlers && handlers.length) {
46769          for (var k = handlers.length - 1; k >= 0; k -= 1) {
46770            var handler = handlers[k];
46771            if (listener && handler.listener === listener) {
46772              el.removeEventListener(event, handler.proxyListener, capture);
46773              handlers.splice(k, 1);
46774            } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {
46775              el.removeEventListener(event, handler.proxyListener, capture);
46776              handlers.splice(k, 1);
46777            } else if (!listener) {
46778              el.removeEventListener(event, handler.proxyListener, capture);
46779              handlers.splice(k, 1);
46780            }
46781          }
46782        }
46783      }
46784    }
46785    return this;
46786  }
46787  function trigger() {
46788    var args = [], len = arguments.length;
46789    while ( len-- ) args[ len ] = arguments[ len ];
46790
46791    var events = args[0].split(' ');
46792    var eventData = args[1];
46793    for (var i = 0; i < events.length; i += 1) {
46794      var event = events[i];
46795      for (var j = 0; j < this.length; j += 1) {
46796        var el = this[j];
46797        var evt = (void 0);
46798        try {
46799          evt = new win.CustomEvent(event, {
46800            detail: eventData,
46801            bubbles: true,
46802            cancelable: true,
46803          });
46804        } catch (e) {
46805          evt = doc.createEvent('Event');
46806          evt.initEvent(event, true, true);
46807          evt.detail = eventData;
46808        }
46809        // eslint-disable-next-line
46810        el.dom7EventData = args.filter(function (data, dataIndex) { return dataIndex > 0; });
46811        el.dispatchEvent(evt);
46812        el.dom7EventData = [];
46813        delete el.dom7EventData;
46814      }
46815    }
46816    return this;
46817  }
46818  function transitionEnd(callback) {
46819    var events = ['webkitTransitionEnd', 'transitionend'];
46820    var dom = this;
46821    var i;
46822    function fireCallBack(e) {
46823      /* jshint validthis:true */
46824      if (e.target !== this) { return; }
46825      callback.call(this, e);
46826      for (i = 0; i < events.length; i += 1) {
46827        dom.off(events[i], fireCallBack);
46828      }
46829    }
46830    if (callback) {
46831      for (i = 0; i < events.length; i += 1) {
46832        dom.on(events[i], fireCallBack);
46833      }
46834    }
46835    return this;
46836  }
46837  function outerWidth(includeMargins) {
46838    if (this.length > 0) {
46839      if (includeMargins) {
46840        // eslint-disable-next-line
46841        var styles = this.styles();
46842        return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));
46843      }
46844      return this[0].offsetWidth;
46845    }
46846    return null;
46847  }
46848  function outerHeight(includeMargins) {
46849    if (this.length > 0) {
46850      if (includeMargins) {
46851        // eslint-disable-next-line
46852        var styles = this.styles();
46853        return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));
46854      }
46855      return this[0].offsetHeight;
46856    }
46857    return null;
46858  }
46859  function offset() {
46860    if (this.length > 0) {
46861      var el = this[0];
46862      var box = el.getBoundingClientRect();
46863      var body = doc.body;
46864      var clientTop = el.clientTop || body.clientTop || 0;
46865      var clientLeft = el.clientLeft || body.clientLeft || 0;
46866      var scrollTop = el === win ? win.scrollY : el.scrollTop;
46867      var scrollLeft = el === win ? win.scrollX : el.scrollLeft;
46868      return {
46869        top: (box.top + scrollTop) - clientTop,
46870        left: (box.left + scrollLeft) - clientLeft,
46871      };
46872    }
46873
46874    return null;
46875  }
46876  function styles() {
46877    if (this[0]) { return win.getComputedStyle(this[0], null); }
46878    return {};
46879  }
46880  function css(props, value) {
46881    var i;
46882    if (arguments.length === 1) {
46883      if (typeof props === 'string') {
46884        if (this[0]) { return win.getComputedStyle(this[0], null).getPropertyValue(props); }
46885      } else {
46886        for (i = 0; i < this.length; i += 1) {
46887          // eslint-disable-next-line
46888          for (var prop in props) {
46889            this[i].style[prop] = props[prop];
46890          }
46891        }
46892        return this;
46893      }
46894    }
46895    if (arguments.length === 2 && typeof props === 'string') {
46896      for (i = 0; i < this.length; i += 1) {
46897        this[i].style[props] = value;
46898      }
46899      return this;
46900    }
46901    return this;
46902  }
46903  // Iterate over the collection passing elements to `callback`
46904  function each(callback) {
46905    // Don't bother continuing without a callback
46906    if (!callback) { return this; }
46907    // Iterate over the current collection
46908    for (var i = 0; i < this.length; i += 1) {
46909      // If the callback returns false
46910      if (callback.call(this[i], i, this[i]) === false) {
46911        // End the loop early
46912        return this;
46913      }
46914    }
46915    // Return `this` to allow chained DOM operations
46916    return this;
46917  }
46918  // eslint-disable-next-line
46919  function html(html) {
46920    if (typeof html === 'undefined') {
46921      return this[0] ? this[0].innerHTML : undefined;
46922    }
46923
46924    for (var i = 0; i < this.length; i += 1) {
46925      this[i].innerHTML = html;
46926    }
46927    return this;
46928  }
46929  // eslint-disable-next-line
46930  function text(text) {
46931    if (typeof text === 'undefined') {
46932      if (this[0]) {
46933        return this[0].textContent.trim();
46934      }
46935      return null;
46936    }
46937
46938    for (var i = 0; i < this.length; i += 1) {
46939      this[i].textContent = text;
46940    }
46941    return this;
46942  }
46943  function is(selector) {
46944    var el = this[0];
46945    var compareWith;
46946    var i;
46947    if (!el || typeof selector === 'undefined') { return false; }
46948    if (typeof selector === 'string') {
46949      if (el.matches) { return el.matches(selector); }
46950      else if (el.webkitMatchesSelector) { return el.webkitMatchesSelector(selector); }
46951      else if (el.msMatchesSelector) { return el.msMatchesSelector(selector); }
46952
46953      compareWith = $(selector);
46954      for (i = 0; i < compareWith.length; i += 1) {
46955        if (compareWith[i] === el) { return true; }
46956      }
46957      return false;
46958    } else if (selector === doc) { return el === doc; }
46959    else if (selector === win) { return el === win; }
46960
46961    if (selector.nodeType || selector instanceof Dom7) {
46962      compareWith = selector.nodeType ? [selector] : selector;
46963      for (i = 0; i < compareWith.length; i += 1) {
46964        if (compareWith[i] === el) { return true; }
46965      }
46966      return false;
46967    }
46968    return false;
46969  }
46970  function index() {
46971    var child = this[0];
46972    var i;
46973    if (child) {
46974      i = 0;
46975      // eslint-disable-next-line
46976      while ((child = child.previousSibling) !== null) {
46977        if (child.nodeType === 1) { i += 1; }
46978      }
46979      return i;
46980    }
46981    return undefined;
46982  }
46983  // eslint-disable-next-line
46984  function eq(index) {
46985    if (typeof index === 'undefined') { return this; }
46986    var length = this.length;
46987    var returnIndex;
46988    if (index > length - 1) {
46989      return new Dom7([]);
46990    }
46991    if (index < 0) {
46992      returnIndex = length + index;
46993      if (returnIndex < 0) { return new Dom7([]); }
46994      return new Dom7([this[returnIndex]]);
46995    }
46996    return new Dom7([this[index]]);
46997  }
46998  function append() {
46999    var args = [], len = arguments.length;
47000    while ( len-- ) args[ len ] = arguments[ len ];
47001
47002    var newChild;
47003
47004    for (var k = 0; k < args.length; k += 1) {
47005      newChild = args[k];
47006      for (var i = 0; i < this.length; i += 1) {
47007        if (typeof newChild === 'string') {
47008          var tempDiv = doc.createElement('div');
47009          tempDiv.innerHTML = newChild;
47010          while (tempDiv.firstChild) {
47011            this[i].appendChild(tempDiv.firstChild);
47012          }
47013        } else if (newChild instanceof Dom7) {
47014          for (var j = 0; j < newChild.length; j += 1) {
47015            this[i].appendChild(newChild[j]);
47016          }
47017        } else {
47018          this[i].appendChild(newChild);
47019        }
47020      }
47021    }
47022
47023    return this;
47024  }
47025  function prepend(newChild) {
47026    var i;
47027    var j;
47028    for (i = 0; i < this.length; i += 1) {
47029      if (typeof newChild === 'string') {
47030        var tempDiv = doc.createElement('div');
47031        tempDiv.innerHTML = newChild;
47032        for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {
47033          this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);
47034        }
47035      } else if (newChild instanceof Dom7) {
47036        for (j = 0; j < newChild.length; j += 1) {
47037          this[i].insertBefore(newChild[j], this[i].childNodes[0]);
47038        }
47039      } else {
47040        this[i].insertBefore(newChild, this[i].childNodes[0]);
47041      }
47042    }
47043    return this;
47044  }
47045  function next(selector) {
47046    if (this.length > 0) {
47047      if (selector) {
47048        if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {
47049          return new Dom7([this[0].nextElementSibling]);
47050        }
47051        return new Dom7([]);
47052      }
47053
47054      if (this[0].nextElementSibling) { return new Dom7([this[0].nextElementSibling]); }
47055      return new Dom7([]);
47056    }
47057    return new Dom7([]);
47058  }
47059  function nextAll(selector) {
47060    var nextEls = [];
47061    var el = this[0];
47062    if (!el) { return new Dom7([]); }
47063    while (el.nextElementSibling) {
47064      var next = el.nextElementSibling; // eslint-disable-line
47065      if (selector) {
47066        if ($(next).is(selector)) { nextEls.push(next); }
47067      } else { nextEls.push(next); }
47068      el = next;
47069    }
47070    return new Dom7(nextEls);
47071  }
47072  function prev(selector) {
47073    if (this.length > 0) {
47074      var el = this[0];
47075      if (selector) {
47076        if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {
47077          return new Dom7([el.previousElementSibling]);
47078        }
47079        return new Dom7([]);
47080      }
47081
47082      if (el.previousElementSibling) { return new Dom7([el.previousElementSibling]); }
47083      return new Dom7([]);
47084    }
47085    return new Dom7([]);
47086  }
47087  function prevAll(selector) {
47088    var prevEls = [];
47089    var el = this[0];
47090    if (!el) { return new Dom7([]); }
47091    while (el.previousElementSibling) {
47092      var prev = el.previousElementSibling; // eslint-disable-line
47093      if (selector) {
47094        if ($(prev).is(selector)) { prevEls.push(prev); }
47095      } else { prevEls.push(prev); }
47096      el = prev;
47097    }
47098    return new Dom7(prevEls);
47099  }
47100  function parent(selector) {
47101    var parents = []; // eslint-disable-line
47102    for (var i = 0; i < this.length; i += 1) {
47103      if (this[i].parentNode !== null) {
47104        if (selector) {
47105          if ($(this[i].parentNode).is(selector)) { parents.push(this[i].parentNode); }
47106        } else {
47107          parents.push(this[i].parentNode);
47108        }
47109      }
47110    }
47111    return $(unique(parents));
47112  }
47113  function parents(selector) {
47114    var parents = []; // eslint-disable-line
47115    for (var i = 0; i < this.length; i += 1) {
47116      var parent = this[i].parentNode; // eslint-disable-line
47117      while (parent) {
47118        if (selector) {
47119          if ($(parent).is(selector)) { parents.push(parent); }
47120        } else {
47121          parents.push(parent);
47122        }
47123        parent = parent.parentNode;
47124      }
47125    }
47126    return $(unique(parents));
47127  }
47128  function closest(selector) {
47129    var closest = this; // eslint-disable-line
47130    if (typeof selector === 'undefined') {
47131      return new Dom7([]);
47132    }
47133    if (!closest.is(selector)) {
47134      closest = closest.parents(selector).eq(0);
47135    }
47136    return closest;
47137  }
47138  function find(selector) {
47139    var foundElements = [];
47140    for (var i = 0; i < this.length; i += 1) {
47141      var found = this[i].querySelectorAll(selector);
47142      for (var j = 0; j < found.length; j += 1) {
47143        foundElements.push(found[j]);
47144      }
47145    }
47146    return new Dom7(foundElements);
47147  }
47148  function children(selector) {
47149    var children = []; // eslint-disable-line
47150    for (var i = 0; i < this.length; i += 1) {
47151      var childNodes = this[i].childNodes;
47152
47153      for (var j = 0; j < childNodes.length; j += 1) {
47154        if (!selector) {
47155          if (childNodes[j].nodeType === 1) { children.push(childNodes[j]); }
47156        } else if (childNodes[j].nodeType === 1 && $(childNodes[j]).is(selector)) {
47157          children.push(childNodes[j]);
47158        }
47159      }
47160    }
47161    return new Dom7(unique(children));
47162  }
47163  function remove() {
47164    for (var i = 0; i < this.length; i += 1) {
47165      if (this[i].parentNode) { this[i].parentNode.removeChild(this[i]); }
47166    }
47167    return this;
47168  }
47169  function add() {
47170    var args = [], len = arguments.length;
47171    while ( len-- ) args[ len ] = arguments[ len ];
47172
47173    var dom = this;
47174    var i;
47175    var j;
47176    for (i = 0; i < args.length; i += 1) {
47177      var toAdd = $(args[i]);
47178      for (j = 0; j < toAdd.length; j += 1) {
47179        dom[dom.length] = toAdd[j];
47180        dom.length += 1;
47181      }
47182    }
47183    return dom;
47184  }
47185
47186  var Methods = {
47187    addClass: addClass,
47188    removeClass: removeClass,
47189    hasClass: hasClass,
47190    toggleClass: toggleClass,
47191    attr: attr,
47192    removeAttr: removeAttr,
47193    data: data,
47194    transform: transform,
47195    transition: transition,
47196    on: on,
47197    off: off,
47198    trigger: trigger,
47199    transitionEnd: transitionEnd,
47200    outerWidth: outerWidth,
47201    outerHeight: outerHeight,
47202    offset: offset,
47203    css: css,
47204    each: each,
47205    html: html,
47206    text: text,
47207    is: is,
47208    index: index,
47209    eq: eq,
47210    append: append,
47211    prepend: prepend,
47212    next: next,
47213    nextAll: nextAll,
47214    prev: prev,
47215    prevAll: prevAll,
47216    parent: parent,
47217    parents: parents,
47218    closest: closest,
47219    find: find,
47220    children: children,
47221    remove: remove,
47222    add: add,
47223    styles: styles,
47224  };
47225
47226  Object.keys(Methods).forEach(function (methodName) {
47227    $.fn[methodName] = $.fn[methodName] || Methods[methodName];
47228  });
47229
47230  var Utils = {
47231    deleteProps: function deleteProps(obj) {
47232      var object = obj;
47233      Object.keys(object).forEach(function (key) {
47234        try {
47235          object[key] = null;
47236        } catch (e) {
47237          // no getter for object
47238        }
47239        try {
47240          delete object[key];
47241        } catch (e) {
47242          // something got wrong
47243        }
47244      });
47245    },
47246    nextTick: function nextTick(callback, delay) {
47247      if ( delay === void 0 ) delay = 0;
47248
47249      return setTimeout(callback, delay);
47250    },
47251    now: function now() {
47252      return Date.now();
47253    },
47254    getTranslate: function getTranslate(el, axis) {
47255      if ( axis === void 0 ) axis = 'x';
47256
47257      var matrix;
47258      var curTransform;
47259      var transformMatrix;
47260
47261      var curStyle = win.getComputedStyle(el, null);
47262
47263      if (win.WebKitCSSMatrix) {
47264        curTransform = curStyle.transform || curStyle.webkitTransform;
47265        if (curTransform.split(',').length > 6) {
47266          curTransform = curTransform.split(', ').map(function (a) { return a.replace(',', '.'); }).join(', ');
47267        }
47268        // Some old versions of Webkit choke when 'none' is passed; pass
47269        // empty string instead in this case
47270        transformMatrix = new win.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);
47271      } else {
47272        transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');
47273        matrix = transformMatrix.toString().split(',');
47274      }
47275
47276      if (axis === 'x') {
47277        // Latest Chrome and webkits Fix
47278        if (win.WebKitCSSMatrix) { curTransform = transformMatrix.m41; }
47279        // Crazy IE10 Matrix
47280        else if (matrix.length === 16) { curTransform = parseFloat(matrix[12]); }
47281        // Normal Browsers
47282        else { curTransform = parseFloat(matrix[4]); }
47283      }
47284      if (axis === 'y') {
47285        // Latest Chrome and webkits Fix
47286        if (win.WebKitCSSMatrix) { curTransform = transformMatrix.m42; }
47287        // Crazy IE10 Matrix
47288        else if (matrix.length === 16) { curTransform = parseFloat(matrix[13]); }
47289        // Normal Browsers
47290        else { curTransform = parseFloat(matrix[5]); }
47291      }
47292      return curTransform || 0;
47293    },
47294    parseUrlQuery: function parseUrlQuery(url) {
47295      var query = {};
47296      var urlToParse = url || win.location.href;
47297      var i;
47298      var params;
47299      var param;
47300      var length;
47301      if (typeof urlToParse === 'string' && urlToParse.length) {
47302        urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\S*\?/, '') : '';
47303        params = urlToParse.split('&').filter(function (paramsPart) { return paramsPart !== ''; });
47304        length = params.length;
47305
47306        for (i = 0; i < length; i += 1) {
47307          param = params[i].replace(/#\S+/g, '').split('=');
47308          query[decodeURIComponent(param[0])] = typeof param[1] === 'undefined' ? undefined : decodeURIComponent(param[1]) || '';
47309        }
47310      }
47311      return query;
47312    },
47313    isObject: function isObject(o) {
47314      return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;
47315    },
47316    extend: function extend() {
47317      var args = [], len$1 = arguments.length;
47318      while ( len$1-- ) args[ len$1 ] = arguments[ len$1 ];
47319
47320      var to = Object(args[0]);
47321      for (var i = 1; i < args.length; i += 1) {
47322        var nextSource = args[i];
47323        if (nextSource !== undefined && nextSource !== null) {
47324          var keysArray = Object.keys(Object(nextSource));
47325          for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {
47326            var nextKey = keysArray[nextIndex];
47327            var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);
47328            if (desc !== undefined && desc.enumerable) {
47329              if (Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {
47330                Utils.extend(to[nextKey], nextSource[nextKey]);
47331              } else if (!Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {
47332                to[nextKey] = {};
47333                Utils.extend(to[nextKey], nextSource[nextKey]);
47334              } else {
47335                to[nextKey] = nextSource[nextKey];
47336              }
47337            }
47338          }
47339        }
47340      }
47341      return to;
47342    },
47343  };
47344
47345  var Support = (function Support() {
47346    var testDiv = doc.createElement('div');
47347    return {
47348      touch: (win.Modernizr && win.Modernizr.touch === true) || (function checkTouch() {
47349        return !!((win.navigator.maxTouchPoints > 0) || ('ontouchstart' in win) || (win.DocumentTouch && doc instanceof win.DocumentTouch));
47350      }()),
47351
47352      pointerEvents: !!(win.navigator.pointerEnabled || win.PointerEvent || ('maxTouchPoints' in win.navigator && win.navigator.maxTouchPoints > 0)),
47353      prefixedPointerEvents: !!win.navigator.msPointerEnabled,
47354
47355      transition: (function checkTransition() {
47356        var style = testDiv.style;
47357        return ('transition' in style || 'webkitTransition' in style || 'MozTransition' in style);
47358      }()),
47359      transforms3d: (win.Modernizr && win.Modernizr.csstransforms3d === true) || (function checkTransforms3d() {
47360        var style = testDiv.style;
47361        return ('webkitPerspective' in style || 'MozPerspective' in style || 'OPerspective' in style || 'MsPerspective' in style || 'perspective' in style);
47362      }()),
47363
47364      flexbox: (function checkFlexbox() {
47365        var style = testDiv.style;
47366        var styles = ('alignItems webkitAlignItems webkitBoxAlign msFlexAlign mozBoxAlign webkitFlexDirection msFlexDirection mozBoxDirection mozBoxOrient webkitBoxDirection webkitBoxOrient').split(' ');
47367        for (var i = 0; i < styles.length; i += 1) {
47368          if (styles[i] in style) { return true; }
47369        }
47370        return false;
47371      }()),
47372
47373      observer: (function checkObserver() {
47374        return ('MutationObserver' in win || 'WebkitMutationObserver' in win);
47375      }()),
47376
47377      passiveListener: (function checkPassiveListener() {
47378        var supportsPassive = false;
47379        try {
47380          var opts = Object.defineProperty({}, 'passive', {
47381            // eslint-disable-next-line
47382            get: function get() {
47383              supportsPassive = true;
47384            },
47385          });
47386          win.addEventListener('testPassiveListener', null, opts);
47387        } catch (e) {
47388          // No support
47389        }
47390        return supportsPassive;
47391      }()),
47392
47393      gestures: (function checkGestures() {
47394        return 'ongesturestart' in win;
47395      }()),
47396    };
47397  }());
47398
47399  var Browser = (function Browser() {
47400    function isSafari() {
47401      var ua = win.navigator.userAgent.toLowerCase();
47402      return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0);
47403    }
47404    return {
47405      isIE: !!win.navigator.userAgent.match(/Trident/g) || !!win.navigator.userAgent.match(/MSIE/g),
47406      isEdge: !!win.navigator.userAgent.match(/Edge/g),
47407      isSafari: isSafari(),
47408      isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(win.navigator.userAgent),
47409    };
47410  }());
47411
47412  var SwiperClass = function SwiperClass(params) {
47413    if ( params === void 0 ) params = {};
47414
47415    var self = this;
47416    self.params = params;
47417
47418    // Events
47419    self.eventsListeners = {};
47420
47421    if (self.params && self.params.on) {
47422      Object.keys(self.params.on).forEach(function (eventName) {
47423        self.on(eventName, self.params.on[eventName]);
47424      });
47425    }
47426  };
47427
47428  var staticAccessors = { components: { configurable: true } };
47429
47430  SwiperClass.prototype.on = function on (events, handler, priority) {
47431    var self = this;
47432    if (typeof handler !== 'function') { return self; }
47433    var method = priority ? 'unshift' : 'push';
47434    events.split(' ').forEach(function (event) {
47435      if (!self.eventsListeners[event]) { self.eventsListeners[event] = []; }
47436      self.eventsListeners[event][method](handler);
47437    });
47438    return self;
47439  };
47440
47441  SwiperClass.prototype.once = function once (events, handler, priority) {
47442    var self = this;
47443    if (typeof handler !== 'function') { return self; }
47444    function onceHandler() {
47445        var args = [], len = arguments.length;
47446        while ( len-- ) args[ len ] = arguments[ len ];
47447
47448      handler.apply(self, args);
47449      self.off(events, onceHandler);
47450      if (onceHandler.f7proxy) {
47451        delete onceHandler.f7proxy;
47452      }
47453    }
47454    onceHandler.f7proxy = handler;
47455    return self.on(events, onceHandler, priority);
47456  };
47457
47458  SwiperClass.prototype.off = function off (events, handler) {
47459    var self = this;
47460    if (!self.eventsListeners) { return self; }
47461    events.split(' ').forEach(function (event) {
47462      if (typeof handler === 'undefined') {
47463        self.eventsListeners[event] = [];
47464      } else if (self.eventsListeners[event] && self.eventsListeners[event].length) {
47465        self.eventsListeners[event].forEach(function (eventHandler, index) {
47466          if (eventHandler === handler || (eventHandler.f7proxy && eventHandler.f7proxy === handler)) {
47467            self.eventsListeners[event].splice(index, 1);
47468          }
47469        });
47470      }
47471    });
47472    return self;
47473  };
47474
47475  SwiperClass.prototype.emit = function emit () {
47476      var args = [], len = arguments.length;
47477      while ( len-- ) args[ len ] = arguments[ len ];
47478
47479    var self = this;
47480    if (!self.eventsListeners) { return self; }
47481    var events;
47482    var data;
47483    var context;
47484    if (typeof args[0] === 'string' || Array.isArray(args[0])) {
47485      events = args[0];
47486      data = args.slice(1, args.length);
47487      context = self;
47488    } else {
47489      events = args[0].events;
47490      data = args[0].data;
47491      context = args[0].context || self;
47492    }
47493    var eventsArray = Array.isArray(events) ? events : events.split(' ');
47494    eventsArray.forEach(function (event) {
47495      if (self.eventsListeners && self.eventsListeners[event]) {
47496        var handlers = [];
47497        self.eventsListeners[event].forEach(function (eventHandler) {
47498          handlers.push(eventHandler);
47499        });
47500        handlers.forEach(function (eventHandler) {
47501          eventHandler.apply(context, data);
47502        });
47503      }
47504    });
47505    return self;
47506  };
47507
47508  SwiperClass.prototype.useModulesParams = function useModulesParams (instanceParams) {
47509    var instance = this;
47510    if (!instance.modules) { return; }
47511    Object.keys(instance.modules).forEach(function (moduleName) {
47512      var module = instance.modules[moduleName];
47513      // Extend params
47514      if (module.params) {
47515        Utils.extend(instanceParams, module.params);
47516      }
47517    });
47518  };
47519
47520  SwiperClass.prototype.useModules = function useModules (modulesParams) {
47521      if ( modulesParams === void 0 ) modulesParams = {};
47522
47523    var instance = this;
47524    if (!instance.modules) { return; }
47525    Object.keys(instance.modules).forEach(function (moduleName) {
47526      var module = instance.modules[moduleName];
47527      var moduleParams = modulesParams[moduleName] || {};
47528      // Extend instance methods and props
47529      if (module.instance) {
47530        Object.keys(module.instance).forEach(function (modulePropName) {
47531          var moduleProp = module.instance[modulePropName];
47532          if (typeof moduleProp === 'function') {
47533            instance[modulePropName] = moduleProp.bind(instance);
47534          } else {
47535            instance[modulePropName] = moduleProp;
47536          }
47537        });
47538      }
47539      // Add event listeners
47540      if (module.on && instance.on) {
47541        Object.keys(module.on).forEach(function (moduleEventName) {
47542          instance.on(moduleEventName, module.on[moduleEventName]);
47543        });
47544      }
47545
47546      // Module create callback
47547      if (module.create) {
47548        module.create.bind(instance)(moduleParams);
47549      }
47550    });
47551  };
47552
47553  staticAccessors.components.set = function (components) {
47554    var Class = this;
47555    if (!Class.use) { return; }
47556    Class.use(components);
47557  };
47558
47559  SwiperClass.installModule = function installModule (module) {
47560      var params = [], len = arguments.length - 1;
47561      while ( len-- > 0 ) params[ len ] = arguments[ len + 1 ];
47562
47563    var Class = this;
47564    if (!Class.prototype.modules) { Class.prototype.modules = {}; }
47565    var name = module.name || (((Object.keys(Class.prototype.modules).length) + "_" + (Utils.now())));
47566    Class.prototype.modules[name] = module;
47567    // Prototype
47568    if (module.proto) {
47569      Object.keys(module.proto).forEach(function (key) {
47570        Class.prototype[key] = module.proto[key];
47571      });
47572    }
47573    // Class
47574    if (module.static) {
47575      Object.keys(module.static).forEach(function (key) {
47576        Class[key] = module.static[key];
47577      });
47578    }
47579    // Callback
47580    if (module.install) {
47581      module.install.apply(Class, params);
47582    }
47583    return Class;
47584  };
47585
47586  SwiperClass.use = function use (module) {
47587      var params = [], len = arguments.length - 1;
47588      while ( len-- > 0 ) params[ len ] = arguments[ len + 1 ];
47589
47590    var Class = this;
47591    if (Array.isArray(module)) {
47592      module.forEach(function (m) { return Class.installModule(m); });
47593      return Class;
47594    }
47595    return Class.installModule.apply(Class, [ module ].concat( params ));
47596  };
47597
47598  Object.defineProperties( SwiperClass, staticAccessors );
47599
47600  function updateSize () {
47601    var swiper = this;
47602    var width;
47603    var height;
47604    var $el = swiper.$el;
47605    if (typeof swiper.params.width !== 'undefined') {
47606      width = swiper.params.width;
47607    } else {
47608      width = $el[0].clientWidth;
47609    }
47610    if (typeof swiper.params.height !== 'undefined') {
47611      height = swiper.params.height;
47612    } else {
47613      height = $el[0].clientHeight;
47614    }
47615    if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) {
47616      return;
47617    }
47618
47619    // Subtract paddings
47620    width = width - parseInt($el.css('padding-left'), 10) - parseInt($el.css('padding-right'), 10);
47621    height = height - parseInt($el.css('padding-top'), 10) - parseInt($el.css('padding-bottom'), 10);
47622
47623    Utils.extend(swiper, {
47624      width: width,
47625      height: height,
47626      size: swiper.isHorizontal() ? width : height,
47627    });
47628  }
47629
47630  function updateSlides () {
47631    var swiper = this;
47632    var params = swiper.params;
47633
47634    var $wrapperEl = swiper.$wrapperEl;
47635    var swiperSize = swiper.size;
47636    var rtl = swiper.rtlTranslate;
47637    var wrongRTL = swiper.wrongRTL;
47638    var isVirtual = swiper.virtual && params.virtual.enabled;
47639    var previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;
47640    var slides = $wrapperEl.children(("." + (swiper.params.slideClass)));
47641    var slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;
47642    var snapGrid = [];
47643    var slidesGrid = [];
47644    var slidesSizesGrid = [];
47645
47646    var offsetBefore = params.slidesOffsetBefore;
47647    if (typeof offsetBefore === 'function') {
47648      offsetBefore = params.slidesOffsetBefore.call(swiper);
47649    }
47650
47651    var offsetAfter = params.slidesOffsetAfter;
47652    if (typeof offsetAfter === 'function') {
47653      offsetAfter = params.slidesOffsetAfter.call(swiper);
47654    }
47655
47656    var previousSnapGridLength = swiper.snapGrid.length;
47657    var previousSlidesGridLength = swiper.snapGrid.length;
47658
47659    var spaceBetween = params.spaceBetween;
47660    var slidePosition = -offsetBefore;
47661    var prevSlideSize = 0;
47662    var index = 0;
47663    if (typeof swiperSize === 'undefined') {
47664      return;
47665    }
47666    if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {
47667      spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize;
47668    }
47669
47670    swiper.virtualSize = -spaceBetween;
47671
47672    // reset margins
47673    if (rtl) { slides.css({ marginLeft: '', marginTop: '' }); }
47674    else { slides.css({ marginRight: '', marginBottom: '' }); }
47675
47676    var slidesNumberEvenToRows;
47677    if (params.slidesPerColumn > 1) {
47678      if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) {
47679        slidesNumberEvenToRows = slidesLength;
47680      } else {
47681        slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;
47682      }
47683      if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {
47684        slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);
47685      }
47686    }
47687
47688    // Calc slides
47689    var slideSize;
47690    var slidesPerColumn = params.slidesPerColumn;
47691    var slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;
47692    var numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);
47693    for (var i = 0; i < slidesLength; i += 1) {
47694      slideSize = 0;
47695      var slide = slides.eq(i);
47696      if (params.slidesPerColumn > 1) {
47697        // Set slides order
47698        var newSlideOrderIndex = (void 0);
47699        var column = (void 0);
47700        var row = (void 0);
47701        if (
47702          (params.slidesPerColumnFill === 'column')
47703          || (params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1)
47704        ) {
47705          if (params.slidesPerColumnFill === 'column') {
47706            column = Math.floor(i / slidesPerColumn);
47707            row = i - (column * slidesPerColumn);
47708            if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn - 1)) {
47709              row += 1;
47710              if (row >= slidesPerColumn) {
47711                row = 0;
47712                column += 1;
47713              }
47714            }
47715          } else {
47716            var groupIndex = Math.floor(i / params.slidesPerGroup);
47717            row = Math.floor(i / params.slidesPerView) - groupIndex * params.slidesPerColumn;
47718            column = i - row * params.slidesPerView - groupIndex * params.slidesPerView;
47719          }
47720          newSlideOrderIndex = column + ((row * slidesNumberEvenToRows) / slidesPerColumn);
47721          slide
47722            .css({
47723              '-webkit-box-ordinal-group': newSlideOrderIndex,
47724              '-moz-box-ordinal-group': newSlideOrderIndex,
47725              '-ms-flex-order': newSlideOrderIndex,
47726              '-webkit-order': newSlideOrderIndex,
47727              order: newSlideOrderIndex,
47728            });
47729        } else {
47730          row = Math.floor(i / slidesPerRow);
47731          column = i - (row * slidesPerRow);
47732        }
47733        slide
47734          .css(
47735            ("margin-" + (swiper.isHorizontal() ? 'top' : 'left')),
47736            (row !== 0 && params.spaceBetween) && (((params.spaceBetween) + "px"))
47737          )
47738          .attr('data-swiper-column', column)
47739          .attr('data-swiper-row', row);
47740      }
47741      if (slide.css('display') === 'none') { continue; } // eslint-disable-line
47742
47743      if (params.slidesPerView === 'auto') {
47744        var slideStyles = win.getComputedStyle(slide[0], null);
47745        var currentTransform = slide[0].style.transform;
47746        var currentWebKitTransform = slide[0].style.webkitTransform;
47747        if (currentTransform) {
47748          slide[0].style.transform = 'none';
47749        }
47750        if (currentWebKitTransform) {
47751          slide[0].style.webkitTransform = 'none';
47752        }
47753        if (params.roundLengths) {
47754          slideSize = swiper.isHorizontal()
47755            ? slide.outerWidth(true)
47756            : slide.outerHeight(true);
47757        } else {
47758          // eslint-disable-next-line
47759          if (swiper.isHorizontal()) {
47760            var width = parseFloat(slideStyles.getPropertyValue('width'));
47761            var paddingLeft = parseFloat(slideStyles.getPropertyValue('padding-left'));
47762            var paddingRight = parseFloat(slideStyles.getPropertyValue('padding-right'));
47763            var marginLeft = parseFloat(slideStyles.getPropertyValue('margin-left'));
47764            var marginRight = parseFloat(slideStyles.getPropertyValue('margin-right'));
47765            var boxSizing = slideStyles.getPropertyValue('box-sizing');
47766            if (boxSizing && boxSizing === 'border-box' && !Browser.isIE) {
47767              slideSize = width + marginLeft + marginRight;
47768            } else {
47769              slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight;
47770            }
47771          } else {
47772            var height = parseFloat(slideStyles.getPropertyValue('height'));
47773            var paddingTop = parseFloat(slideStyles.getPropertyValue('padding-top'));
47774            var paddingBottom = parseFloat(slideStyles.getPropertyValue('padding-bottom'));
47775            var marginTop = parseFloat(slideStyles.getPropertyValue('margin-top'));
47776            var marginBottom = parseFloat(slideStyles.getPropertyValue('margin-bottom'));
47777            var boxSizing$1 = slideStyles.getPropertyValue('box-sizing');
47778            if (boxSizing$1 && boxSizing$1 === 'border-box' && !Browser.isIE) {
47779              slideSize = height + marginTop + marginBottom;
47780            } else {
47781              slideSize = height + paddingTop + paddingBottom + marginTop + marginBottom;
47782            }
47783          }
47784        }
47785        if (currentTransform) {
47786          slide[0].style.transform = currentTransform;
47787        }
47788        if (currentWebKitTransform) {
47789          slide[0].style.webkitTransform = currentWebKitTransform;
47790        }
47791        if (params.roundLengths) { slideSize = Math.floor(slideSize); }
47792      } else {
47793        slideSize = (swiperSize - ((params.slidesPerView - 1) * spaceBetween)) / params.slidesPerView;
47794        if (params.roundLengths) { slideSize = Math.floor(slideSize); }
47795
47796        if (slides[i]) {
47797          if (swiper.isHorizontal()) {
47798            slides[i].style.width = slideSize + "px";
47799          } else {
47800            slides[i].style.height = slideSize + "px";
47801          }
47802        }
47803      }
47804      if (slides[i]) {
47805        slides[i].swiperSlideSize = slideSize;
47806      }
47807      slidesSizesGrid.push(slideSize);
47808
47809
47810      if (params.centeredSlides) {
47811        slidePosition = slidePosition + (slideSize / 2) + (prevSlideSize / 2) + spaceBetween;
47812        if (prevSlideSize === 0 && i !== 0) { slidePosition = slidePosition - (swiperSize / 2) - spaceBetween; }
47813        if (i === 0) { slidePosition = slidePosition - (swiperSize / 2) - spaceBetween; }
47814        if (Math.abs(slidePosition) < 1 / 1000) { slidePosition = 0; }
47815        if (params.roundLengths) { slidePosition = Math.floor(slidePosition); }
47816        if ((index) % params.slidesPerGroup === 0) { snapGrid.push(slidePosition); }
47817        slidesGrid.push(slidePosition);
47818      } else {
47819        if (params.roundLengths) { slidePosition = Math.floor(slidePosition); }
47820        if ((index) % params.slidesPerGroup === 0) { snapGrid.push(slidePosition); }
47821        slidesGrid.push(slidePosition);
47822        slidePosition = slidePosition + slideSize + spaceBetween;
47823      }
47824
47825      swiper.virtualSize += slideSize + spaceBetween;
47826
47827      prevSlideSize = slideSize;
47828
47829      index += 1;
47830    }
47831    swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;
47832    var newSlidesGrid;
47833
47834    if (
47835      rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {
47836      $wrapperEl.css({ width: ((swiper.virtualSize + params.spaceBetween) + "px") });
47837    }
47838    if (!Support.flexbox || params.setWrapperSize) {
47839      if (swiper.isHorizontal()) { $wrapperEl.css({ width: ((swiper.virtualSize + params.spaceBetween) + "px") }); }
47840      else { $wrapperEl.css({ height: ((swiper.virtualSize + params.spaceBetween) + "px") }); }
47841    }
47842
47843    if (params.slidesPerColumn > 1) {
47844      swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;
47845      swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;
47846      if (swiper.isHorizontal()) { $wrapperEl.css({ width: ((swiper.virtualSize + params.spaceBetween) + "px") }); }
47847      else { $wrapperEl.css({ height: ((swiper.virtualSize + params.spaceBetween) + "px") }); }
47848      if (params.centeredSlides) {
47849        newSlidesGrid = [];
47850        for (var i$1 = 0; i$1 < snapGrid.length; i$1 += 1) {
47851          var slidesGridItem = snapGrid[i$1];
47852          if (params.roundLengths) { slidesGridItem = Math.floor(slidesGridItem); }
47853          if (snapGrid[i$1] < swiper.virtualSize + snapGrid[0]) { newSlidesGrid.push(slidesGridItem); }
47854        }
47855        snapGrid = newSlidesGrid;
47856      }
47857    }
47858
47859    // Remove last grid elements depending on width
47860    if (!params.centeredSlides) {
47861      newSlidesGrid = [];
47862      for (var i$2 = 0; i$2 < snapGrid.length; i$2 += 1) {
47863        var slidesGridItem$1 = snapGrid[i$2];
47864        if (params.roundLengths) { slidesGridItem$1 = Math.floor(slidesGridItem$1); }
47865        if (snapGrid[i$2] <= swiper.virtualSize - swiperSize) {
47866          newSlidesGrid.push(slidesGridItem$1);
47867        }
47868      }
47869      snapGrid = newSlidesGrid;
47870      if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {
47871        snapGrid.push(swiper.virtualSize - swiperSize);
47872      }
47873    }
47874    if (snapGrid.length === 0) { snapGrid = [0]; }
47875
47876    if (params.spaceBetween !== 0) {
47877      if (swiper.isHorizontal()) {
47878        if (rtl) { slides.css({ marginLeft: (spaceBetween + "px") }); }
47879        else { slides.css({ marginRight: (spaceBetween + "px") }); }
47880      } else { slides.css({ marginBottom: (spaceBetween + "px") }); }
47881    }
47882
47883    if (params.centerInsufficientSlides) {
47884      var allSlidesSize = 0;
47885      slidesSizesGrid.forEach(function (slideSizeValue) {
47886        allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);
47887      });
47888      allSlidesSize -= params.spaceBetween;
47889      if (allSlidesSize < swiperSize) {
47890        var allSlidesOffset = (swiperSize - allSlidesSize) / 2;
47891        snapGrid.forEach(function (snap, snapIndex) {
47892          snapGrid[snapIndex] = snap - allSlidesOffset;
47893        });
47894        slidesGrid.forEach(function (snap, snapIndex) {
47895          slidesGrid[snapIndex] = snap + allSlidesOffset;
47896        });
47897      }
47898    }
47899
47900    Utils.extend(swiper, {
47901      slides: slides,
47902      snapGrid: snapGrid,
47903      slidesGrid: slidesGrid,
47904      slidesSizesGrid: slidesSizesGrid,
47905    });
47906
47907    if (slidesLength !== previousSlidesLength) {
47908      swiper.emit('slidesLengthChange');
47909    }
47910    if (snapGrid.length !== previousSnapGridLength) {
47911      if (swiper.params.watchOverflow) { swiper.checkOverflow(); }
47912      swiper.emit('snapGridLengthChange');
47913    }
47914    if (slidesGrid.length !== previousSlidesGridLength) {
47915      swiper.emit('slidesGridLengthChange');
47916    }
47917
47918    if (params.watchSlidesProgress || params.watchSlidesVisibility) {
47919      swiper.updateSlidesOffset();
47920    }
47921  }
47922
47923  function updateAutoHeight (speed) {
47924    var swiper = this;
47925    var activeSlides = [];
47926    var newHeight = 0;
47927    var i;
47928    if (typeof speed === 'number') {
47929      swiper.setTransition(speed);
47930    } else if (speed === true) {
47931      swiper.setTransition(swiper.params.speed);
47932    }
47933    // Find slides currently in view
47934    if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {
47935      for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {
47936        var index = swiper.activeIndex + i;
47937        if (index > swiper.slides.length) { break; }
47938        activeSlides.push(swiper.slides.eq(index)[0]);
47939      }
47940    } else {
47941      activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]);
47942    }
47943
47944    // Find new height from highest slide in view
47945    for (i = 0; i < activeSlides.length; i += 1) {
47946      if (typeof activeSlides[i] !== 'undefined') {
47947        var height = activeSlides[i].offsetHeight;
47948        newHeight = height > newHeight ? height : newHeight;
47949      }
47950    }
47951
47952    // Update Height
47953    if (newHeight) { swiper.$wrapperEl.css('height', (newHeight + "px")); }
47954  }
47955
47956  function updateSlidesOffset () {
47957    var swiper = this;
47958    var slides = swiper.slides;
47959    for (var i = 0; i < slides.length; i += 1) {
47960      slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;
47961    }
47962  }
47963
47964  function updateSlidesProgress (translate) {
47965    if ( translate === void 0 ) translate = (this && this.translate) || 0;
47966
47967    var swiper = this;
47968    var params = swiper.params;
47969
47970    var slides = swiper.slides;
47971    var rtl = swiper.rtlTranslate;
47972
47973    if (slides.length === 0) { return; }
47974    if (typeof slides[0].swiperSlideOffset === 'undefined') { swiper.updateSlidesOffset(); }
47975
47976    var offsetCenter = -translate;
47977    if (rtl) { offsetCenter = translate; }
47978
47979    // Visible Slides
47980    slides.removeClass(params.slideVisibleClass);
47981
47982    swiper.visibleSlidesIndexes = [];
47983    swiper.visibleSlides = [];
47984
47985    for (var i = 0; i < slides.length; i += 1) {
47986      var slide = slides[i];
47987      var slideProgress = (
47988        (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0)) - slide.swiperSlideOffset
47989      ) / (slide.swiperSlideSize + params.spaceBetween);
47990      if (params.watchSlidesVisibility) {
47991        var slideBefore = -(offsetCenter - slide.swiperSlideOffset);
47992        var slideAfter = slideBefore + swiper.slidesSizesGrid[i];
47993        var isVisible = (slideBefore >= 0 && slideBefore < swiper.size - 1)
47994                  || (slideAfter > 1 && slideAfter <= swiper.size)
47995                  || (slideBefore <= 0 && slideAfter >= swiper.size);
47996        if (isVisible) {
47997          swiper.visibleSlides.push(slide);
47998          swiper.visibleSlidesIndexes.push(i);
47999          slides.eq(i).addClass(params.slideVisibleClass);
48000        }
48001      }
48002      slide.progress = rtl ? -slideProgress : slideProgress;
48003    }
48004    swiper.visibleSlides = $(swiper.visibleSlides);
48005  }
48006
48007  function updateProgress (translate) {
48008    if ( translate === void 0 ) translate = (this && this.translate) || 0;
48009
48010    var swiper = this;
48011    var params = swiper.params;
48012
48013    var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
48014    var progress = swiper.progress;
48015    var isBeginning = swiper.isBeginning;
48016    var isEnd = swiper.isEnd;
48017    var wasBeginning = isBeginning;
48018    var wasEnd = isEnd;
48019    if (translatesDiff === 0) {
48020      progress = 0;
48021      isBeginning = true;
48022      isEnd = true;
48023    } else {
48024      progress = (translate - swiper.minTranslate()) / (translatesDiff);
48025      isBeginning = progress <= 0;
48026      isEnd = progress >= 1;
48027    }
48028    Utils.extend(swiper, {
48029      progress: progress,
48030      isBeginning: isBeginning,
48031      isEnd: isEnd,
48032    });
48033
48034    if (params.watchSlidesProgress || params.watchSlidesVisibility) { swiper.updateSlidesProgress(translate); }
48035
48036    if (isBeginning && !wasBeginning) {
48037      swiper.emit('reachBeginning toEdge');
48038    }
48039    if (isEnd && !wasEnd) {
48040      swiper.emit('reachEnd toEdge');
48041    }
48042    if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) {
48043      swiper.emit('fromEdge');
48044    }
48045
48046    swiper.emit('progress', progress);
48047  }
48048
48049  function updateSlidesClasses () {
48050    var swiper = this;
48051
48052    var slides = swiper.slides;
48053    var params = swiper.params;
48054    var $wrapperEl = swiper.$wrapperEl;
48055    var activeIndex = swiper.activeIndex;
48056    var realIndex = swiper.realIndex;
48057    var isVirtual = swiper.virtual && params.virtual.enabled;
48058
48059    slides.removeClass(((params.slideActiveClass) + " " + (params.slideNextClass) + " " + (params.slidePrevClass) + " " + (params.slideDuplicateActiveClass) + " " + (params.slideDuplicateNextClass) + " " + (params.slideDuplicatePrevClass)));
48060
48061    var activeSlide;
48062    if (isVirtual) {
48063      activeSlide = swiper.$wrapperEl.find(("." + (params.slideClass) + "[data-swiper-slide-index=\"" + activeIndex + "\"]"));
48064    } else {
48065      activeSlide = slides.eq(activeIndex);
48066    }
48067
48068    // Active classes
48069    activeSlide.addClass(params.slideActiveClass);
48070
48071    if (params.loop) {
48072      // Duplicate to all looped slides
48073      if (activeSlide.hasClass(params.slideDuplicateClass)) {
48074        $wrapperEl
48075          .children(("." + (params.slideClass) + ":not(." + (params.slideDuplicateClass) + ")[data-swiper-slide-index=\"" + realIndex + "\"]"))
48076          .addClass(params.slideDuplicateActiveClass);
48077      } else {
48078        $wrapperEl
48079          .children(("." + (params.slideClass) + "." + (params.slideDuplicateClass) + "[data-swiper-slide-index=\"" + realIndex + "\"]"))
48080          .addClass(params.slideDuplicateActiveClass);
48081      }
48082    }
48083    // Next Slide
48084    var nextSlide = activeSlide.nextAll(("." + (params.slideClass))).eq(0).addClass(params.slideNextClass);
48085    if (params.loop && nextSlide.length === 0) {
48086      nextSlide = slides.eq(0);
48087      nextSlide.addClass(params.slideNextClass);
48088    }
48089    // Prev Slide
48090    var prevSlide = activeSlide.prevAll(("." + (params.slideClass))).eq(0).addClass(params.slidePrevClass);
48091    if (params.loop && prevSlide.length === 0) {
48092      prevSlide = slides.eq(-1);
48093      prevSlide.addClass(params.slidePrevClass);
48094    }
48095    if (params.loop) {
48096      // Duplicate to all looped slides
48097      if (nextSlide.hasClass(params.slideDuplicateClass)) {
48098        $wrapperEl
48099          .children(("." + (params.slideClass) + ":not(." + (params.slideDuplicateClass) + ")[data-swiper-slide-index=\"" + (nextSlide.attr('data-swiper-slide-index')) + "\"]"))
48100          .addClass(params.slideDuplicateNextClass);
48101      } else {
48102        $wrapperEl
48103          .children(("." + (params.slideClass) + "." + (params.slideDuplicateClass) + "[data-swiper-slide-index=\"" + (nextSlide.attr('data-swiper-slide-index')) + "\"]"))
48104          .addClass(params.slideDuplicateNextClass);
48105      }
48106      if (prevSlide.hasClass(params.slideDuplicateClass)) {
48107        $wrapperEl
48108          .children(("." + (params.slideClass) + ":not(." + (params.slideDuplicateClass) + ")[data-swiper-slide-index=\"" + (prevSlide.attr('data-swiper-slide-index')) + "\"]"))
48109          .addClass(params.slideDuplicatePrevClass);
48110      } else {
48111        $wrapperEl
48112          .children(("." + (params.slideClass) + "." + (params.slideDuplicateClass) + "[data-swiper-slide-index=\"" + (prevSlide.attr('data-swiper-slide-index')) + "\"]"))
48113          .addClass(params.slideDuplicatePrevClass);
48114      }
48115    }
48116  }
48117
48118  function updateActiveIndex (newActiveIndex) {
48119    var swiper = this;
48120    var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
48121    var slidesGrid = swiper.slidesGrid;
48122    var snapGrid = swiper.snapGrid;
48123    var params = swiper.params;
48124    var previousIndex = swiper.activeIndex;
48125    var previousRealIndex = swiper.realIndex;
48126    var previousSnapIndex = swiper.snapIndex;
48127    var activeIndex = newActiveIndex;
48128    var snapIndex;
48129    if (typeof activeIndex === 'undefined') {
48130      for (var i = 0; i < slidesGrid.length; i += 1) {
48131        if (typeof slidesGrid[i + 1] !== 'undefined') {
48132          if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - ((slidesGrid[i + 1] - slidesGrid[i]) / 2)) {
48133            activeIndex = i;
48134          } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {
48135            activeIndex = i + 1;
48136          }
48137        } else if (translate >= slidesGrid[i]) {
48138          activeIndex = i;
48139        }
48140      }
48141      // Normalize slideIndex
48142      if (params.normalizeSlideIndex) {
48143        if (activeIndex < 0 || typeof activeIndex === 'undefined') { activeIndex = 0; }
48144      }
48145    }
48146    if (snapGrid.indexOf(translate) >= 0) {
48147      snapIndex = snapGrid.indexOf(translate);
48148    } else {
48149      snapIndex = Math.floor(activeIndex / params.slidesPerGroup);
48150    }
48151    if (snapIndex >= snapGrid.length) { snapIndex = snapGrid.length - 1; }
48152    if (activeIndex === previousIndex) {
48153      if (snapIndex !== previousSnapIndex) {
48154        swiper.snapIndex = snapIndex;
48155        swiper.emit('snapIndexChange');
48156      }
48157      return;
48158    }
48159
48160    // Get real index
48161    var realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);
48162
48163    Utils.extend(swiper, {
48164      snapIndex: snapIndex,
48165      realIndex: realIndex,
48166      previousIndex: previousIndex,
48167      activeIndex: activeIndex,
48168    });
48169    swiper.emit('activeIndexChange');
48170    swiper.emit('snapIndexChange');
48171    if (previousRealIndex !== realIndex) {
48172      swiper.emit('realIndexChange');
48173    }
48174    if (swiper.initialized || swiper.runCallbacksOnInit) {
48175      swiper.emit('slideChange');
48176    }
48177  }
48178
48179  function updateClickedSlide (e) {
48180    var swiper = this;
48181    var params = swiper.params;
48182    var slide = $(e.target).closest(("." + (params.slideClass)))[0];
48183    var slideFound = false;
48184    if (slide) {
48185      for (var i = 0; i < swiper.slides.length; i += 1) {
48186        if (swiper.slides[i] === slide) { slideFound = true; }
48187      }
48188    }
48189
48190    if (slide && slideFound) {
48191      swiper.clickedSlide = slide;
48192      if (swiper.virtual && swiper.params.virtual.enabled) {
48193        swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);
48194      } else {
48195        swiper.clickedIndex = $(slide).index();
48196      }
48197    } else {
48198      swiper.clickedSlide = undefined;
48199      swiper.clickedIndex = undefined;
48200      return;
48201    }
48202    if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {
48203      swiper.slideToClickedSlide();
48204    }
48205  }
48206
48207  var update = {
48208    updateSize: updateSize,
48209    updateSlides: updateSlides,
48210    updateAutoHeight: updateAutoHeight,
48211    updateSlidesOffset: updateSlidesOffset,
48212    updateSlidesProgress: updateSlidesProgress,
48213    updateProgress: updateProgress,
48214    updateSlidesClasses: updateSlidesClasses,
48215    updateActiveIndex: updateActiveIndex,
48216    updateClickedSlide: updateClickedSlide,
48217  };
48218
48219  function getTranslate (axis) {
48220    if ( axis === void 0 ) axis = this.isHorizontal() ? 'x' : 'y';
48221
48222    var swiper = this;
48223
48224    var params = swiper.params;
48225    var rtl = swiper.rtlTranslate;
48226    var translate = swiper.translate;
48227    var $wrapperEl = swiper.$wrapperEl;
48228
48229    if (params.virtualTranslate) {
48230      return rtl ? -translate : translate;
48231    }
48232
48233    var currentTranslate = Utils.getTranslate($wrapperEl[0], axis);
48234    if (rtl) { currentTranslate = -currentTranslate; }
48235
48236    return currentTranslate || 0;
48237  }
48238
48239  function setTranslate (translate, byController) {
48240    var swiper = this;
48241    var rtl = swiper.rtlTranslate;
48242    var params = swiper.params;
48243    var $wrapperEl = swiper.$wrapperEl;
48244    var progress = swiper.progress;
48245    var x = 0;
48246    var y = 0;
48247    var z = 0;
48248
48249    if (swiper.isHorizontal()) {
48250      x = rtl ? -translate : translate;
48251    } else {
48252      y = translate;
48253    }
48254
48255    if (params.roundLengths) {
48256      x = Math.floor(x);
48257      y = Math.floor(y);
48258    }
48259
48260    if (!params.virtualTranslate) {
48261      if (Support.transforms3d) { $wrapperEl.transform(("translate3d(" + x + "px, " + y + "px, " + z + "px)")); }
48262      else { $wrapperEl.transform(("translate(" + x + "px, " + y + "px)")); }
48263    }
48264    swiper.previousTranslate = swiper.translate;
48265    swiper.translate = swiper.isHorizontal() ? x : y;
48266
48267    // Check if we need to update progress
48268    var newProgress;
48269    var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
48270    if (translatesDiff === 0) {
48271      newProgress = 0;
48272    } else {
48273      newProgress = (translate - swiper.minTranslate()) / (translatesDiff);
48274    }
48275    if (newProgress !== progress) {
48276      swiper.updateProgress(translate);
48277    }
48278
48279    swiper.emit('setTranslate', swiper.translate, byController);
48280  }
48281
48282  function minTranslate () {
48283    return (-this.snapGrid[0]);
48284  }
48285
48286  function maxTranslate () {
48287    return (-this.snapGrid[this.snapGrid.length - 1]);
48288  }
48289
48290  var translate = {
48291    getTranslate: getTranslate,
48292    setTranslate: setTranslate,
48293    minTranslate: minTranslate,
48294    maxTranslate: maxTranslate,
48295  };
48296
48297  function setTransition (duration, byController) {
48298    var swiper = this;
48299
48300    swiper.$wrapperEl.transition(duration);
48301
48302    swiper.emit('setTransition', duration, byController);
48303  }
48304
48305  function transitionStart (runCallbacks, direction) {
48306    if ( runCallbacks === void 0 ) runCallbacks = true;
48307
48308    var swiper = this;
48309    var activeIndex = swiper.activeIndex;
48310    var params = swiper.params;
48311    var previousIndex = swiper.previousIndex;
48312    if (params.autoHeight) {
48313      swiper.updateAutoHeight();
48314    }
48315
48316    var dir = direction;
48317    if (!dir) {
48318      if (activeIndex > previousIndex) { dir = 'next'; }
48319      else if (activeIndex < previousIndex) { dir = 'prev'; }
48320      else { dir = 'reset'; }
48321    }
48322
48323    swiper.emit('transitionStart');
48324
48325    if (runCallbacks && activeIndex !== previousIndex) {
48326      if (dir === 'reset') {
48327        swiper.emit('slideResetTransitionStart');
48328        return;
48329      }
48330      swiper.emit('slideChangeTransitionStart');
48331      if (dir === 'next') {
48332        swiper.emit('slideNextTransitionStart');
48333      } else {
48334        swiper.emit('slidePrevTransitionStart');
48335      }
48336    }
48337  }
48338
48339  function transitionEnd$1 (runCallbacks, direction) {
48340    if ( runCallbacks === void 0 ) runCallbacks = true;
48341
48342    var swiper = this;
48343    var activeIndex = swiper.activeIndex;
48344    var previousIndex = swiper.previousIndex;
48345    swiper.animating = false;
48346    swiper.setTransition(0);
48347
48348    var dir = direction;
48349    if (!dir) {
48350      if (activeIndex > previousIndex) { dir = 'next'; }
48351      else if (activeIndex < previousIndex) { dir = 'prev'; }
48352      else { dir = 'reset'; }
48353    }
48354
48355    swiper.emit('transitionEnd');
48356
48357    if (runCallbacks && activeIndex !== previousIndex) {
48358      if (dir === 'reset') {
48359        swiper.emit('slideResetTransitionEnd');
48360        return;
48361      }
48362      swiper.emit('slideChangeTransitionEnd');
48363      if (dir === 'next') {
48364        swiper.emit('slideNextTransitionEnd');
48365      } else {
48366        swiper.emit('slidePrevTransitionEnd');
48367      }
48368    }
48369  }
48370
48371  var transition$1 = {
48372    setTransition: setTransition,
48373    transitionStart: transitionStart,
48374    transitionEnd: transitionEnd$1,
48375  };
48376
48377  function slideTo (index, speed, runCallbacks, internal) {
48378    if ( index === void 0 ) index = 0;
48379    if ( speed === void 0 ) speed = this.params.speed;
48380    if ( runCallbacks === void 0 ) runCallbacks = true;
48381
48382    var swiper = this;
48383    var slideIndex = index;
48384    if (slideIndex < 0) { slideIndex = 0; }
48385
48386    var params = swiper.params;
48387    var snapGrid = swiper.snapGrid;
48388    var slidesGrid = swiper.slidesGrid;
48389    var previousIndex = swiper.previousIndex;
48390    var activeIndex = swiper.activeIndex;
48391    var rtl = swiper.rtlTranslate;
48392    if (swiper.animating && params.preventInteractionOnTransition) {
48393      return false;
48394    }
48395
48396    var snapIndex = Math.floor(slideIndex / params.slidesPerGroup);
48397    if (snapIndex >= snapGrid.length) { snapIndex = snapGrid.length - 1; }
48398
48399    if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {
48400      swiper.emit('beforeSlideChangeStart');
48401    }
48402
48403    var translate = -snapGrid[snapIndex];
48404
48405    // Update progress
48406    swiper.updateProgress(translate);
48407
48408    // Normalize slideIndex
48409    if (params.normalizeSlideIndex) {
48410      for (var i = 0; i < slidesGrid.length; i += 1) {
48411        if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) {
48412          slideIndex = i;
48413        }
48414      }
48415    }
48416    // Directions locks
48417    if (swiper.initialized && slideIndex !== activeIndex) {
48418      if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {
48419        return false;
48420      }
48421      if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {
48422        if ((activeIndex || 0) !== slideIndex) { return false; }
48423      }
48424    }
48425
48426    var direction;
48427    if (slideIndex > activeIndex) { direction = 'next'; }
48428    else if (slideIndex < activeIndex) { direction = 'prev'; }
48429    else { direction = 'reset'; }
48430
48431
48432    // Update Index
48433    if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) {
48434      swiper.updateActiveIndex(slideIndex);
48435      // Update Height
48436      if (params.autoHeight) {
48437        swiper.updateAutoHeight();
48438      }
48439      swiper.updateSlidesClasses();
48440      if (params.effect !== 'slide') {
48441        swiper.setTranslate(translate);
48442      }
48443      if (direction !== 'reset') {
48444        swiper.transitionStart(runCallbacks, direction);
48445        swiper.transitionEnd(runCallbacks, direction);
48446      }
48447      return false;
48448    }
48449
48450    if (speed === 0 || !Support.transition) {
48451      swiper.setTransition(0);
48452      swiper.setTranslate(translate);
48453      swiper.updateActiveIndex(slideIndex);
48454      swiper.updateSlidesClasses();
48455      swiper.emit('beforeTransitionStart', speed, internal);
48456      swiper.transitionStart(runCallbacks, direction);
48457      swiper.transitionEnd(runCallbacks, direction);
48458    } else {
48459      swiper.setTransition(speed);
48460      swiper.setTranslate(translate);
48461      swiper.updateActiveIndex(slideIndex);
48462      swiper.updateSlidesClasses();
48463      swiper.emit('beforeTransitionStart', speed, internal);
48464      swiper.transitionStart(runCallbacks, direction);
48465      if (!swiper.animating) {
48466        swiper.animating = true;
48467        if (!swiper.onSlideToWrapperTransitionEnd) {
48468          swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {
48469            if (!swiper || swiper.destroyed) { return; }
48470            if (e.target !== this) { return; }
48471            swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
48472            swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);
48473            swiper.onSlideToWrapperTransitionEnd = null;
48474            delete swiper.onSlideToWrapperTransitionEnd;
48475            swiper.transitionEnd(runCallbacks, direction);
48476          };
48477        }
48478        swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
48479        swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);
48480      }
48481    }
48482
48483    return true;
48484  }
48485
48486  function slideToLoop (index, speed, runCallbacks, internal) {
48487    if ( index === void 0 ) index = 0;
48488    if ( speed === void 0 ) speed = this.params.speed;
48489    if ( runCallbacks === void 0 ) runCallbacks = true;
48490
48491    var swiper = this;
48492    var newIndex = index;
48493    if (swiper.params.loop) {
48494      newIndex += swiper.loopedSlides;
48495    }
48496
48497    return swiper.slideTo(newIndex, speed, runCallbacks, internal);
48498  }
48499
48500  /* eslint no-unused-vars: "off" */
48501  function slideNext (speed, runCallbacks, internal) {
48502    if ( speed === void 0 ) speed = this.params.speed;
48503    if ( runCallbacks === void 0 ) runCallbacks = true;
48504
48505    var swiper = this;
48506    var params = swiper.params;
48507    var animating = swiper.animating;
48508    if (params.loop) {
48509      if (animating) { return false; }
48510      swiper.loopFix();
48511      // eslint-disable-next-line
48512      swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
48513      return swiper.slideTo(swiper.activeIndex + params.slidesPerGroup, speed, runCallbacks, internal);
48514    }
48515    return swiper.slideTo(swiper.activeIndex + params.slidesPerGroup, speed, runCallbacks, internal);
48516  }
48517
48518  /* eslint no-unused-vars: "off" */
48519  function slidePrev (speed, runCallbacks, internal) {
48520    if ( speed === void 0 ) speed = this.params.speed;
48521    if ( runCallbacks === void 0 ) runCallbacks = true;
48522
48523    var swiper = this;
48524    var params = swiper.params;
48525    var animating = swiper.animating;
48526    var snapGrid = swiper.snapGrid;
48527    var slidesGrid = swiper.slidesGrid;
48528    var rtlTranslate = swiper.rtlTranslate;
48529
48530    if (params.loop) {
48531      if (animating) { return false; }
48532      swiper.loopFix();
48533      // eslint-disable-next-line
48534      swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
48535    }
48536    var translate = rtlTranslate ? swiper.translate : -swiper.translate;
48537    function normalize(val) {
48538      if (val < 0) { return -Math.floor(Math.abs(val)); }
48539      return Math.floor(val);
48540    }
48541    var normalizedTranslate = normalize(translate);
48542    var normalizedSnapGrid = snapGrid.map(function (val) { return normalize(val); });
48543    var normalizedSlidesGrid = slidesGrid.map(function (val) { return normalize(val); });
48544
48545    var currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];
48546    var prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];
48547    var prevIndex;
48548    if (typeof prevSnap !== 'undefined') {
48549      prevIndex = slidesGrid.indexOf(prevSnap);
48550      if (prevIndex < 0) { prevIndex = swiper.activeIndex - 1; }
48551    }
48552    return swiper.slideTo(prevIndex, speed, runCallbacks, internal);
48553  }
48554
48555  /* eslint no-unused-vars: "off" */
48556  function slideReset (speed, runCallbacks, internal) {
48557    if ( speed === void 0 ) speed = this.params.speed;
48558    if ( runCallbacks === void 0 ) runCallbacks = true;
48559
48560    var swiper = this;
48561    return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);
48562  }
48563
48564  /* eslint no-unused-vars: "off" */
48565  function slideToClosest (speed, runCallbacks, internal) {
48566    if ( speed === void 0 ) speed = this.params.speed;
48567    if ( runCallbacks === void 0 ) runCallbacks = true;
48568
48569    var swiper = this;
48570    var index = swiper.activeIndex;
48571    var snapIndex = Math.floor(index / swiper.params.slidesPerGroup);
48572
48573    if (snapIndex < swiper.snapGrid.length - 1) {
48574      var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
48575
48576      var currentSnap = swiper.snapGrid[snapIndex];
48577      var nextSnap = swiper.snapGrid[snapIndex + 1];
48578
48579      if ((translate - currentSnap) > (nextSnap - currentSnap) / 2) {
48580        index = swiper.params.slidesPerGroup;
48581      }
48582    }
48583
48584    return swiper.slideTo(index, speed, runCallbacks, internal);
48585  }
48586
48587  function slideToClickedSlide () {
48588    var swiper = this;
48589    var params = swiper.params;
48590    var $wrapperEl = swiper.$wrapperEl;
48591
48592    var slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;
48593    var slideToIndex = swiper.clickedIndex;
48594    var realIndex;
48595    if (params.loop) {
48596      if (swiper.animating) { return; }
48597      realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);
48598      if (params.centeredSlides) {
48599        if (
48600          (slideToIndex < swiper.loopedSlides - (slidesPerView / 2))
48601          || (slideToIndex > (swiper.slides.length - swiper.loopedSlides) + (slidesPerView / 2))
48602        ) {
48603          swiper.loopFix();
48604          slideToIndex = $wrapperEl
48605            .children(("." + (params.slideClass) + "[data-swiper-slide-index=\"" + realIndex + "\"]:not(." + (params.slideDuplicateClass) + ")"))
48606            .eq(0)
48607            .index();
48608
48609          Utils.nextTick(function () {
48610            swiper.slideTo(slideToIndex);
48611          });
48612        } else {
48613          swiper.slideTo(slideToIndex);
48614        }
48615      } else if (slideToIndex > swiper.slides.length - slidesPerView) {
48616        swiper.loopFix();
48617        slideToIndex = $wrapperEl
48618          .children(("." + (params.slideClass) + "[data-swiper-slide-index=\"" + realIndex + "\"]:not(." + (params.slideDuplicateClass) + ")"))
48619          .eq(0)
48620          .index();
48621
48622        Utils.nextTick(function () {
48623          swiper.slideTo(slideToIndex);
48624        });
48625      } else {
48626        swiper.slideTo(slideToIndex);
48627      }
48628    } else {
48629      swiper.slideTo(slideToIndex);
48630    }
48631  }
48632
48633  var slide = {
48634    slideTo: slideTo,
48635    slideToLoop: slideToLoop,
48636    slideNext: slideNext,
48637    slidePrev: slidePrev,
48638    slideReset: slideReset,
48639    slideToClosest: slideToClosest,
48640    slideToClickedSlide: slideToClickedSlide,
48641  };
48642
48643  function loopCreate () {
48644    var swiper = this;
48645    var params = swiper.params;
48646    var $wrapperEl = swiper.$wrapperEl;
48647    // Remove duplicated slides
48648    $wrapperEl.children(("." + (params.slideClass) + "." + (params.slideDuplicateClass))).remove();
48649
48650    var slides = $wrapperEl.children(("." + (params.slideClass)));
48651
48652    if (params.loopFillGroupWithBlank) {
48653      var blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);
48654      if (blankSlidesNum !== params.slidesPerGroup) {
48655        for (var i = 0; i < blankSlidesNum; i += 1) {
48656          var blankNode = $(doc.createElement('div')).addClass(((params.slideClass) + " " + (params.slideBlankClass)));
48657          $wrapperEl.append(blankNode);
48658        }
48659        slides = $wrapperEl.children(("." + (params.slideClass)));
48660      }
48661    }
48662
48663    if (params.slidesPerView === 'auto' && !params.loopedSlides) { params.loopedSlides = slides.length; }
48664
48665    swiper.loopedSlides = parseInt(params.loopedSlides || params.slidesPerView, 10);
48666    swiper.loopedSlides += params.loopAdditionalSlides;
48667    if (swiper.loopedSlides > slides.length) {
48668      swiper.loopedSlides = slides.length;
48669    }
48670
48671    var prependSlides = [];
48672    var appendSlides = [];
48673    slides.each(function (index, el) {
48674      var slide = $(el);
48675      if (index < swiper.loopedSlides) { appendSlides.push(el); }
48676      if (index < slides.length && index >= slides.length - swiper.loopedSlides) { prependSlides.push(el); }
48677      slide.attr('data-swiper-slide-index', index);
48678    });
48679    for (var i$1 = 0; i$1 < appendSlides.length; i$1 += 1) {
48680      $wrapperEl.append($(appendSlides[i$1].cloneNode(true)).addClass(params.slideDuplicateClass));
48681    }
48682    for (var i$2 = prependSlides.length - 1; i$2 >= 0; i$2 -= 1) {
48683      $wrapperEl.prepend($(prependSlides[i$2].cloneNode(true)).addClass(params.slideDuplicateClass));
48684    }
48685  }
48686
48687  function loopFix () {
48688    var swiper = this;
48689    var params = swiper.params;
48690    var activeIndex = swiper.activeIndex;
48691    var slides = swiper.slides;
48692    var loopedSlides = swiper.loopedSlides;
48693    var allowSlidePrev = swiper.allowSlidePrev;
48694    var allowSlideNext = swiper.allowSlideNext;
48695    var snapGrid = swiper.snapGrid;
48696    var rtl = swiper.rtlTranslate;
48697    var newIndex;
48698    swiper.allowSlidePrev = true;
48699    swiper.allowSlideNext = true;
48700
48701    var snapTranslate = -snapGrid[activeIndex];
48702    var diff = snapTranslate - swiper.getTranslate();
48703
48704
48705    // Fix For Negative Oversliding
48706    if (activeIndex < loopedSlides) {
48707      newIndex = (slides.length - (loopedSlides * 3)) + activeIndex;
48708      newIndex += loopedSlides;
48709      var slideChanged = swiper.slideTo(newIndex, 0, false, true);
48710      if (slideChanged && diff !== 0) {
48711        swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);
48712      }
48713    } else if ((params.slidesPerView === 'auto' && activeIndex >= loopedSlides * 2) || (activeIndex >= slides.length - loopedSlides)) {
48714      // Fix For Positive Oversliding
48715      newIndex = -slides.length + activeIndex + loopedSlides;
48716      newIndex += loopedSlides;
48717      var slideChanged$1 = swiper.slideTo(newIndex, 0, false, true);
48718      if (slideChanged$1 && diff !== 0) {
48719        swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);
48720      }
48721    }
48722    swiper.allowSlidePrev = allowSlidePrev;
48723    swiper.allowSlideNext = allowSlideNext;
48724  }
48725
48726  function loopDestroy () {
48727    var swiper = this;
48728    var $wrapperEl = swiper.$wrapperEl;
48729    var params = swiper.params;
48730    var slides = swiper.slides;
48731    $wrapperEl.children(("." + (params.slideClass) + "." + (params.slideDuplicateClass) + ",." + (params.slideClass) + "." + (params.slideBlankClass))).remove();
48732    slides.removeAttr('data-swiper-slide-index');
48733  }
48734
48735  var loop = {
48736    loopCreate: loopCreate,
48737    loopFix: loopFix,
48738    loopDestroy: loopDestroy,
48739  };
48740
48741  function setGrabCursor (moving) {
48742    var swiper = this;
48743    if (Support.touch || !swiper.params.simulateTouch || (swiper.params.watchOverflow && swiper.isLocked)) { return; }
48744    var el = swiper.el;
48745    el.style.cursor = 'move';
48746    el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';
48747    el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';
48748    el.style.cursor = moving ? 'grabbing' : 'grab';
48749  }
48750
48751  function unsetGrabCursor () {
48752    var swiper = this;
48753    if (Support.touch || (swiper.params.watchOverflow && swiper.isLocked)) { return; }
48754    swiper.el.style.cursor = '';
48755  }
48756
48757  var grabCursor = {
48758    setGrabCursor: setGrabCursor,
48759    unsetGrabCursor: unsetGrabCursor,
48760  };
48761
48762  function appendSlide (slides) {
48763    var swiper = this;
48764    var $wrapperEl = swiper.$wrapperEl;
48765    var params = swiper.params;
48766    if (params.loop) {
48767      swiper.loopDestroy();
48768    }
48769    if (typeof slides === 'object' && 'length' in slides) {
48770      for (var i = 0; i < slides.length; i += 1) {
48771        if (slides[i]) { $wrapperEl.append(slides[i]); }
48772      }
48773    } else {
48774      $wrapperEl.append(slides);
48775    }
48776    if (params.loop) {
48777      swiper.loopCreate();
48778    }
48779    if (!(params.observer && Support.observer)) {
48780      swiper.update();
48781    }
48782  }
48783
48784  function prependSlide (slides) {
48785    var swiper = this;
48786    var params = swiper.params;
48787    var $wrapperEl = swiper.$wrapperEl;
48788    var activeIndex = swiper.activeIndex;
48789
48790    if (params.loop) {
48791      swiper.loopDestroy();
48792    }
48793    var newActiveIndex = activeIndex + 1;
48794    if (typeof slides === 'object' && 'length' in slides) {
48795      for (var i = 0; i < slides.length; i += 1) {
48796        if (slides[i]) { $wrapperEl.prepend(slides[i]); }
48797      }
48798      newActiveIndex = activeIndex + slides.length;
48799    } else {
48800      $wrapperEl.prepend(slides);
48801    }
48802    if (params.loop) {
48803      swiper.loopCreate();
48804    }
48805    if (!(params.observer && Support.observer)) {
48806      swiper.update();
48807    }
48808    swiper.slideTo(newActiveIndex, 0, false);
48809  }
48810
48811  function addSlide (index, slides) {
48812    var swiper = this;
48813    var $wrapperEl = swiper.$wrapperEl;
48814    var params = swiper.params;
48815    var activeIndex = swiper.activeIndex;
48816    var activeIndexBuffer = activeIndex;
48817    if (params.loop) {
48818      activeIndexBuffer -= swiper.loopedSlides;
48819      swiper.loopDestroy();
48820      swiper.slides = $wrapperEl.children(("." + (params.slideClass)));
48821    }
48822    var baseLength = swiper.slides.length;
48823    if (index <= 0) {
48824      swiper.prependSlide(slides);
48825      return;
48826    }
48827    if (index >= baseLength) {
48828      swiper.appendSlide(slides);
48829      return;
48830    }
48831    var newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;
48832
48833    var slidesBuffer = [];
48834    for (var i = baseLength - 1; i >= index; i -= 1) {
48835      var currentSlide = swiper.slides.eq(i);
48836      currentSlide.remove();
48837      slidesBuffer.unshift(currentSlide);
48838    }
48839
48840    if (typeof slides === 'object' && 'length' in slides) {
48841      for (var i$1 = 0; i$1 < slides.length; i$1 += 1) {
48842        if (slides[i$1]) { $wrapperEl.append(slides[i$1]); }
48843      }
48844      newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;
48845    } else {
48846      $wrapperEl.append(slides);
48847    }
48848
48849    for (var i$2 = 0; i$2 < slidesBuffer.length; i$2 += 1) {
48850      $wrapperEl.append(slidesBuffer[i$2]);
48851    }
48852
48853    if (params.loop) {
48854      swiper.loopCreate();
48855    }
48856    if (!(params.observer && Support.observer)) {
48857      swiper.update();
48858    }
48859    if (params.loop) {
48860      swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
48861    } else {
48862      swiper.slideTo(newActiveIndex, 0, false);
48863    }
48864  }
48865
48866  function removeSlide (slidesIndexes) {
48867    var swiper = this;
48868    var params = swiper.params;
48869    var $wrapperEl = swiper.$wrapperEl;
48870    var activeIndex = swiper.activeIndex;
48871
48872    var activeIndexBuffer = activeIndex;
48873    if (params.loop) {
48874      activeIndexBuffer -= swiper.loopedSlides;
48875      swiper.loopDestroy();
48876      swiper.slides = $wrapperEl.children(("." + (params.slideClass)));
48877    }
48878    var newActiveIndex = activeIndexBuffer;
48879    var indexToRemove;
48880
48881    if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {
48882      for (var i = 0; i < slidesIndexes.length; i += 1) {
48883        indexToRemove = slidesIndexes[i];
48884        if (swiper.slides[indexToRemove]) { swiper.slides.eq(indexToRemove).remove(); }
48885        if (indexToRemove < newActiveIndex) { newActiveIndex -= 1; }
48886      }
48887      newActiveIndex = Math.max(newActiveIndex, 0);
48888    } else {
48889      indexToRemove = slidesIndexes;
48890      if (swiper.slides[indexToRemove]) { swiper.slides.eq(indexToRemove).remove(); }
48891      if (indexToRemove < newActiveIndex) { newActiveIndex -= 1; }
48892      newActiveIndex = Math.max(newActiveIndex, 0);
48893    }
48894
48895    if (params.loop) {
48896      swiper.loopCreate();
48897    }
48898
48899    if (!(params.observer && Support.observer)) {
48900      swiper.update();
48901    }
48902    if (params.loop) {
48903      swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
48904    } else {
48905      swiper.slideTo(newActiveIndex, 0, false);
48906    }
48907  }
48908
48909  function removeAllSlides () {
48910    var swiper = this;
48911
48912    var slidesIndexes = [];
48913    for (var i = 0; i < swiper.slides.length; i += 1) {
48914      slidesIndexes.push(i);
48915    }
48916    swiper.removeSlide(slidesIndexes);
48917  }
48918
48919  var manipulation = {
48920    appendSlide: appendSlide,
48921    prependSlide: prependSlide,
48922    addSlide: addSlide,
48923    removeSlide: removeSlide,
48924    removeAllSlides: removeAllSlides,
48925  };
48926
48927  var Device = (function Device() {
48928    var ua = win.navigator.userAgent;
48929
48930    var device = {
48931      ios: false,
48932      android: false,
48933      androidChrome: false,
48934      desktop: false,
48935      windows: false,
48936      iphone: false,
48937      ipod: false,
48938      ipad: false,
48939      cordova: win.cordova || win.phonegap,
48940      phonegap: win.cordova || win.phonegap,
48941    };
48942
48943    var windows = ua.match(/(Windows Phone);?[\s\/]+([\d.]+)?/); // eslint-disable-line
48944    var android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line
48945    var ipad = ua.match(/(iPad).*OS\s([\d_]+)/);
48946    var ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/);
48947    var iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/);
48948
48949
48950    // Windows
48951    if (windows) {
48952      device.os = 'windows';
48953      device.osVersion = windows[2];
48954      device.windows = true;
48955    }
48956    // Android
48957    if (android && !windows) {
48958      device.os = 'android';
48959      device.osVersion = android[2];
48960      device.android = true;
48961      device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;
48962    }
48963    if (ipad || iphone || ipod) {
48964      device.os = 'ios';
48965      device.ios = true;
48966    }
48967    // iOS
48968    if (iphone && !ipod) {
48969      device.osVersion = iphone[2].replace(/_/g, '.');
48970      device.iphone = true;
48971    }
48972    if (ipad) {
48973      device.osVersion = ipad[2].replace(/_/g, '.');
48974      device.ipad = true;
48975    }
48976    if (ipod) {
48977      device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;
48978      device.iphone = true;
48979    }
48980    // iOS 8+ changed UA
48981    if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {
48982      if (device.osVersion.split('.')[0] === '10') {
48983        device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];
48984      }
48985    }
48986
48987    // Desktop
48988    device.desktop = !(device.os || device.android || device.webView);
48989
48990    // Webview
48991    device.webView = (iphone || ipad || ipod) && ua.match(/.*AppleWebKit(?!.*Safari)/i);
48992
48993    // Minimal UI
48994    if (device.os && device.os === 'ios') {
48995      var osVersionArr = device.osVersion.split('.');
48996      var metaViewport = doc.querySelector('meta[name="viewport"]');
48997      device.minimalUi = !device.webView
48998        && (ipod || iphone)
48999        && (osVersionArr[0] * 1 === 7 ? osVersionArr[1] * 1 >= 1 : osVersionArr[0] * 1 > 7)
49000        && metaViewport && metaViewport.getAttribute('content').indexOf('minimal-ui') >= 0;
49001    }
49002
49003    // Pixel Ratio
49004    device.pixelRatio = win.devicePixelRatio || 1;
49005
49006    // Export object
49007    return device;
49008  }());
49009
49010  function onTouchStart (event) {
49011    var swiper = this;
49012    var data = swiper.touchEventsData;
49013    var params = swiper.params;
49014    var touches = swiper.touches;
49015    if (swiper.animating && params.preventInteractionOnTransition) {
49016      return;
49017    }
49018    var e = event;
49019    if (e.originalEvent) { e = e.originalEvent; }
49020    data.isTouchEvent = e.type === 'touchstart';
49021    if (!data.isTouchEvent && 'which' in e && e.which === 3) { return; }
49022    if (!data.isTouchEvent && 'button' in e && e.button > 0) { return; }
49023    if (data.isTouched && data.isMoved) { return; }
49024    if (params.noSwiping && $(e.target).closest(params.noSwipingSelector ? params.noSwipingSelector : ("." + (params.noSwipingClass)))[0]) {
49025      swiper.allowClick = true;
49026      return;
49027    }
49028    if (params.swipeHandler) {
49029      if (!$(e).closest(params.swipeHandler)[0]) { return; }
49030    }
49031
49032    touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
49033    touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
49034    var startX = touches.currentX;
49035    var startY = touches.currentY;
49036
49037    // Do NOT start if iOS edge swipe is detected. Otherwise iOS app (UIWebView) cannot swipe-to-go-back anymore
49038
49039    var edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;
49040    var edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;
49041    if (
49042      edgeSwipeDetection
49043      && ((startX <= edgeSwipeThreshold)
49044      || (startX >= win.screen.width - edgeSwipeThreshold))
49045    ) {
49046      return;
49047    }
49048
49049    Utils.extend(data, {
49050      isTouched: true,
49051      isMoved: false,
49052      allowTouchCallbacks: true,
49053      isScrolling: undefined,
49054      startMoving: undefined,
49055    });
49056
49057    touches.startX = startX;
49058    touches.startY = startY;
49059    data.touchStartTime = Utils.now();
49060    swiper.allowClick = true;
49061    swiper.updateSize();
49062    swiper.swipeDirection = undefined;
49063    if (params.threshold > 0) { data.allowThresholdMove = false; }
49064    if (e.type !== 'touchstart') {
49065      var preventDefault = true;
49066      if ($(e.target).is(data.formElements)) { preventDefault = false; }
49067      if (
49068        doc.activeElement
49069        && $(doc.activeElement).is(data.formElements)
49070        && doc.activeElement !== e.target
49071      ) {
49072        doc.activeElement.blur();
49073      }
49074
49075      var shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;
49076      if (params.touchStartForcePreventDefault || shouldPreventDefault) {
49077        e.preventDefault();
49078      }
49079    }
49080    swiper.emit('touchStart', e);
49081  }
49082
49083  function onTouchMove (event) {
49084    var swiper = this;
49085    var data = swiper.touchEventsData;
49086    var params = swiper.params;
49087    var touches = swiper.touches;
49088    var rtl = swiper.rtlTranslate;
49089    var e = event;
49090    if (e.originalEvent) { e = e.originalEvent; }
49091    if (!data.isTouched) {
49092      if (data.startMoving && data.isScrolling) {
49093        swiper.emit('touchMoveOpposite', e);
49094      }
49095      return;
49096    }
49097    if (data.isTouchEvent && e.type === 'mousemove') { return; }
49098    var pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
49099    var pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
49100    if (e.preventedByNestedSwiper) {
49101      touches.startX = pageX;
49102      touches.startY = pageY;
49103      return;
49104    }
49105    if (!swiper.allowTouchMove) {
49106      // isMoved = true;
49107      swiper.allowClick = false;
49108      if (data.isTouched) {
49109        Utils.extend(touches, {
49110          startX: pageX,
49111          startY: pageY,
49112          currentX: pageX,
49113          currentY: pageY,
49114        });
49115        data.touchStartTime = Utils.now();
49116      }
49117      return;
49118    }
49119    if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {
49120      if (swiper.isVertical()) {
49121        // Vertical
49122        if (
49123          (pageY < touches.startY && swiper.translate <= swiper.maxTranslate())
49124          || (pageY > touches.startY && swiper.translate >= swiper.minTranslate())
49125        ) {
49126          data.isTouched = false;
49127          data.isMoved = false;
49128          return;
49129        }
49130      } else if (
49131        (pageX < touches.startX && swiper.translate <= swiper.maxTranslate())
49132        || (pageX > touches.startX && swiper.translate >= swiper.minTranslate())
49133      ) {
49134        return;
49135      }
49136    }
49137    if (data.isTouchEvent && doc.activeElement) {
49138      if (e.target === doc.activeElement && $(e.target).is(data.formElements)) {
49139        data.isMoved = true;
49140        swiper.allowClick = false;
49141        return;
49142      }
49143    }
49144    if (data.allowTouchCallbacks) {
49145      swiper.emit('touchMove', e);
49146    }
49147    if (e.targetTouches && e.targetTouches.length > 1) { return; }
49148
49149    touches.currentX = pageX;
49150    touches.currentY = pageY;
49151
49152    var diffX = touches.currentX - touches.startX;
49153    var diffY = touches.currentY - touches.startY;
49154    if (swiper.params.threshold && Math.sqrt((Math.pow( diffX, 2 )) + (Math.pow( diffY, 2 ))) < swiper.params.threshold) { return; }
49155
49156    if (typeof data.isScrolling === 'undefined') {
49157      var touchAngle;
49158      if ((swiper.isHorizontal() && touches.currentY === touches.startY) || (swiper.isVertical() && touches.currentX === touches.startX)) {
49159        data.isScrolling = false;
49160      } else {
49161        // eslint-disable-next-line
49162        if ((diffX * diffX) + (diffY * diffY) >= 25) {
49163          touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI;
49164          data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : (90 - touchAngle > params.touchAngle);
49165        }
49166      }
49167    }
49168    if (data.isScrolling) {
49169      swiper.emit('touchMoveOpposite', e);
49170    }
49171    if (typeof data.startMoving === 'undefined') {
49172      if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {
49173        data.startMoving = true;
49174      }
49175    }
49176    if (data.isScrolling) {
49177      data.isTouched = false;
49178      return;
49179    }
49180    if (!data.startMoving) {
49181      return;
49182    }
49183    swiper.allowClick = false;
49184    e.preventDefault();
49185    if (params.touchMoveStopPropagation && !params.nested) {
49186      e.stopPropagation();
49187    }
49188
49189    if (!data.isMoved) {
49190      if (params.loop) {
49191        swiper.loopFix();
49192      }
49193      data.startTranslate = swiper.getTranslate();
49194      swiper.setTransition(0);
49195      if (swiper.animating) {
49196        swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');
49197      }
49198      data.allowMomentumBounce = false;
49199      // Grab Cursor
49200      if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
49201        swiper.setGrabCursor(true);
49202      }
49203      swiper.emit('sliderFirstMove', e);
49204    }
49205    swiper.emit('sliderMove', e);
49206    data.isMoved = true;
49207
49208    var diff = swiper.isHorizontal() ? diffX : diffY;
49209    touches.diff = diff;
49210
49211    diff *= params.touchRatio;
49212    if (rtl) { diff = -diff; }
49213
49214    swiper.swipeDirection = diff > 0 ? 'prev' : 'next';
49215    data.currentTranslate = diff + data.startTranslate;
49216
49217    var disableParentSwiper = true;
49218    var resistanceRatio = params.resistanceRatio;
49219    if (params.touchReleaseOnEdges) {
49220      resistanceRatio = 0;
49221    }
49222    if ((diff > 0 && data.currentTranslate > swiper.minTranslate())) {
49223      disableParentSwiper = false;
49224      if (params.resistance) { data.currentTranslate = (swiper.minTranslate() - 1) + (Math.pow( (-swiper.minTranslate() + data.startTranslate + diff), resistanceRatio )); }
49225    } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {
49226      disableParentSwiper = false;
49227      if (params.resistance) { data.currentTranslate = (swiper.maxTranslate() + 1) - (Math.pow( (swiper.maxTranslate() - data.startTranslate - diff), resistanceRatio )); }
49228    }
49229
49230    if (disableParentSwiper) {
49231      e.preventedByNestedSwiper = true;
49232    }
49233
49234    // Directions locks
49235    if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {
49236      data.currentTranslate = data.startTranslate;
49237    }
49238    if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {
49239      data.currentTranslate = data.startTranslate;
49240    }
49241
49242
49243    // Threshold
49244    if (params.threshold > 0) {
49245      if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {
49246        if (!data.allowThresholdMove) {
49247          data.allowThresholdMove = true;
49248          touches.startX = touches.currentX;
49249          touches.startY = touches.currentY;
49250          data.currentTranslate = data.startTranslate;
49251          touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;
49252          return;
49253        }
49254      } else {
49255        data.currentTranslate = data.startTranslate;
49256        return;
49257      }
49258    }
49259
49260    if (!params.followFinger) { return; }
49261
49262    // Update active index in free mode
49263    if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {
49264      swiper.updateActiveIndex();
49265      swiper.updateSlidesClasses();
49266    }
49267    if (params.freeMode) {
49268      // Velocity
49269      if (data.velocities.length === 0) {
49270        data.velocities.push({
49271          position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],
49272          time: data.touchStartTime,
49273        });
49274      }
49275      data.velocities.push({
49276        position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],
49277        time: Utils.now(),
49278      });
49279    }
49280    // Update progress
49281    swiper.updateProgress(data.currentTranslate);
49282    // Update translate
49283    swiper.setTranslate(data.currentTranslate);
49284  }
49285
49286  function onTouchEnd (event) {
49287    var swiper = this;
49288    var data = swiper.touchEventsData;
49289
49290    var params = swiper.params;
49291    var touches = swiper.touches;
49292    var rtl = swiper.rtlTranslate;
49293    var $wrapperEl = swiper.$wrapperEl;
49294    var slidesGrid = swiper.slidesGrid;
49295    var snapGrid = swiper.snapGrid;
49296    var e = event;
49297    if (e.originalEvent) { e = e.originalEvent; }
49298    if (data.allowTouchCallbacks) {
49299      swiper.emit('touchEnd', e);
49300    }
49301    data.allowTouchCallbacks = false;
49302    if (!data.isTouched) {
49303      if (data.isMoved && params.grabCursor) {
49304        swiper.setGrabCursor(false);
49305      }
49306      data.isMoved = false;
49307      data.startMoving = false;
49308      return;
49309    }
49310    // Return Grab Cursor
49311    if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
49312      swiper.setGrabCursor(false);
49313    }
49314
49315    // Time diff
49316    var touchEndTime = Utils.now();
49317    var timeDiff = touchEndTime - data.touchStartTime;
49318
49319    // Tap, doubleTap, Click
49320    if (swiper.allowClick) {
49321      swiper.updateClickedSlide(e);
49322      swiper.emit('tap', e);
49323      if (timeDiff < 300 && (touchEndTime - data.lastClickTime) > 300) {
49324        if (data.clickTimeout) { clearTimeout(data.clickTimeout); }
49325        data.clickTimeout = Utils.nextTick(function () {
49326          if (!swiper || swiper.destroyed) { return; }
49327          swiper.emit('click', e);
49328        }, 300);
49329      }
49330      if (timeDiff < 300 && (touchEndTime - data.lastClickTime) < 300) {
49331        if (data.clickTimeout) { clearTimeout(data.clickTimeout); }
49332        swiper.emit('doubleTap', e);
49333      }
49334    }
49335
49336    data.lastClickTime = Utils.now();
49337    Utils.nextTick(function () {
49338      if (!swiper.destroyed) { swiper.allowClick = true; }
49339    });
49340
49341    if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {
49342      data.isTouched = false;
49343      data.isMoved = false;
49344      data.startMoving = false;
49345      return;
49346    }
49347    data.isTouched = false;
49348    data.isMoved = false;
49349    data.startMoving = false;
49350
49351    var currentPos;
49352    if (params.followFinger) {
49353      currentPos = rtl ? swiper.translate : -swiper.translate;
49354    } else {
49355      currentPos = -data.currentTranslate;
49356    }
49357
49358    if (params.freeMode) {
49359      if (currentPos < -swiper.minTranslate()) {
49360        swiper.slideTo(swiper.activeIndex);
49361        return;
49362      }
49363      if (currentPos > -swiper.maxTranslate()) {
49364        if (swiper.slides.length < snapGrid.length) {
49365          swiper.slideTo(snapGrid.length - 1);
49366        } else {
49367          swiper.slideTo(swiper.slides.length - 1);
49368        }
49369        return;
49370      }
49371
49372      if (params.freeModeMomentum) {
49373        if (data.velocities.length > 1) {
49374          var lastMoveEvent = data.velocities.pop();
49375          var velocityEvent = data.velocities.pop();
49376
49377          var distance = lastMoveEvent.position - velocityEvent.position;
49378          var time = lastMoveEvent.time - velocityEvent.time;
49379          swiper.velocity = distance / time;
49380          swiper.velocity /= 2;
49381          if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {
49382            swiper.velocity = 0;
49383          }
49384          // this implies that the user stopped moving a finger then released.
49385          // There would be no events with distance zero, so the last event is stale.
49386          if (time > 150 || (Utils.now() - lastMoveEvent.time) > 300) {
49387            swiper.velocity = 0;
49388          }
49389        } else {
49390          swiper.velocity = 0;
49391        }
49392        swiper.velocity *= params.freeModeMomentumVelocityRatio;
49393
49394        data.velocities.length = 0;
49395        var momentumDuration = 1000 * params.freeModeMomentumRatio;
49396        var momentumDistance = swiper.velocity * momentumDuration;
49397
49398        var newPosition = swiper.translate + momentumDistance;
49399        if (rtl) { newPosition = -newPosition; }
49400
49401        var doBounce = false;
49402        var afterBouncePosition;
49403        var bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;
49404        var needsLoopFix;
49405        if (newPosition < swiper.maxTranslate()) {
49406          if (params.freeModeMomentumBounce) {
49407            if (newPosition + swiper.maxTranslate() < -bounceAmount) {
49408              newPosition = swiper.maxTranslate() - bounceAmount;
49409            }
49410            afterBouncePosition = swiper.maxTranslate();
49411            doBounce = true;
49412            data.allowMomentumBounce = true;
49413          } else {
49414            newPosition = swiper.maxTranslate();
49415          }
49416          if (params.loop && params.centeredSlides) { needsLoopFix = true; }
49417        } else if (newPosition > swiper.minTranslate()) {
49418          if (params.freeModeMomentumBounce) {
49419            if (newPosition - swiper.minTranslate() > bounceAmount) {
49420              newPosition = swiper.minTranslate() + bounceAmount;
49421            }
49422            afterBouncePosition = swiper.minTranslate();
49423            doBounce = true;
49424            data.allowMomentumBounce = true;
49425          } else {
49426            newPosition = swiper.minTranslate();
49427          }
49428          if (params.loop && params.centeredSlides) { needsLoopFix = true; }
49429        } else if (params.freeModeSticky) {
49430          var nextSlide;
49431          for (var j = 0; j < snapGrid.length; j += 1) {
49432            if (snapGrid[j] > -newPosition) {
49433              nextSlide = j;
49434              break;
49435            }
49436          }
49437
49438          if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {
49439            newPosition = snapGrid[nextSlide];
49440          } else {
49441            newPosition = snapGrid[nextSlide - 1];
49442          }
49443          newPosition = -newPosition;
49444        }
49445        if (needsLoopFix) {
49446          swiper.once('transitionEnd', function () {
49447            swiper.loopFix();
49448          });
49449        }
49450        // Fix duration
49451        if (swiper.velocity !== 0) {
49452          if (rtl) {
49453            momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);
49454          } else {
49455            momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);
49456          }
49457        } else if (params.freeModeSticky) {
49458          swiper.slideToClosest();
49459          return;
49460        }
49461
49462        if (params.freeModeMomentumBounce && doBounce) {
49463          swiper.updateProgress(afterBouncePosition);
49464          swiper.setTransition(momentumDuration);
49465          swiper.setTranslate(newPosition);
49466          swiper.transitionStart(true, swiper.swipeDirection);
49467          swiper.animating = true;
49468          $wrapperEl.transitionEnd(function () {
49469            if (!swiper || swiper.destroyed || !data.allowMomentumBounce) { return; }
49470            swiper.emit('momentumBounce');
49471
49472            swiper.setTransition(params.speed);
49473            swiper.setTranslate(afterBouncePosition);
49474            $wrapperEl.transitionEnd(function () {
49475              if (!swiper || swiper.destroyed) { return; }
49476              swiper.transitionEnd();
49477            });
49478          });
49479        } else if (swiper.velocity) {
49480          swiper.updateProgress(newPosition);
49481          swiper.setTransition(momentumDuration);
49482          swiper.setTranslate(newPosition);
49483          swiper.transitionStart(true, swiper.swipeDirection);
49484          if (!swiper.animating) {
49485            swiper.animating = true;
49486            $wrapperEl.transitionEnd(function () {
49487              if (!swiper || swiper.destroyed) { return; }
49488              swiper.transitionEnd();
49489            });
49490          }
49491        } else {
49492          swiper.updateProgress(newPosition);
49493        }
49494
49495        swiper.updateActiveIndex();
49496        swiper.updateSlidesClasses();
49497      } else if (params.freeModeSticky) {
49498        swiper.slideToClosest();
49499        return;
49500      }
49501
49502      if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {
49503        swiper.updateProgress();
49504        swiper.updateActiveIndex();
49505        swiper.updateSlidesClasses();
49506      }
49507      return;
49508    }
49509
49510    // Find current slide
49511    var stopIndex = 0;
49512    var groupSize = swiper.slidesSizesGrid[0];
49513    for (var i = 0; i < slidesGrid.length; i += params.slidesPerGroup) {
49514      if (typeof slidesGrid[i + params.slidesPerGroup] !== 'undefined') {
49515        if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + params.slidesPerGroup]) {
49516          stopIndex = i;
49517          groupSize = slidesGrid[i + params.slidesPerGroup] - slidesGrid[i];
49518        }
49519      } else if (currentPos >= slidesGrid[i]) {
49520        stopIndex = i;
49521        groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];
49522      }
49523    }
49524
49525    // Find current slide size
49526    var ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;
49527
49528    if (timeDiff > params.longSwipesMs) {
49529      // Long touches
49530      if (!params.longSwipes) {
49531        swiper.slideTo(swiper.activeIndex);
49532        return;
49533      }
49534      if (swiper.swipeDirection === 'next') {
49535        if (ratio >= params.longSwipesRatio) { swiper.slideTo(stopIndex + params.slidesPerGroup); }
49536        else { swiper.slideTo(stopIndex); }
49537      }
49538      if (swiper.swipeDirection === 'prev') {
49539        if (ratio > (1 - params.longSwipesRatio)) { swiper.slideTo(stopIndex + params.slidesPerGroup); }
49540        else { swiper.slideTo(stopIndex); }
49541      }
49542    } else {
49543      // Short swipes
49544      if (!params.shortSwipes) {
49545        swiper.slideTo(swiper.activeIndex);
49546        return;
49547      }
49548      if (swiper.swipeDirection === 'next') {
49549        swiper.slideTo(stopIndex + params.slidesPerGroup);
49550      }
49551      if (swiper.swipeDirection === 'prev') {
49552        swiper.slideTo(stopIndex);
49553      }
49554    }
49555  }
49556
49557  function onResize () {
49558    var swiper = this;
49559
49560    var params = swiper.params;
49561    var el = swiper.el;
49562
49563    if (el && el.offsetWidth === 0) { return; }
49564
49565    // Breakpoints
49566    if (params.breakpoints) {
49567      swiper.setBreakpoint();
49568    }
49569
49570    // Save locks
49571    var allowSlideNext = swiper.allowSlideNext;
49572    var allowSlidePrev = swiper.allowSlidePrev;
49573    var snapGrid = swiper.snapGrid;
49574
49575    // Disable locks on resize
49576    swiper.allowSlideNext = true;
49577    swiper.allowSlidePrev = true;
49578
49579    swiper.updateSize();
49580    swiper.updateSlides();
49581
49582    if (params.freeMode) {
49583      var newTranslate = Math.min(Math.max(swiper.translate, swiper.maxTranslate()), swiper.minTranslate());
49584      swiper.setTranslate(newTranslate);
49585      swiper.updateActiveIndex();
49586      swiper.updateSlidesClasses();
49587
49588      if (params.autoHeight) {
49589        swiper.updateAutoHeight();
49590      }
49591    } else {
49592      swiper.updateSlidesClasses();
49593      if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {
49594        swiper.slideTo(swiper.slides.length - 1, 0, false, true);
49595      } else {
49596        swiper.slideTo(swiper.activeIndex, 0, false, true);
49597      }
49598    }
49599    if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {
49600      swiper.autoplay.run();
49601    }
49602    // Return locks after resize
49603    swiper.allowSlidePrev = allowSlidePrev;
49604    swiper.allowSlideNext = allowSlideNext;
49605
49606    if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {
49607      swiper.checkOverflow();
49608    }
49609  }
49610
49611  function onClick (e) {
49612    var swiper = this;
49613    if (!swiper.allowClick) {
49614      if (swiper.params.preventClicks) { e.preventDefault(); }
49615      if (swiper.params.preventClicksPropagation && swiper.animating) {
49616        e.stopPropagation();
49617        e.stopImmediatePropagation();
49618      }
49619    }
49620  }
49621
49622  function attachEvents() {
49623    var swiper = this;
49624    var params = swiper.params;
49625    var touchEvents = swiper.touchEvents;
49626    var el = swiper.el;
49627    var wrapperEl = swiper.wrapperEl;
49628
49629    {
49630      swiper.onTouchStart = onTouchStart.bind(swiper);
49631      swiper.onTouchMove = onTouchMove.bind(swiper);
49632      swiper.onTouchEnd = onTouchEnd.bind(swiper);
49633    }
49634
49635    swiper.onClick = onClick.bind(swiper);
49636
49637    var target = params.touchEventsTarget === 'container' ? el : wrapperEl;
49638    var capture = !!params.nested;
49639
49640    // Touch Events
49641    {
49642      if (!Support.touch && (Support.pointerEvents || Support.prefixedPointerEvents)) {
49643        target.addEventListener(touchEvents.start, swiper.onTouchStart, false);
49644        doc.addEventListener(touchEvents.move, swiper.onTouchMove, capture);
49645        doc.addEventListener(touchEvents.end, swiper.onTouchEnd, false);
49646      } else {
49647        if (Support.touch) {
49648          var passiveListener = touchEvents.start === 'touchstart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;
49649          target.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);
49650          target.addEventListener(touchEvents.move, swiper.onTouchMove, Support.passiveListener ? { passive: false, capture: capture } : capture);
49651          target.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);
49652        }
49653        if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {
49654          target.addEventListener('mousedown', swiper.onTouchStart, false);
49655          doc.addEventListener('mousemove', swiper.onTouchMove, capture);
49656          doc.addEventListener('mouseup', swiper.onTouchEnd, false);
49657        }
49658      }
49659      // Prevent Links Clicks
49660      if (params.preventClicks || params.preventClicksPropagation) {
49661        target.addEventListener('click', swiper.onClick, true);
49662      }
49663    }
49664
49665    // Resize handler
49666    swiper.on((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize, true);
49667  }
49668
49669  function detachEvents() {
49670    var swiper = this;
49671
49672    var params = swiper.params;
49673    var touchEvents = swiper.touchEvents;
49674    var el = swiper.el;
49675    var wrapperEl = swiper.wrapperEl;
49676
49677    var target = params.touchEventsTarget === 'container' ? el : wrapperEl;
49678    var capture = !!params.nested;
49679
49680    // Touch Events
49681    {
49682      if (!Support.touch && (Support.pointerEvents || Support.prefixedPointerEvents)) {
49683        target.removeEventListener(touchEvents.start, swiper.onTouchStart, false);
49684        doc.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);
49685        doc.removeEventListener(touchEvents.end, swiper.onTouchEnd, false);
49686      } else {
49687        if (Support.touch) {
49688          var passiveListener = touchEvents.start === 'onTouchStart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;
49689          target.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);
49690          target.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);
49691          target.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);
49692        }
49693        if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {
49694          target.removeEventListener('mousedown', swiper.onTouchStart, false);
49695          doc.removeEventListener('mousemove', swiper.onTouchMove, capture);
49696          doc.removeEventListener('mouseup', swiper.onTouchEnd, false);
49697        }
49698      }
49699      // Prevent Links Clicks
49700      if (params.preventClicks || params.preventClicksPropagation) {
49701        target.removeEventListener('click', swiper.onClick, true);
49702      }
49703    }
49704
49705    // Resize handler
49706    swiper.off((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize);
49707  }
49708
49709  var events = {
49710    attachEvents: attachEvents,
49711    detachEvents: detachEvents,
49712  };
49713
49714  function setBreakpoint () {
49715    var swiper = this;
49716    var activeIndex = swiper.activeIndex;
49717    var initialized = swiper.initialized;
49718    var loopedSlides = swiper.loopedSlides; if ( loopedSlides === void 0 ) loopedSlides = 0;
49719    var params = swiper.params;
49720    var breakpoints = params.breakpoints;
49721    if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) { return; }
49722
49723    // Set breakpoint for window width and update parameters
49724    var breakpoint = swiper.getBreakpoint(breakpoints);
49725
49726    if (breakpoint && swiper.currentBreakpoint !== breakpoint) {
49727      var breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;
49728      if (breakpointOnlyParams) {
49729        ['slidesPerView', 'spaceBetween', 'slidesPerGroup'].forEach(function (param) {
49730          var paramValue = breakpointOnlyParams[param];
49731          if (typeof paramValue === 'undefined') { return; }
49732          if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) {
49733            breakpointOnlyParams[param] = 'auto';
49734          } else if (param === 'slidesPerView') {
49735            breakpointOnlyParams[param] = parseFloat(paramValue);
49736          } else {
49737            breakpointOnlyParams[param] = parseInt(paramValue, 10);
49738          }
49739        });
49740      }
49741
49742      var breakpointParams = breakpointOnlyParams || swiper.originalParams;
49743      var directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;
49744      var needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);
49745
49746      if (directionChanged && initialized) {
49747        swiper.changeDirection();
49748      }
49749
49750      Utils.extend(swiper.params, breakpointParams);
49751
49752      Utils.extend(swiper, {
49753        allowTouchMove: swiper.params.allowTouchMove,
49754        allowSlideNext: swiper.params.allowSlideNext,
49755        allowSlidePrev: swiper.params.allowSlidePrev,
49756      });
49757
49758      swiper.currentBreakpoint = breakpoint;
49759
49760      if (needsReLoop && initialized) {
49761        swiper.loopDestroy();
49762        swiper.loopCreate();
49763        swiper.updateSlides();
49764        swiper.slideTo((activeIndex - loopedSlides) + swiper.loopedSlides, 0, false);
49765      }
49766
49767      swiper.emit('breakpoint', breakpointParams);
49768    }
49769  }
49770
49771  function getBreakpoint (breakpoints) {
49772    var swiper = this;
49773    // Get breakpoint for window width
49774    if (!breakpoints) { return undefined; }
49775    var breakpoint = false;
49776    var points = [];
49777    Object.keys(breakpoints).forEach(function (point) {
49778      points.push(point);
49779    });
49780    points.sort(function (a, b) { return parseInt(a, 10) - parseInt(b, 10); });
49781    for (var i = 0; i < points.length; i += 1) {
49782      var point = points[i];
49783      if (swiper.params.breakpointsInverse) {
49784        if (point <= win.innerWidth) {
49785          breakpoint = point;
49786        }
49787      } else if (point >= win.innerWidth && !breakpoint) {
49788        breakpoint = point;
49789      }
49790    }
49791    return breakpoint || 'max';
49792  }
49793
49794  var breakpoints = { setBreakpoint: setBreakpoint, getBreakpoint: getBreakpoint };
49795
49796  function addClasses () {
49797    var swiper = this;
49798    var classNames = swiper.classNames;
49799    var params = swiper.params;
49800    var rtl = swiper.rtl;
49801    var $el = swiper.$el;
49802    var suffixes = [];
49803
49804    suffixes.push('initialized');
49805    suffixes.push(params.direction);
49806
49807    if (params.freeMode) {
49808      suffixes.push('free-mode');
49809    }
49810    if (!Support.flexbox) {
49811      suffixes.push('no-flexbox');
49812    }
49813    if (params.autoHeight) {
49814      suffixes.push('autoheight');
49815    }
49816    if (rtl) {
49817      suffixes.push('rtl');
49818    }
49819    if (params.slidesPerColumn > 1) {
49820      suffixes.push('multirow');
49821    }
49822    if (Device.android) {
49823      suffixes.push('android');
49824    }
49825    if (Device.ios) {
49826      suffixes.push('ios');
49827    }
49828    // WP8 Touch Events Fix
49829    if ((Browser.isIE || Browser.isEdge) && (Support.pointerEvents || Support.prefixedPointerEvents)) {
49830      suffixes.push(("wp8-" + (params.direction)));
49831    }
49832
49833    suffixes.forEach(function (suffix) {
49834      classNames.push(params.containerModifierClass + suffix);
49835    });
49836
49837    $el.addClass(classNames.join(' '));
49838  }
49839
49840  function removeClasses () {
49841    var swiper = this;
49842    var $el = swiper.$el;
49843    var classNames = swiper.classNames;
49844
49845    $el.removeClass(classNames.join(' '));
49846  }
49847
49848  var classes = { addClasses: addClasses, removeClasses: removeClasses };
49849
49850  function loadImage (imageEl, src, srcset, sizes, checkForComplete, callback) {
49851    var image;
49852    function onReady() {
49853      if (callback) { callback(); }
49854    }
49855    if (!imageEl.complete || !checkForComplete) {
49856      if (src) {
49857        image = new win.Image();
49858        image.onload = onReady;
49859        image.onerror = onReady;
49860        if (sizes) {
49861          image.sizes = sizes;
49862        }
49863        if (srcset) {
49864          image.srcset = srcset;
49865        }
49866        if (src) {
49867          image.src = src;
49868        }
49869      } else {
49870        onReady();
49871      }
49872    } else {
49873      // image already loaded...
49874      onReady();
49875    }
49876  }
49877
49878  function preloadImages () {
49879    var swiper = this;
49880    swiper.imagesToLoad = swiper.$el.find('img');
49881    function onReady() {
49882      if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) { return; }
49883      if (swiper.imagesLoaded !== undefined) { swiper.imagesLoaded += 1; }
49884      if (swiper.imagesLoaded === swiper.imagesToLoad.length) {
49885        if (swiper.params.updateOnImagesReady) { swiper.update(); }
49886        swiper.emit('imagesReady');
49887      }
49888    }
49889    for (var i = 0; i < swiper.imagesToLoad.length; i += 1) {
49890      var imageEl = swiper.imagesToLoad[i];
49891      swiper.loadImage(
49892        imageEl,
49893        imageEl.currentSrc || imageEl.getAttribute('src'),
49894        imageEl.srcset || imageEl.getAttribute('srcset'),
49895        imageEl.sizes || imageEl.getAttribute('sizes'),
49896        true,
49897        onReady
49898      );
49899    }
49900  }
49901
49902  var images = {
49903    loadImage: loadImage,
49904    preloadImages: preloadImages,
49905  };
49906
49907  function checkOverflow() {
49908    var swiper = this;
49909    var wasLocked = swiper.isLocked;
49910
49911    swiper.isLocked = swiper.snapGrid.length === 1;
49912    swiper.allowSlideNext = !swiper.isLocked;
49913    swiper.allowSlidePrev = !swiper.isLocked;
49914
49915    // events
49916    if (wasLocked !== swiper.isLocked) { swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); }
49917
49918    if (wasLocked && wasLocked !== swiper.isLocked) {
49919      swiper.isEnd = false;
49920      swiper.navigation.update();
49921    }
49922  }
49923
49924  var checkOverflow$1 = { checkOverflow: checkOverflow };
49925
49926  var defaults = {
49927    init: true,
49928    direction: 'horizontal',
49929    touchEventsTarget: 'container',
49930    initialSlide: 0,
49931    speed: 300,
49932    //
49933    preventInteractionOnTransition: false,
49934
49935    // To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView).
49936    edgeSwipeDetection: false,
49937    edgeSwipeThreshold: 20,
49938
49939    // Free mode
49940    freeMode: false,
49941    freeModeMomentum: true,
49942    freeModeMomentumRatio: 1,
49943    freeModeMomentumBounce: true,
49944    freeModeMomentumBounceRatio: 1,
49945    freeModeMomentumVelocityRatio: 1,
49946    freeModeSticky: false,
49947    freeModeMinimumVelocity: 0.02,
49948
49949    // Autoheight
49950    autoHeight: false,
49951
49952    // Set wrapper width
49953    setWrapperSize: false,
49954
49955    // Virtual Translate
49956    virtualTranslate: false,
49957
49958    // Effects
49959    effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'
49960
49961    // Breakpoints
49962    breakpoints: undefined,
49963    breakpointsInverse: false,
49964
49965    // Slides grid
49966    spaceBetween: 0,
49967    slidesPerView: 1,
49968    slidesPerColumn: 1,
49969    slidesPerColumnFill: 'column',
49970    slidesPerGroup: 1,
49971    centeredSlides: false,
49972    slidesOffsetBefore: 0, // in px
49973    slidesOffsetAfter: 0, // in px
49974    normalizeSlideIndex: true,
49975    centerInsufficientSlides: false,
49976
49977    // Disable swiper and hide navigation when container not overflow
49978    watchOverflow: false,
49979
49980    // Round length
49981    roundLengths: false,
49982
49983    // Touches
49984    touchRatio: 1,
49985    touchAngle: 45,
49986    simulateTouch: true,
49987    shortSwipes: true,
49988    longSwipes: true,
49989    longSwipesRatio: 0.5,
49990    longSwipesMs: 300,
49991    followFinger: true,
49992    allowTouchMove: true,
49993    threshold: 0,
49994    touchMoveStopPropagation: true,
49995    touchStartPreventDefault: true,
49996    touchStartForcePreventDefault: false,
49997    touchReleaseOnEdges: false,
49998
49999    // Unique Navigation Elements
50000    uniqueNavElements: true,
50001
50002    // Resistance
50003    resistance: true,
50004    resistanceRatio: 0.85,
50005
50006    // Progress
50007    watchSlidesProgress: false,
50008    watchSlidesVisibility: false,
50009
50010    // Cursor
50011    grabCursor: false,
50012
50013    // Clicks
50014    preventClicks: true,
50015    preventClicksPropagation: true,
50016    slideToClickedSlide: false,
50017
50018    // Images
50019    preloadImages: true,
50020    updateOnImagesReady: true,
50021
50022    // loop
50023    loop: false,
50024    loopAdditionalSlides: 0,
50025    loopedSlides: null,
50026    loopFillGroupWithBlank: false,
50027
50028    // Swiping/no swiping
50029    allowSlidePrev: true,
50030    allowSlideNext: true,
50031    swipeHandler: null, // '.swipe-handler',
50032    noSwiping: true,
50033    noSwipingClass: 'swiper-no-swiping',
50034    noSwipingSelector: null,
50035
50036    // Passive Listeners
50037    passiveListeners: true,
50038
50039    // NS
50040    containerModifierClass: 'swiper-container-', // NEW
50041    slideClass: 'swiper-slide',
50042    slideBlankClass: 'swiper-slide-invisible-blank',
50043    slideActiveClass: 'swiper-slide-active',
50044    slideDuplicateActiveClass: 'swiper-slide-duplicate-active',
50045    slideVisibleClass: 'swiper-slide-visible',
50046    slideDuplicateClass: 'swiper-slide-duplicate',
50047    slideNextClass: 'swiper-slide-next',
50048    slideDuplicateNextClass: 'swiper-slide-duplicate-next',
50049    slidePrevClass: 'swiper-slide-prev',
50050    slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',
50051    wrapperClass: 'swiper-wrapper',
50052
50053    // Callbacks
50054    runCallbacksOnInit: true,
50055  };
50056
50057  /* eslint no-param-reassign: "off" */
50058
50059  var prototypes = {
50060    update: update,
50061    translate: translate,
50062    transition: transition$1,
50063    slide: slide,
50064    loop: loop,
50065    grabCursor: grabCursor,
50066    manipulation: manipulation,
50067    events: events,
50068    breakpoints: breakpoints,
50069    checkOverflow: checkOverflow$1,
50070    classes: classes,
50071    images: images,
50072  };
50073
50074  var extendedDefaults = {};
50075
50076  var Swiper = /*@__PURE__*/(function (SwiperClass) {
50077    function Swiper() {
50078      var assign;
50079
50080      var args = [], len = arguments.length;
50081      while ( len-- ) args[ len ] = arguments[ len ];
50082      var el;
50083      var params;
50084      if (args.length === 1 && args[0].constructor && args[0].constructor === Object) {
50085        params = args[0];
50086      } else {
50087        (assign = args, el = assign[0], params = assign[1]);
50088      }
50089      if (!params) { params = {}; }
50090
50091      params = Utils.extend({}, params);
50092      if (el && !params.el) { params.el = el; }
50093
50094      SwiperClass.call(this, params);
50095
50096      Object.keys(prototypes).forEach(function (prototypeGroup) {
50097        Object.keys(prototypes[prototypeGroup]).forEach(function (protoMethod) {
50098          if (!Swiper.prototype[protoMethod]) {
50099            Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];
50100          }
50101        });
50102      });
50103
50104      // Swiper Instance
50105      var swiper = this;
50106      if (typeof swiper.modules === 'undefined') {
50107        swiper.modules = {};
50108      }
50109      Object.keys(swiper.modules).forEach(function (moduleName) {
50110        var module = swiper.modules[moduleName];
50111        if (module.params) {
50112          var moduleParamName = Object.keys(module.params)[0];
50113          var moduleParams = module.params[moduleParamName];
50114          if (typeof moduleParams !== 'object' || moduleParams === null) { return; }
50115          if (!(moduleParamName in params && 'enabled' in moduleParams)) { return; }
50116          if (params[moduleParamName] === true) {
50117            params[moduleParamName] = { enabled: true };
50118          }
50119          if (
50120            typeof params[moduleParamName] === 'object'
50121            && !('enabled' in params[moduleParamName])
50122          ) {
50123            params[moduleParamName].enabled = true;
50124          }
50125          if (!params[moduleParamName]) { params[moduleParamName] = { enabled: false }; }
50126        }
50127      });
50128
50129      // Extend defaults with modules params
50130      var swiperParams = Utils.extend({}, defaults);
50131      swiper.useModulesParams(swiperParams);
50132
50133      // Extend defaults with passed params
50134      swiper.params = Utils.extend({}, swiperParams, extendedDefaults, params);
50135      swiper.originalParams = Utils.extend({}, swiper.params);
50136      swiper.passedParams = Utils.extend({}, params);
50137
50138      // Save Dom lib
50139      swiper.$ = $;
50140
50141      // Find el
50142      var $el = $(swiper.params.el);
50143      el = $el[0];
50144
50145      if (!el) {
50146        return undefined;
50147      }
50148
50149      if ($el.length > 1) {
50150        var swipers = [];
50151        $el.each(function (index, containerEl) {
50152          var newParams = Utils.extend({}, params, { el: containerEl });
50153          swipers.push(new Swiper(newParams));
50154        });
50155        return swipers;
50156      }
50157
50158      el.swiper = swiper;
50159      $el.data('swiper', swiper);
50160
50161      // Find Wrapper
50162      var $wrapperEl = $el.children(("." + (swiper.params.wrapperClass)));
50163
50164      // Extend Swiper
50165      Utils.extend(swiper, {
50166        $el: $el,
50167        el: el,
50168        $wrapperEl: $wrapperEl,
50169        wrapperEl: $wrapperEl[0],
50170
50171        // Classes
50172        classNames: [],
50173
50174        // Slides
50175        slides: $(),
50176        slidesGrid: [],
50177        snapGrid: [],
50178        slidesSizesGrid: [],
50179
50180        // isDirection
50181        isHorizontal: function isHorizontal() {
50182          return swiper.params.direction === 'horizontal';
50183        },
50184        isVertical: function isVertical() {
50185          return swiper.params.direction === 'vertical';
50186        },
50187        // RTL
50188        rtl: (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),
50189        rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),
50190        wrongRTL: $wrapperEl.css('display') === '-webkit-box',
50191
50192        // Indexes
50193        activeIndex: 0,
50194        realIndex: 0,
50195
50196        //
50197        isBeginning: true,
50198        isEnd: false,
50199
50200        // Props
50201        translate: 0,
50202        previousTranslate: 0,
50203        progress: 0,
50204        velocity: 0,
50205        animating: false,
50206
50207        // Locks
50208        allowSlideNext: swiper.params.allowSlideNext,
50209        allowSlidePrev: swiper.params.allowSlidePrev,
50210
50211        // Touch Events
50212        touchEvents: (function touchEvents() {
50213          var touch = ['touchstart', 'touchmove', 'touchend'];
50214          var desktop = ['mousedown', 'mousemove', 'mouseup'];
50215          if (Support.pointerEvents) {
50216            desktop = ['pointerdown', 'pointermove', 'pointerup'];
50217          } else if (Support.prefixedPointerEvents) {
50218            desktop = ['MSPointerDown', 'MSPointerMove', 'MSPointerUp'];
50219          }
50220          swiper.touchEventsTouch = {
50221            start: touch[0],
50222            move: touch[1],
50223            end: touch[2],
50224          };
50225          swiper.touchEventsDesktop = {
50226            start: desktop[0],
50227            move: desktop[1],
50228            end: desktop[2],
50229          };
50230          return Support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;
50231        }()),
50232        touchEventsData: {
50233          isTouched: undefined,
50234          isMoved: undefined,
50235          allowTouchCallbacks: undefined,
50236          touchStartTime: undefined,
50237          isScrolling: undefined,
50238          currentTranslate: undefined,
50239          startTranslate: undefined,
50240          allowThresholdMove: undefined,
50241          // Form elements to match
50242          formElements: 'input, select, option, textarea, button, video',
50243          // Last click time
50244          lastClickTime: Utils.now(),
50245          clickTimeout: undefined,
50246          // Velocities
50247          velocities: [],
50248          allowMomentumBounce: undefined,
50249          isTouchEvent: undefined,
50250          startMoving: undefined,
50251        },
50252
50253        // Clicks
50254        allowClick: true,
50255
50256        // Touches
50257        allowTouchMove: swiper.params.allowTouchMove,
50258
50259        touches: {
50260          startX: 0,
50261          startY: 0,
50262          currentX: 0,
50263          currentY: 0,
50264          diff: 0,
50265        },
50266
50267        // Images
50268        imagesToLoad: [],
50269        imagesLoaded: 0,
50270
50271      });
50272
50273      // Install Modules
50274      swiper.useModules();
50275
50276      // Init
50277      if (swiper.params.init) {
50278        swiper.init();
50279      }
50280
50281      // Return app instance
50282      return swiper;
50283    }
50284
50285    if ( SwiperClass ) Swiper.__proto__ = SwiperClass;
50286    Swiper.prototype = Object.create( SwiperClass && SwiperClass.prototype );
50287    Swiper.prototype.constructor = Swiper;
50288
50289    var staticAccessors = { extendedDefaults: { configurable: true },defaults: { configurable: true },Class: { configurable: true },$: { configurable: true } };
50290
50291    Swiper.prototype.slidesPerViewDynamic = function slidesPerViewDynamic () {
50292      var swiper = this;
50293      var params = swiper.params;
50294      var slides = swiper.slides;
50295      var slidesGrid = swiper.slidesGrid;
50296      var swiperSize = swiper.size;
50297      var activeIndex = swiper.activeIndex;
50298      var spv = 1;
50299      if (params.centeredSlides) {
50300        var slideSize = slides[activeIndex].swiperSlideSize;
50301        var breakLoop;
50302        for (var i = activeIndex + 1; i < slides.length; i += 1) {
50303          if (slides[i] && !breakLoop) {
50304            slideSize += slides[i].swiperSlideSize;
50305            spv += 1;
50306            if (slideSize > swiperSize) { breakLoop = true; }
50307          }
50308        }
50309        for (var i$1 = activeIndex - 1; i$1 >= 0; i$1 -= 1) {
50310          if (slides[i$1] && !breakLoop) {
50311            slideSize += slides[i$1].swiperSlideSize;
50312            spv += 1;
50313            if (slideSize > swiperSize) { breakLoop = true; }
50314          }
50315        }
50316      } else {
50317        for (var i$2 = activeIndex + 1; i$2 < slides.length; i$2 += 1) {
50318          if (slidesGrid[i$2] - slidesGrid[activeIndex] < swiperSize) {
50319            spv += 1;
50320          }
50321        }
50322      }
50323      return spv;
50324    };
50325
50326    Swiper.prototype.update = function update () {
50327      var swiper = this;
50328      if (!swiper || swiper.destroyed) { return; }
50329      var snapGrid = swiper.snapGrid;
50330      var params = swiper.params;
50331      // Breakpoints
50332      if (params.breakpoints) {
50333        swiper.setBreakpoint();
50334      }
50335      swiper.updateSize();
50336      swiper.updateSlides();
50337      swiper.updateProgress();
50338      swiper.updateSlidesClasses();
50339
50340      function setTranslate() {
50341        var translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;
50342        var newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());
50343        swiper.setTranslate(newTranslate);
50344        swiper.updateActiveIndex();
50345        swiper.updateSlidesClasses();
50346      }
50347      var translated;
50348      if (swiper.params.freeMode) {
50349        setTranslate();
50350        if (swiper.params.autoHeight) {
50351          swiper.updateAutoHeight();
50352        }
50353      } else {
50354        if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {
50355          translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);
50356        } else {
50357          translated = swiper.slideTo(swiper.activeIndex, 0, false, true);
50358        }
50359        if (!translated) {
50360          setTranslate();
50361        }
50362      }
50363      if (params.watchOverflow && snapGrid !== swiper.snapGrid) {
50364        swiper.checkOverflow();
50365      }
50366      swiper.emit('update');
50367    };
50368
50369    Swiper.prototype.changeDirection = function changeDirection (newDirection, needUpdate) {
50370      if ( needUpdate === void 0 ) needUpdate = true;
50371
50372      var swiper = this;
50373      var currentDirection = swiper.params.direction;
50374      if (!newDirection) {
50375        // eslint-disable-next-line
50376        newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';
50377      }
50378      if ((newDirection === currentDirection) || (newDirection !== 'horizontal' && newDirection !== 'vertical')) {
50379        return swiper;
50380      }
50381
50382      swiper.$el
50383        .removeClass(("" + (swiper.params.containerModifierClass) + currentDirection + " wp8-" + currentDirection))
50384        .addClass(("" + (swiper.params.containerModifierClass) + newDirection));
50385
50386      if ((Browser.isIE || Browser.isEdge) && (Support.pointerEvents || Support.prefixedPointerEvents)) {
50387        swiper.$el.addClass(((swiper.params.containerModifierClass) + "wp8-" + newDirection));
50388      }
50389
50390      swiper.params.direction = newDirection;
50391
50392      swiper.slides.each(function (slideIndex, slideEl) {
50393        if (newDirection === 'vertical') {
50394          slideEl.style.width = '';
50395        } else {
50396          slideEl.style.height = '';
50397        }
50398      });
50399
50400      swiper.emit('changeDirection');
50401      if (needUpdate) { swiper.update(); }
50402
50403      return swiper;
50404    };
50405
50406    Swiper.prototype.init = function init () {
50407      var swiper = this;
50408      if (swiper.initialized) { return; }
50409
50410      swiper.emit('beforeInit');
50411
50412      // Set breakpoint
50413      if (swiper.params.breakpoints) {
50414        swiper.setBreakpoint();
50415      }
50416
50417      // Add Classes
50418      swiper.addClasses();
50419
50420      // Create loop
50421      if (swiper.params.loop) {
50422        swiper.loopCreate();
50423      }
50424
50425      // Update size
50426      swiper.updateSize();
50427
50428      // Update slides
50429      swiper.updateSlides();
50430
50431      if (swiper.params.watchOverflow) {
50432        swiper.checkOverflow();
50433      }
50434
50435      // Set Grab Cursor
50436      if (swiper.params.grabCursor) {
50437        swiper.setGrabCursor();
50438      }
50439
50440      if (swiper.params.preloadImages) {
50441        swiper.preloadImages();
50442      }
50443
50444      // Slide To Initial Slide
50445      if (swiper.params.loop) {
50446        swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit);
50447      } else {
50448        swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit);
50449      }
50450
50451      // Attach events
50452      swiper.attachEvents();
50453
50454      // Init Flag
50455      swiper.initialized = true;
50456
50457      // Emit
50458      swiper.emit('init');
50459    };
50460
50461    Swiper.prototype.destroy = function destroy (deleteInstance, cleanStyles) {
50462      if ( deleteInstance === void 0 ) deleteInstance = true;
50463      if ( cleanStyles === void 0 ) cleanStyles = true;
50464
50465      var swiper = this;
50466      var params = swiper.params;
50467      var $el = swiper.$el;
50468      var $wrapperEl = swiper.$wrapperEl;
50469      var slides = swiper.slides;
50470
50471      if (typeof swiper.params === 'undefined' || swiper.destroyed) {
50472        return null;
50473      }
50474
50475      swiper.emit('beforeDestroy');
50476
50477      // Init Flag
50478      swiper.initialized = false;
50479
50480      // Detach events
50481      swiper.detachEvents();
50482
50483      // Destroy loop
50484      if (params.loop) {
50485        swiper.loopDestroy();
50486      }
50487
50488      // Cleanup styles
50489      if (cleanStyles) {
50490        swiper.removeClasses();
50491        $el.removeAttr('style');
50492        $wrapperEl.removeAttr('style');
50493        if (slides && slides.length) {
50494          slides
50495            .removeClass([
50496              params.slideVisibleClass,
50497              params.slideActiveClass,
50498              params.slideNextClass,
50499              params.slidePrevClass ].join(' '))
50500            .removeAttr('style')
50501            .removeAttr('data-swiper-slide-index')
50502            .removeAttr('data-swiper-column')
50503            .removeAttr('data-swiper-row');
50504        }
50505      }
50506
50507      swiper.emit('destroy');
50508
50509      // Detach emitter events
50510      Object.keys(swiper.eventsListeners).forEach(function (eventName) {
50511        swiper.off(eventName);
50512      });
50513
50514      if (deleteInstance !== false) {
50515        swiper.$el[0].swiper = null;
50516        swiper.$el.data('swiper', null);
50517        Utils.deleteProps(swiper);
50518      }
50519      swiper.destroyed = true;
50520
50521      return null;
50522    };
50523
50524    Swiper.extendDefaults = function extendDefaults (newDefaults) {
50525      Utils.extend(extendedDefaults, newDefaults);
50526    };
50527
50528    staticAccessors.extendedDefaults.get = function () {
50529      return extendedDefaults;
50530    };
50531
50532    staticAccessors.defaults.get = function () {
50533      return defaults;
50534    };
50535
50536    staticAccessors.Class.get = function () {
50537      return SwiperClass;
50538    };
50539
50540    staticAccessors.$.get = function () {
50541      return $;
50542    };
50543
50544    Object.defineProperties( Swiper, staticAccessors );
50545
50546    return Swiper;
50547  }(SwiperClass));
50548
50549  var Device$1 = {
50550    name: 'device',
50551    proto: {
50552      device: Device,
50553    },
50554    static: {
50555      device: Device,
50556    },
50557  };
50558
50559  var Support$1 = {
50560    name: 'support',
50561    proto: {
50562      support: Support,
50563    },
50564    static: {
50565      support: Support,
50566    },
50567  };
50568
50569  var Browser$1 = {
50570    name: 'browser',
50571    proto: {
50572      browser: Browser,
50573    },
50574    static: {
50575      browser: Browser,
50576    },
50577  };
50578
50579  var Resize = {
50580    name: 'resize',
50581    create: function create() {
50582      var swiper = this;
50583      Utils.extend(swiper, {
50584        resize: {
50585          resizeHandler: function resizeHandler() {
50586            if (!swiper || swiper.destroyed || !swiper.initialized) { return; }
50587            swiper.emit('beforeResize');
50588            swiper.emit('resize');
50589          },
50590          orientationChangeHandler: function orientationChangeHandler() {
50591            if (!swiper || swiper.destroyed || !swiper.initialized) { return; }
50592            swiper.emit('orientationchange');
50593          },
50594        },
50595      });
50596    },
50597    on: {
50598      init: function init() {
50599        var swiper = this;
50600        // Emit resize
50601        win.addEventListener('resize', swiper.resize.resizeHandler);
50602
50603        // Emit orientationchange
50604        win.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);
50605      },
50606      destroy: function destroy() {
50607        var swiper = this;
50608        win.removeEventListener('resize', swiper.resize.resizeHandler);
50609        win.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);
50610      },
50611    },
50612  };
50613
50614  var Observer = {
50615    func: win.MutationObserver || win.WebkitMutationObserver,
50616    attach: function attach(target, options) {
50617      if ( options === void 0 ) options = {};
50618
50619      var swiper = this;
50620
50621      var ObserverFunc = Observer.func;
50622      var observer = new ObserverFunc(function (mutations) {
50623        // The observerUpdate event should only be triggered
50624        // once despite the number of mutations.  Additional
50625        // triggers are redundant and are very costly
50626        if (mutations.length === 1) {
50627          swiper.emit('observerUpdate', mutations[0]);
50628          return;
50629        }
50630        var observerUpdate = function observerUpdate() {
50631          swiper.emit('observerUpdate', mutations[0]);
50632        };
50633
50634        if (win.requestAnimationFrame) {
50635          win.requestAnimationFrame(observerUpdate);
50636        } else {
50637          win.setTimeout(observerUpdate, 0);
50638        }
50639      });
50640
50641      observer.observe(target, {
50642        attributes: typeof options.attributes === 'undefined' ? true : options.attributes,
50643        childList: typeof options.childList === 'undefined' ? true : options.childList,
50644        characterData: typeof options.characterData === 'undefined' ? true : options.characterData,
50645      });
50646
50647      swiper.observer.observers.push(observer);
50648    },
50649    init: function init() {
50650      var swiper = this;
50651      if (!Support.observer || !swiper.params.observer) { return; }
50652      if (swiper.params.observeParents) {
50653        var containerParents = swiper.$el.parents();
50654        for (var i = 0; i < containerParents.length; i += 1) {
50655          swiper.observer.attach(containerParents[i]);
50656        }
50657      }
50658      // Observe container
50659      swiper.observer.attach(swiper.$el[0], { childList: swiper.params.observeSlideChildren });
50660
50661      // Observe wrapper
50662      swiper.observer.attach(swiper.$wrapperEl[0], { attributes: false });
50663    },
50664    destroy: function destroy() {
50665      var swiper = this;
50666      swiper.observer.observers.forEach(function (observer) {
50667        observer.disconnect();
50668      });
50669      swiper.observer.observers = [];
50670    },
50671  };
50672
50673  var Observer$1 = {
50674    name: 'observer',
50675    params: {
50676      observer: false,
50677      observeParents: false,
50678      observeSlideChildren: false,
50679    },
50680    create: function create() {
50681      var swiper = this;
50682      Utils.extend(swiper, {
50683        observer: {
50684          init: Observer.init.bind(swiper),
50685          attach: Observer.attach.bind(swiper),
50686          destroy: Observer.destroy.bind(swiper),
50687          observers: [],
50688        },
50689      });
50690    },
50691    on: {
50692      init: function init() {
50693        var swiper = this;
50694        swiper.observer.init();
50695      },
50696      destroy: function destroy() {
50697        var swiper = this;
50698        swiper.observer.destroy();
50699      },
50700    },
50701  };
50702
50703  var Virtual = {
50704    update: function update(force) {
50705      var swiper = this;
50706      var ref = swiper.params;
50707      var slidesPerView = ref.slidesPerView;
50708      var slidesPerGroup = ref.slidesPerGroup;
50709      var centeredSlides = ref.centeredSlides;
50710      var ref$1 = swiper.params.virtual;
50711      var addSlidesBefore = ref$1.addSlidesBefore;
50712      var addSlidesAfter = ref$1.addSlidesAfter;
50713      var ref$2 = swiper.virtual;
50714      var previousFrom = ref$2.from;
50715      var previousTo = ref$2.to;
50716      var slides = ref$2.slides;
50717      var previousSlidesGrid = ref$2.slidesGrid;
50718      var renderSlide = ref$2.renderSlide;
50719      var previousOffset = ref$2.offset;
50720      swiper.updateActiveIndex();
50721      var activeIndex = swiper.activeIndex || 0;
50722
50723      var offsetProp;
50724      if (swiper.rtlTranslate) { offsetProp = 'right'; }
50725      else { offsetProp = swiper.isHorizontal() ? 'left' : 'top'; }
50726
50727      var slidesAfter;
50728      var slidesBefore;
50729      if (centeredSlides) {
50730        slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;
50731        slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;
50732      } else {
50733        slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesBefore;
50734        slidesBefore = slidesPerGroup + addSlidesAfter;
50735      }
50736      var from = Math.max((activeIndex || 0) - slidesBefore, 0);
50737      var to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);
50738      var offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);
50739
50740      Utils.extend(swiper.virtual, {
50741        from: from,
50742        to: to,
50743        offset: offset,
50744        slidesGrid: swiper.slidesGrid,
50745      });
50746
50747      function onRendered() {
50748        swiper.updateSlides();
50749        swiper.updateProgress();
50750        swiper.updateSlidesClasses();
50751        if (swiper.lazy && swiper.params.lazy.enabled) {
50752          swiper.lazy.load();
50753        }
50754      }
50755
50756      if (previousFrom === from && previousTo === to && !force) {
50757        if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {
50758          swiper.slides.css(offsetProp, (offset + "px"));
50759        }
50760        swiper.updateProgress();
50761        return;
50762      }
50763      if (swiper.params.virtual.renderExternal) {
50764        swiper.params.virtual.renderExternal.call(swiper, {
50765          offset: offset,
50766          from: from,
50767          to: to,
50768          slides: (function getSlides() {
50769            var slidesToRender = [];
50770            for (var i = from; i <= to; i += 1) {
50771              slidesToRender.push(slides[i]);
50772            }
50773            return slidesToRender;
50774          }()),
50775        });
50776        onRendered();
50777        return;
50778      }
50779      var prependIndexes = [];
50780      var appendIndexes = [];
50781      if (force) {
50782        swiper.$wrapperEl.find(("." + (swiper.params.slideClass))).remove();
50783      } else {
50784        for (var i = previousFrom; i <= previousTo; i += 1) {
50785          if (i < from || i > to) {
50786            swiper.$wrapperEl.find(("." + (swiper.params.slideClass) + "[data-swiper-slide-index=\"" + i + "\"]")).remove();
50787          }
50788        }
50789      }
50790      for (var i$1 = 0; i$1 < slides.length; i$1 += 1) {
50791        if (i$1 >= from && i$1 <= to) {
50792          if (typeof previousTo === 'undefined' || force) {
50793            appendIndexes.push(i$1);
50794          } else {
50795            if (i$1 > previousTo) { appendIndexes.push(i$1); }
50796            if (i$1 < previousFrom) { prependIndexes.push(i$1); }
50797          }
50798        }
50799      }
50800      appendIndexes.forEach(function (index) {
50801        swiper.$wrapperEl.append(renderSlide(slides[index], index));
50802      });
50803      prependIndexes.sort(function (a, b) { return b - a; }).forEach(function (index) {
50804        swiper.$wrapperEl.prepend(renderSlide(slides[index], index));
50805      });
50806      swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, (offset + "px"));
50807      onRendered();
50808    },
50809    renderSlide: function renderSlide(slide, index) {
50810      var swiper = this;
50811      var params = swiper.params.virtual;
50812      if (params.cache && swiper.virtual.cache[index]) {
50813        return swiper.virtual.cache[index];
50814      }
50815      var $slideEl = params.renderSlide
50816        ? $(params.renderSlide.call(swiper, slide, index))
50817        : $(("<div class=\"" + (swiper.params.slideClass) + "\" data-swiper-slide-index=\"" + index + "\">" + slide + "</div>"));
50818      if (!$slideEl.attr('data-swiper-slide-index')) { $slideEl.attr('data-swiper-slide-index', index); }
50819      if (params.cache) { swiper.virtual.cache[index] = $slideEl; }
50820      return $slideEl;
50821    },
50822    appendSlide: function appendSlide(slides) {
50823      var swiper = this;
50824      if (typeof slides === 'object' && 'length' in slides) {
50825        for (var i = 0; i < slides.length; i += 1) {
50826          if (slides[i]) { swiper.virtual.slides.push(slides[i]); }
50827        }
50828      } else {
50829        swiper.virtual.slides.push(slides);
50830      }
50831      swiper.virtual.update(true);
50832    },
50833    prependSlide: function prependSlide(slides) {
50834      var swiper = this;
50835      var activeIndex = swiper.activeIndex;
50836      var newActiveIndex = activeIndex + 1;
50837      var numberOfNewSlides = 1;
50838
50839      if (Array.isArray(slides)) {
50840        for (var i = 0; i < slides.length; i += 1) {
50841          if (slides[i]) { swiper.virtual.slides.unshift(slides[i]); }
50842        }
50843        newActiveIndex = activeIndex + slides.length;
50844        numberOfNewSlides = slides.length;
50845      } else {
50846        swiper.virtual.slides.unshift(slides);
50847      }
50848      if (swiper.params.virtual.cache) {
50849        var cache = swiper.virtual.cache;
50850        var newCache = {};
50851        Object.keys(cache).forEach(function (cachedIndex) {
50852          newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cache[cachedIndex];
50853        });
50854        swiper.virtual.cache = newCache;
50855      }
50856      swiper.virtual.update(true);
50857      swiper.slideTo(newActiveIndex, 0);
50858    },
50859    removeSlide: function removeSlide(slidesIndexes) {
50860      var swiper = this;
50861      if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) { return; }
50862      var activeIndex = swiper.activeIndex;
50863      if (Array.isArray(slidesIndexes)) {
50864        for (var i = slidesIndexes.length - 1; i >= 0; i -= 1) {
50865          swiper.virtual.slides.splice(slidesIndexes[i], 1);
50866          if (swiper.params.virtual.cache) {
50867            delete swiper.virtual.cache[slidesIndexes[i]];
50868          }
50869          if (slidesIndexes[i] < activeIndex) { activeIndex -= 1; }
50870          activeIndex = Math.max(activeIndex, 0);
50871        }
50872      } else {
50873        swiper.virtual.slides.splice(slidesIndexes, 1);
50874        if (swiper.params.virtual.cache) {
50875          delete swiper.virtual.cache[slidesIndexes];
50876        }
50877        if (slidesIndexes < activeIndex) { activeIndex -= 1; }
50878        activeIndex = Math.max(activeIndex, 0);
50879      }
50880      swiper.virtual.update(true);
50881      swiper.slideTo(activeIndex, 0);
50882    },
50883    removeAllSlides: function removeAllSlides() {
50884      var swiper = this;
50885      swiper.virtual.slides = [];
50886      if (swiper.params.virtual.cache) {
50887        swiper.virtual.cache = {};
50888      }
50889      swiper.virtual.update(true);
50890      swiper.slideTo(0, 0);
50891    },
50892  };
50893
50894  var Virtual$1 = {
50895    name: 'virtual',
50896    params: {
50897      virtual: {
50898        enabled: false,
50899        slides: [],
50900        cache: true,
50901        renderSlide: null,
50902        renderExternal: null,
50903        addSlidesBefore: 0,
50904        addSlidesAfter: 0,
50905      },
50906    },
50907    create: function create() {
50908      var swiper = this;
50909      Utils.extend(swiper, {
50910        virtual: {
50911          update: Virtual.update.bind(swiper),
50912          appendSlide: Virtual.appendSlide.bind(swiper),
50913          prependSlide: Virtual.prependSlide.bind(swiper),
50914          removeSlide: Virtual.removeSlide.bind(swiper),
50915          removeAllSlides: Virtual.removeAllSlides.bind(swiper),
50916          renderSlide: Virtual.renderSlide.bind(swiper),
50917          slides: swiper.params.virtual.slides,
50918          cache: {},
50919        },
50920      });
50921    },
50922    on: {
50923      beforeInit: function beforeInit() {
50924        var swiper = this;
50925        if (!swiper.params.virtual.enabled) { return; }
50926        swiper.classNames.push(((swiper.params.containerModifierClass) + "virtual"));
50927        var overwriteParams = {
50928          watchSlidesProgress: true,
50929        };
50930        Utils.extend(swiper.params, overwriteParams);
50931        Utils.extend(swiper.originalParams, overwriteParams);
50932
50933        if (!swiper.params.initialSlide) {
50934          swiper.virtual.update();
50935        }
50936      },
50937      setTranslate: function setTranslate() {
50938        var swiper = this;
50939        if (!swiper.params.virtual.enabled) { return; }
50940        swiper.virtual.update();
50941      },
50942    },
50943  };
50944
50945  var Keyboard = {
50946    handle: function handle(event) {
50947      var swiper = this;
50948      var rtl = swiper.rtlTranslate;
50949      var e = event;
50950      if (e.originalEvent) { e = e.originalEvent; } // jquery fix
50951      var kc = e.keyCode || e.charCode;
50952      // Directions locks
50953      if (!swiper.allowSlideNext && ((swiper.isHorizontal() && kc === 39) || (swiper.isVertical() && kc === 40) || kc === 34)) {
50954        return false;
50955      }
50956      if (!swiper.allowSlidePrev && ((swiper.isHorizontal() && kc === 37) || (swiper.isVertical() && kc === 38) || kc === 33)) {
50957        return false;
50958      }
50959      if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {
50960        return undefined;
50961      }
50962      if (doc.activeElement && doc.activeElement.nodeName && (doc.activeElement.nodeName.toLowerCase() === 'input' || doc.activeElement.nodeName.toLowerCase() === 'textarea')) {
50963        return undefined;
50964      }
50965      if (swiper.params.keyboard.onlyInViewport && (kc === 33 || kc === 34 || kc === 37 || kc === 39 || kc === 38 || kc === 40)) {
50966        var inView = false;
50967        // Check that swiper should be inside of visible area of window
50968        if (swiper.$el.parents(("." + (swiper.params.slideClass))).length > 0 && swiper.$el.parents(("." + (swiper.params.slideActiveClass))).length === 0) {
50969          return undefined;
50970        }
50971        var windowWidth = win.innerWidth;
50972        var windowHeight = win.innerHeight;
50973        var swiperOffset = swiper.$el.offset();
50974        if (rtl) { swiperOffset.left -= swiper.$el[0].scrollLeft; }
50975        var swiperCoord = [
50976          [swiperOffset.left, swiperOffset.top],
50977          [swiperOffset.left + swiper.width, swiperOffset.top],
50978          [swiperOffset.left, swiperOffset.top + swiper.height],
50979          [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height] ];
50980        for (var i = 0; i < swiperCoord.length; i += 1) {
50981          var point = swiperCoord[i];
50982          if (
50983            point[0] >= 0 && point[0] <= windowWidth
50984            && point[1] >= 0 && point[1] <= windowHeight
50985          ) {
50986            inView = true;
50987          }
50988        }
50989        if (!inView) { return undefined; }
50990      }
50991      if (swiper.isHorizontal()) {
50992        if (kc === 33 || kc === 34 || kc === 37 || kc === 39) {
50993          if (e.preventDefault) { e.preventDefault(); }
50994          else { e.returnValue = false; }
50995        }
50996        if (((kc === 34 || kc === 39) && !rtl) || ((kc === 33 || kc === 37) && rtl)) { swiper.slideNext(); }
50997        if (((kc === 33 || kc === 37) && !rtl) || ((kc === 34 || kc === 39) && rtl)) { swiper.slidePrev(); }
50998      } else {
50999        if (kc === 33 || kc === 34 || kc === 38 || kc === 40) {
51000          if (e.preventDefault) { e.preventDefault(); }
51001          else { e.returnValue = false; }
51002        }
51003        if (kc === 34 || kc === 40) { swiper.slideNext(); }
51004        if (kc === 33 || kc === 38) { swiper.slidePrev(); }
51005      }
51006      swiper.emit('keyPress', kc);
51007      return undefined;
51008    },
51009    enable: function enable() {
51010      var swiper = this;
51011      if (swiper.keyboard.enabled) { return; }
51012      $(doc).on('keydown', swiper.keyboard.handle);
51013      swiper.keyboard.enabled = true;
51014    },
51015    disable: function disable() {
51016      var swiper = this;
51017      if (!swiper.keyboard.enabled) { return; }
51018      $(doc).off('keydown', swiper.keyboard.handle);
51019      swiper.keyboard.enabled = false;
51020    },
51021  };
51022
51023  var Keyboard$1 = {
51024    name: 'keyboard',
51025    params: {
51026      keyboard: {
51027        enabled: false,
51028        onlyInViewport: true,
51029      },
51030    },
51031    create: function create() {
51032      var swiper = this;
51033      Utils.extend(swiper, {
51034        keyboard: {
51035          enabled: false,
51036          enable: Keyboard.enable.bind(swiper),
51037          disable: Keyboard.disable.bind(swiper),
51038          handle: Keyboard.handle.bind(swiper),
51039        },
51040      });
51041    },
51042    on: {
51043      init: function init() {
51044        var swiper = this;
51045        if (swiper.params.keyboard.enabled) {
51046          swiper.keyboard.enable();
51047        }
51048      },
51049      destroy: function destroy() {
51050        var swiper = this;
51051        if (swiper.keyboard.enabled) {
51052          swiper.keyboard.disable();
51053        }
51054      },
51055    },
51056  };
51057
51058  function isEventSupported() {
51059    var eventName = 'onwheel';
51060    var isSupported = eventName in doc;
51061
51062    if (!isSupported) {
51063      var element = doc.createElement('div');
51064      element.setAttribute(eventName, 'return;');
51065      isSupported = typeof element[eventName] === 'function';
51066    }
51067
51068    if (!isSupported
51069      && doc.implementation
51070      && doc.implementation.hasFeature
51071      // always returns true in newer browsers as per the standard.
51072      // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature
51073      && doc.implementation.hasFeature('', '') !== true
51074    ) {
51075      // This is the only way to test support for the `wheel` event in IE9+.
51076      isSupported = doc.implementation.hasFeature('Events.wheel', '3.0');
51077    }
51078
51079    return isSupported;
51080  }
51081  var Mousewheel = {
51082    lastScrollTime: Utils.now(),
51083    event: (function getEvent() {
51084      if (win.navigator.userAgent.indexOf('firefox') > -1) { return 'DOMMouseScroll'; }
51085      return isEventSupported() ? 'wheel' : 'mousewheel';
51086    }()),
51087    normalize: function normalize(e) {
51088      // Reasonable defaults
51089      var PIXEL_STEP = 10;
51090      var LINE_HEIGHT = 40;
51091      var PAGE_HEIGHT = 800;
51092
51093      var sX = 0;
51094      var sY = 0; // spinX, spinY
51095      var pX = 0;
51096      var pY = 0; // pixelX, pixelY
51097
51098      // Legacy
51099      if ('detail' in e) {
51100        sY = e.detail;
51101      }
51102      if ('wheelDelta' in e) {
51103        sY = -e.wheelDelta / 120;
51104      }
51105      if ('wheelDeltaY' in e) {
51106        sY = -e.wheelDeltaY / 120;
51107      }
51108      if ('wheelDeltaX' in e) {
51109        sX = -e.wheelDeltaX / 120;
51110      }
51111
51112      // side scrolling on FF with DOMMouseScroll
51113      if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {
51114        sX = sY;
51115        sY = 0;
51116      }
51117
51118      pX = sX * PIXEL_STEP;
51119      pY = sY * PIXEL_STEP;
51120
51121      if ('deltaY' in e) {
51122        pY = e.deltaY;
51123      }
51124      if ('deltaX' in e) {
51125        pX = e.deltaX;
51126      }
51127
51128      if ((pX || pY) && e.deltaMode) {
51129        if (e.deltaMode === 1) { // delta in LINE units
51130          pX *= LINE_HEIGHT;
51131          pY *= LINE_HEIGHT;
51132        } else { // delta in PAGE units
51133          pX *= PAGE_HEIGHT;
51134          pY *= PAGE_HEIGHT;
51135        }
51136      }
51137
51138      // Fall-back if spin cannot be determined
51139      if (pX && !sX) {
51140        sX = (pX < 1) ? -1 : 1;
51141      }
51142      if (pY && !sY) {
51143        sY = (pY < 1) ? -1 : 1;
51144      }
51145
51146      return {
51147        spinX: sX,
51148        spinY: sY,
51149        pixelX: pX,
51150        pixelY: pY,
51151      };
51152    },
51153    handleMouseEnter: function handleMouseEnter() {
51154      var swiper = this;
51155      swiper.mouseEntered = true;
51156    },
51157    handleMouseLeave: function handleMouseLeave() {
51158      var swiper = this;
51159      swiper.mouseEntered = false;
51160    },
51161    handle: function handle(event) {
51162      var e = event;
51163      var swiper = this;
51164      var params = swiper.params.mousewheel;
51165
51166      if (!swiper.mouseEntered && !params.releaseOnEdges) { return true; }
51167
51168      if (e.originalEvent) { e = e.originalEvent; } // jquery fix
51169      var delta = 0;
51170      var rtlFactor = swiper.rtlTranslate ? -1 : 1;
51171
51172      var data = Mousewheel.normalize(e);
51173
51174      if (params.forceToAxis) {
51175        if (swiper.isHorizontal()) {
51176          if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) { delta = data.pixelX * rtlFactor; }
51177          else { return true; }
51178        } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) { delta = data.pixelY; }
51179        else { return true; }
51180      } else {
51181        delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;
51182      }
51183
51184      if (delta === 0) { return true; }
51185
51186      if (params.invert) { delta = -delta; }
51187
51188      if (!swiper.params.freeMode) {
51189        if (Utils.now() - swiper.mousewheel.lastScrollTime > 60) {
51190          if (delta < 0) {
51191            if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {
51192              swiper.slideNext();
51193              swiper.emit('scroll', e);
51194            } else if (params.releaseOnEdges) { return true; }
51195          } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {
51196            swiper.slidePrev();
51197            swiper.emit('scroll', e);
51198          } else if (params.releaseOnEdges) { return true; }
51199        }
51200        swiper.mousewheel.lastScrollTime = (new win.Date()).getTime();
51201      } else {
51202        // Freemode or scrollContainer:
51203        if (swiper.params.loop) {
51204          swiper.loopFix();
51205        }
51206        var position = swiper.getTranslate() + (delta * params.sensitivity);
51207        var wasBeginning = swiper.isBeginning;
51208        var wasEnd = swiper.isEnd;
51209
51210        if (position >= swiper.minTranslate()) { position = swiper.minTranslate(); }
51211        if (position <= swiper.maxTranslate()) { position = swiper.maxTranslate(); }
51212
51213        swiper.setTransition(0);
51214        swiper.setTranslate(position);
51215        swiper.updateProgress();
51216        swiper.updateActiveIndex();
51217        swiper.updateSlidesClasses();
51218
51219        if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) {
51220          swiper.updateSlidesClasses();
51221        }
51222
51223        if (swiper.params.freeModeSticky) {
51224          clearTimeout(swiper.mousewheel.timeout);
51225          swiper.mousewheel.timeout = Utils.nextTick(function () {
51226            swiper.slideToClosest();
51227          }, 300);
51228        }
51229        // Emit event
51230        swiper.emit('scroll', e);
51231
51232        // Stop autoplay
51233        if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) { swiper.autoplay.stop(); }
51234        // Return page scroll on edge positions
51235        if (position === swiper.minTranslate() || position === swiper.maxTranslate()) { return true; }
51236      }
51237
51238      if (e.preventDefault) { e.preventDefault(); }
51239      else { e.returnValue = false; }
51240      return false;
51241    },
51242    enable: function enable() {
51243      var swiper = this;
51244      if (!Mousewheel.event) { return false; }
51245      if (swiper.mousewheel.enabled) { return false; }
51246      var target = swiper.$el;
51247      if (swiper.params.mousewheel.eventsTarged !== 'container') {
51248        target = $(swiper.params.mousewheel.eventsTarged);
51249      }
51250      target.on('mouseenter', swiper.mousewheel.handleMouseEnter);
51251      target.on('mouseleave', swiper.mousewheel.handleMouseLeave);
51252      target.on(Mousewheel.event, swiper.mousewheel.handle);
51253      swiper.mousewheel.enabled = true;
51254      return true;
51255    },
51256    disable: function disable() {
51257      var swiper = this;
51258      if (!Mousewheel.event) { return false; }
51259      if (!swiper.mousewheel.enabled) { return false; }
51260      var target = swiper.$el;
51261      if (swiper.params.mousewheel.eventsTarged !== 'container') {
51262        target = $(swiper.params.mousewheel.eventsTarged);
51263      }
51264      target.off(Mousewheel.event, swiper.mousewheel.handle);
51265      swiper.mousewheel.enabled = false;
51266      return true;
51267    },
51268  };
51269
51270  var Mousewheel$1 = {
51271    name: 'mousewheel',
51272    params: {
51273      mousewheel: {
51274        enabled: false,
51275        releaseOnEdges: false,
51276        invert: false,
51277        forceToAxis: false,
51278        sensitivity: 1,
51279        eventsTarged: 'container',
51280      },
51281    },
51282    create: function create() {
51283      var swiper = this;
51284      Utils.extend(swiper, {
51285        mousewheel: {
51286          enabled: false,
51287          enable: Mousewheel.enable.bind(swiper),
51288          disable: Mousewheel.disable.bind(swiper),
51289          handle: Mousewheel.handle.bind(swiper),
51290          handleMouseEnter: Mousewheel.handleMouseEnter.bind(swiper),
51291          handleMouseLeave: Mousewheel.handleMouseLeave.bind(swiper),
51292          lastScrollTime: Utils.now(),
51293        },
51294      });
51295    },
51296    on: {
51297      init: function init() {
51298        var swiper = this;
51299        if (swiper.params.mousewheel.enabled) { swiper.mousewheel.enable(); }
51300      },
51301      destroy: function destroy() {
51302        var swiper = this;
51303        if (swiper.mousewheel.enabled) { swiper.mousewheel.disable(); }
51304      },
51305    },
51306  };
51307
51308  var Navigation = {
51309    update: function update() {
51310      // Update Navigation Buttons
51311      var swiper = this;
51312      var params = swiper.params.navigation;
51313
51314      if (swiper.params.loop) { return; }
51315      var ref = swiper.navigation;
51316      var $nextEl = ref.$nextEl;
51317      var $prevEl = ref.$prevEl;
51318
51319      if ($prevEl && $prevEl.length > 0) {
51320        if (swiper.isBeginning) {
51321          $prevEl.addClass(params.disabledClass);
51322        } else {
51323          $prevEl.removeClass(params.disabledClass);
51324        }
51325        $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
51326      }
51327      if ($nextEl && $nextEl.length > 0) {
51328        if (swiper.isEnd) {
51329          $nextEl.addClass(params.disabledClass);
51330        } else {
51331          $nextEl.removeClass(params.disabledClass);
51332        }
51333        $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
51334      }
51335    },
51336    onPrevClick: function onPrevClick(e) {
51337      var swiper = this;
51338      e.preventDefault();
51339      if (swiper.isBeginning && !swiper.params.loop) { return; }
51340      swiper.slidePrev();
51341    },
51342    onNextClick: function onNextClick(e) {
51343      var swiper = this;
51344      e.preventDefault();
51345      if (swiper.isEnd && !swiper.params.loop) { return; }
51346      swiper.slideNext();
51347    },
51348    init: function init() {
51349      var swiper = this;
51350      var params = swiper.params.navigation;
51351      if (!(params.nextEl || params.prevEl)) { return; }
51352
51353      var $nextEl;
51354      var $prevEl;
51355      if (params.nextEl) {
51356        $nextEl = $(params.nextEl);
51357        if (
51358          swiper.params.uniqueNavElements
51359          && typeof params.nextEl === 'string'
51360          && $nextEl.length > 1
51361          && swiper.$el.find(params.nextEl).length === 1
51362        ) {
51363          $nextEl = swiper.$el.find(params.nextEl);
51364        }
51365      }
51366      if (params.prevEl) {
51367        $prevEl = $(params.prevEl);
51368        if (
51369          swiper.params.uniqueNavElements
51370          && typeof params.prevEl === 'string'
51371          && $prevEl.length > 1
51372          && swiper.$el.find(params.prevEl).length === 1
51373        ) {
51374          $prevEl = swiper.$el.find(params.prevEl);
51375        }
51376      }
51377
51378      if ($nextEl && $nextEl.length > 0) {
51379        $nextEl.on('click', swiper.navigation.onNextClick);
51380      }
51381      if ($prevEl && $prevEl.length > 0) {
51382        $prevEl.on('click', swiper.navigation.onPrevClick);
51383      }
51384
51385      Utils.extend(swiper.navigation, {
51386        $nextEl: $nextEl,
51387        nextEl: $nextEl && $nextEl[0],
51388        $prevEl: $prevEl,
51389        prevEl: $prevEl && $prevEl[0],
51390      });
51391    },
51392    destroy: function destroy() {
51393      var swiper = this;
51394      var ref = swiper.navigation;
51395      var $nextEl = ref.$nextEl;
51396      var $prevEl = ref.$prevEl;
51397      if ($nextEl && $nextEl.length) {
51398        $nextEl.off('click', swiper.navigation.onNextClick);
51399        $nextEl.removeClass(swiper.params.navigation.disabledClass);
51400      }
51401      if ($prevEl && $prevEl.length) {
51402        $prevEl.off('click', swiper.navigation.onPrevClick);
51403        $prevEl.removeClass(swiper.params.navigation.disabledClass);
51404      }
51405    },
51406  };
51407
51408  var Navigation$1 = {
51409    name: 'navigation',
51410    params: {
51411      navigation: {
51412        nextEl: null,
51413        prevEl: null,
51414
51415        hideOnClick: false,
51416        disabledClass: 'swiper-button-disabled',
51417        hiddenClass: 'swiper-button-hidden',
51418        lockClass: 'swiper-button-lock',
51419      },
51420    },
51421    create: function create() {
51422      var swiper = this;
51423      Utils.extend(swiper, {
51424        navigation: {
51425          init: Navigation.init.bind(swiper),
51426          update: Navigation.update.bind(swiper),
51427          destroy: Navigation.destroy.bind(swiper),
51428          onNextClick: Navigation.onNextClick.bind(swiper),
51429          onPrevClick: Navigation.onPrevClick.bind(swiper),
51430        },
51431      });
51432    },
51433    on: {
51434      init: function init() {
51435        var swiper = this;
51436        swiper.navigation.init();
51437        swiper.navigation.update();
51438      },
51439      toEdge: function toEdge() {
51440        var swiper = this;
51441        swiper.navigation.update();
51442      },
51443      fromEdge: function fromEdge() {
51444        var swiper = this;
51445        swiper.navigation.update();
51446      },
51447      destroy: function destroy() {
51448        var swiper = this;
51449        swiper.navigation.destroy();
51450      },
51451      click: function click(e) {
51452        var swiper = this;
51453        var ref = swiper.navigation;
51454        var $nextEl = ref.$nextEl;
51455        var $prevEl = ref.$prevEl;
51456        if (
51457          swiper.params.navigation.hideOnClick
51458          && !$(e.target).is($prevEl)
51459          && !$(e.target).is($nextEl)
51460        ) {
51461          var isHidden;
51462          if ($nextEl) {
51463            isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);
51464          } else if ($prevEl) {
51465            isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);
51466          }
51467          if (isHidden === true) {
51468            swiper.emit('navigationShow', swiper);
51469          } else {
51470            swiper.emit('navigationHide', swiper);
51471          }
51472          if ($nextEl) {
51473            $nextEl.toggleClass(swiper.params.navigation.hiddenClass);
51474          }
51475          if ($prevEl) {
51476            $prevEl.toggleClass(swiper.params.navigation.hiddenClass);
51477          }
51478        }
51479      },
51480    },
51481  };
51482
51483  var Pagination = {
51484    update: function update() {
51485      // Render || Update Pagination bullets/items
51486      var swiper = this;
51487      var rtl = swiper.rtl;
51488      var params = swiper.params.pagination;
51489      if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) { return; }
51490      var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
51491      var $el = swiper.pagination.$el;
51492      // Current/Total
51493      var current;
51494      var total = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
51495      if (swiper.params.loop) {
51496        current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);
51497        if (current > slidesLength - 1 - (swiper.loopedSlides * 2)) {
51498          current -= (slidesLength - (swiper.loopedSlides * 2));
51499        }
51500        if (current > total - 1) { current -= total; }
51501        if (current < 0 && swiper.params.paginationType !== 'bullets') { current = total + current; }
51502      } else if (typeof swiper.snapIndex !== 'undefined') {
51503        current = swiper.snapIndex;
51504      } else {
51505        current = swiper.activeIndex || 0;
51506      }
51507      // Types
51508      if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {
51509        var bullets = swiper.pagination.bullets;
51510        var firstIndex;
51511        var lastIndex;
51512        var midIndex;
51513        if (params.dynamicBullets) {
51514          swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);
51515          $el.css(swiper.isHorizontal() ? 'width' : 'height', ((swiper.pagination.bulletSize * (params.dynamicMainBullets + 4)) + "px"));
51516          if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {
51517            swiper.pagination.dynamicBulletIndex += (current - swiper.previousIndex);
51518            if (swiper.pagination.dynamicBulletIndex > (params.dynamicMainBullets - 1)) {
51519              swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;
51520            } else if (swiper.pagination.dynamicBulletIndex < 0) {
51521              swiper.pagination.dynamicBulletIndex = 0;
51522            }
51523          }
51524          firstIndex = current - swiper.pagination.dynamicBulletIndex;
51525          lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);
51526          midIndex = (lastIndex + firstIndex) / 2;
51527        }
51528        bullets.removeClass(((params.bulletActiveClass) + " " + (params.bulletActiveClass) + "-next " + (params.bulletActiveClass) + "-next-next " + (params.bulletActiveClass) + "-prev " + (params.bulletActiveClass) + "-prev-prev " + (params.bulletActiveClass) + "-main"));
51529        if ($el.length > 1) {
51530          bullets.each(function (index, bullet) {
51531            var $bullet = $(bullet);
51532            var bulletIndex = $bullet.index();
51533            if (bulletIndex === current) {
51534              $bullet.addClass(params.bulletActiveClass);
51535            }
51536            if (params.dynamicBullets) {
51537              if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {
51538                $bullet.addClass(((params.bulletActiveClass) + "-main"));
51539              }
51540              if (bulletIndex === firstIndex) {
51541                $bullet
51542                  .prev()
51543                  .addClass(((params.bulletActiveClass) + "-prev"))
51544                  .prev()
51545                  .addClass(((params.bulletActiveClass) + "-prev-prev"));
51546              }
51547              if (bulletIndex === lastIndex) {
51548                $bullet
51549                  .next()
51550                  .addClass(((params.bulletActiveClass) + "-next"))
51551                  .next()
51552                  .addClass(((params.bulletActiveClass) + "-next-next"));
51553              }
51554            }
51555          });
51556        } else {
51557          var $bullet = bullets.eq(current);
51558          $bullet.addClass(params.bulletActiveClass);
51559          if (params.dynamicBullets) {
51560            var $firstDisplayedBullet = bullets.eq(firstIndex);
51561            var $lastDisplayedBullet = bullets.eq(lastIndex);
51562            for (var i = firstIndex; i <= lastIndex; i += 1) {
51563              bullets.eq(i).addClass(((params.bulletActiveClass) + "-main"));
51564            }
51565            $firstDisplayedBullet
51566              .prev()
51567              .addClass(((params.bulletActiveClass) + "-prev"))
51568              .prev()
51569              .addClass(((params.bulletActiveClass) + "-prev-prev"));
51570            $lastDisplayedBullet
51571              .next()
51572              .addClass(((params.bulletActiveClass) + "-next"))
51573              .next()
51574              .addClass(((params.bulletActiveClass) + "-next-next"));
51575          }
51576        }
51577        if (params.dynamicBullets) {
51578          var dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);
51579          var bulletsOffset = (((swiper.pagination.bulletSize * dynamicBulletsLength) - (swiper.pagination.bulletSize)) / 2) - (midIndex * swiper.pagination.bulletSize);
51580          var offsetProp = rtl ? 'right' : 'left';
51581          bullets.css(swiper.isHorizontal() ? offsetProp : 'top', (bulletsOffset + "px"));
51582        }
51583      }
51584      if (params.type === 'fraction') {
51585        $el.find(("." + (params.currentClass))).text(params.formatFractionCurrent(current + 1));
51586        $el.find(("." + (params.totalClass))).text(params.formatFractionTotal(total));
51587      }
51588      if (params.type === 'progressbar') {
51589        var progressbarDirection;
51590        if (params.progressbarOpposite) {
51591          progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';
51592        } else {
51593          progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';
51594        }
51595        var scale = (current + 1) / total;
51596        var scaleX = 1;
51597        var scaleY = 1;
51598        if (progressbarDirection === 'horizontal') {
51599          scaleX = scale;
51600        } else {
51601          scaleY = scale;
51602        }
51603        $el.find(("." + (params.progressbarFillClass))).transform(("translate3d(0,0,0) scaleX(" + scaleX + ") scaleY(" + scaleY + ")")).transition(swiper.params.speed);
51604      }
51605      if (params.type === 'custom' && params.renderCustom) {
51606        $el.html(params.renderCustom(swiper, current + 1, total));
51607        swiper.emit('paginationRender', swiper, $el[0]);
51608      } else {
51609        swiper.emit('paginationUpdate', swiper, $el[0]);
51610      }
51611      $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
51612    },
51613    render: function render() {
51614      // Render Container
51615      var swiper = this;
51616      var params = swiper.params.pagination;
51617      if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) { return; }
51618      var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
51619
51620      var $el = swiper.pagination.$el;
51621      var paginationHTML = '';
51622      if (params.type === 'bullets') {
51623        var numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
51624        for (var i = 0; i < numberOfBullets; i += 1) {
51625          if (params.renderBullet) {
51626            paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);
51627          } else {
51628            paginationHTML += "<" + (params.bulletElement) + " class=\"" + (params.bulletClass) + "\"></" + (params.bulletElement) + ">";
51629          }
51630        }
51631        $el.html(paginationHTML);
51632        swiper.pagination.bullets = $el.find(("." + (params.bulletClass)));
51633      }
51634      if (params.type === 'fraction') {
51635        if (params.renderFraction) {
51636          paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);
51637        } else {
51638          paginationHTML = "<span class=\"" + (params.currentClass) + "\"></span>"
51639          + ' / '
51640          + "<span class=\"" + (params.totalClass) + "\"></span>";
51641        }
51642        $el.html(paginationHTML);
51643      }
51644      if (params.type === 'progressbar') {
51645        if (params.renderProgressbar) {
51646          paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);
51647        } else {
51648          paginationHTML = "<span class=\"" + (params.progressbarFillClass) + "\"></span>";
51649        }
51650        $el.html(paginationHTML);
51651      }
51652      if (params.type !== 'custom') {
51653        swiper.emit('paginationRender', swiper.pagination.$el[0]);
51654      }
51655    },
51656    init: function init() {
51657      var swiper = this;
51658      var params = swiper.params.pagination;
51659      if (!params.el) { return; }
51660
51661      var $el = $(params.el);
51662      if ($el.length === 0) { return; }
51663
51664      if (
51665        swiper.params.uniqueNavElements
51666        && typeof params.el === 'string'
51667        && $el.length > 1
51668        && swiper.$el.find(params.el).length === 1
51669      ) {
51670        $el = swiper.$el.find(params.el);
51671      }
51672
51673      if (params.type === 'bullets' && params.clickable) {
51674        $el.addClass(params.clickableClass);
51675      }
51676
51677      $el.addClass(params.modifierClass + params.type);
51678
51679      if (params.type === 'bullets' && params.dynamicBullets) {
51680        $el.addClass(("" + (params.modifierClass) + (params.type) + "-dynamic"));
51681        swiper.pagination.dynamicBulletIndex = 0;
51682        if (params.dynamicMainBullets < 1) {
51683          params.dynamicMainBullets = 1;
51684        }
51685      }
51686      if (params.type === 'progressbar' && params.progressbarOpposite) {
51687        $el.addClass(params.progressbarOppositeClass);
51688      }
51689
51690      if (params.clickable) {
51691        $el.on('click', ("." + (params.bulletClass)), function onClick(e) {
51692          e.preventDefault();
51693          var index = $(this).index() * swiper.params.slidesPerGroup;
51694          if (swiper.params.loop) { index += swiper.loopedSlides; }
51695          swiper.slideTo(index);
51696        });
51697      }
51698
51699      Utils.extend(swiper.pagination, {
51700        $el: $el,
51701        el: $el[0],
51702      });
51703    },
51704    destroy: function destroy() {
51705      var swiper = this;
51706      var params = swiper.params.pagination;
51707      if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) { return; }
51708      var $el = swiper.pagination.$el;
51709
51710      $el.removeClass(params.hiddenClass);
51711      $el.removeClass(params.modifierClass + params.type);
51712      if (swiper.pagination.bullets) { swiper.pagination.bullets.removeClass(params.bulletActiveClass); }
51713      if (params.clickable) {
51714        $el.off('click', ("." + (params.bulletClass)));
51715      }
51716    },
51717  };
51718
51719  var Pagination$1 = {
51720    name: 'pagination',
51721    params: {
51722      pagination: {
51723        el: null,
51724        bulletElement: 'span',
51725        clickable: false,
51726        hideOnClick: false,
51727        renderBullet: null,
51728        renderProgressbar: null,
51729        renderFraction: null,
51730        renderCustom: null,
51731        progressbarOpposite: false,
51732        type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom'
51733        dynamicBullets: false,
51734        dynamicMainBullets: 1,
51735        formatFractionCurrent: function (number) { return number; },
51736        formatFractionTotal: function (number) { return number; },
51737        bulletClass: 'swiper-pagination-bullet',
51738        bulletActiveClass: 'swiper-pagination-bullet-active',
51739        modifierClass: 'swiper-pagination-', // NEW
51740        currentClass: 'swiper-pagination-current',
51741        totalClass: 'swiper-pagination-total',
51742        hiddenClass: 'swiper-pagination-hidden',
51743        progressbarFillClass: 'swiper-pagination-progressbar-fill',
51744        progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',
51745        clickableClass: 'swiper-pagination-clickable', // NEW
51746        lockClass: 'swiper-pagination-lock',
51747      },
51748    },
51749    create: function create() {
51750      var swiper = this;
51751      Utils.extend(swiper, {
51752        pagination: {
51753          init: Pagination.init.bind(swiper),
51754          render: Pagination.render.bind(swiper),
51755          update: Pagination.update.bind(swiper),
51756          destroy: Pagination.destroy.bind(swiper),
51757          dynamicBulletIndex: 0,
51758        },
51759      });
51760    },
51761    on: {
51762      init: function init() {
51763        var swiper = this;
51764        swiper.pagination.init();
51765        swiper.pagination.render();
51766        swiper.pagination.update();
51767      },
51768      activeIndexChange: function activeIndexChange() {
51769        var swiper = this;
51770        if (swiper.params.loop) {
51771          swiper.pagination.update();
51772        } else if (typeof swiper.snapIndex === 'undefined') {
51773          swiper.pagination.update();
51774        }
51775      },
51776      snapIndexChange: function snapIndexChange() {
51777        var swiper = this;
51778        if (!swiper.params.loop) {
51779          swiper.pagination.update();
51780        }
51781      },
51782      slidesLengthChange: function slidesLengthChange() {
51783        var swiper = this;
51784        if (swiper.params.loop) {
51785          swiper.pagination.render();
51786          swiper.pagination.update();
51787        }
51788      },
51789      snapGridLengthChange: function snapGridLengthChange() {
51790        var swiper = this;
51791        if (!swiper.params.loop) {
51792          swiper.pagination.render();
51793          swiper.pagination.update();
51794        }
51795      },
51796      destroy: function destroy() {
51797        var swiper = this;
51798        swiper.pagination.destroy();
51799      },
51800      click: function click(e) {
51801        var swiper = this;
51802        if (
51803          swiper.params.pagination.el
51804          && swiper.params.pagination.hideOnClick
51805          && swiper.pagination.$el.length > 0
51806          && !$(e.target).hasClass(swiper.params.pagination.bulletClass)
51807        ) {
51808          var isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass);
51809          if (isHidden === true) {
51810            swiper.emit('paginationShow', swiper);
51811          } else {
51812            swiper.emit('paginationHide', swiper);
51813          }
51814          swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);
51815        }
51816      },
51817    },
51818  };
51819
51820  var Scrollbar = {
51821    setTranslate: function setTranslate() {
51822      var swiper = this;
51823      if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) { return; }
51824      var scrollbar = swiper.scrollbar;
51825      var rtl = swiper.rtlTranslate;
51826      var progress = swiper.progress;
51827      var dragSize = scrollbar.dragSize;
51828      var trackSize = scrollbar.trackSize;
51829      var $dragEl = scrollbar.$dragEl;
51830      var $el = scrollbar.$el;
51831      var params = swiper.params.scrollbar;
51832
51833      var newSize = dragSize;
51834      var newPos = (trackSize - dragSize) * progress;
51835      if (rtl) {
51836        newPos = -newPos;
51837        if (newPos > 0) {
51838          newSize = dragSize - newPos;
51839          newPos = 0;
51840        } else if (-newPos + dragSize > trackSize) {
51841          newSize = trackSize + newPos;
51842        }
51843      } else if (newPos < 0) {
51844        newSize = dragSize + newPos;
51845        newPos = 0;
51846      } else if (newPos + dragSize > trackSize) {
51847        newSize = trackSize - newPos;
51848      }
51849      if (swiper.isHorizontal()) {
51850        if (Support.transforms3d) {
51851          $dragEl.transform(("translate3d(" + newPos + "px, 0, 0)"));
51852        } else {
51853          $dragEl.transform(("translateX(" + newPos + "px)"));
51854        }
51855        $dragEl[0].style.width = newSize + "px";
51856      } else {
51857        if (Support.transforms3d) {
51858          $dragEl.transform(("translate3d(0px, " + newPos + "px, 0)"));
51859        } else {
51860          $dragEl.transform(("translateY(" + newPos + "px)"));
51861        }
51862        $dragEl[0].style.height = newSize + "px";
51863      }
51864      if (params.hide) {
51865        clearTimeout(swiper.scrollbar.timeout);
51866        $el[0].style.opacity = 1;
51867        swiper.scrollbar.timeout = setTimeout(function () {
51868          $el[0].style.opacity = 0;
51869          $el.transition(400);
51870        }, 1000);
51871      }
51872    },
51873    setTransition: function setTransition(duration) {
51874      var swiper = this;
51875      if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) { return; }
51876      swiper.scrollbar.$dragEl.transition(duration);
51877    },
51878    updateSize: function updateSize() {
51879      var swiper = this;
51880      if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) { return; }
51881
51882      var scrollbar = swiper.scrollbar;
51883      var $dragEl = scrollbar.$dragEl;
51884      var $el = scrollbar.$el;
51885
51886      $dragEl[0].style.width = '';
51887      $dragEl[0].style.height = '';
51888      var trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;
51889
51890      var divider = swiper.size / swiper.virtualSize;
51891      var moveDivider = divider * (trackSize / swiper.size);
51892      var dragSize;
51893      if (swiper.params.scrollbar.dragSize === 'auto') {
51894        dragSize = trackSize * divider;
51895      } else {
51896        dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);
51897      }
51898
51899      if (swiper.isHorizontal()) {
51900        $dragEl[0].style.width = dragSize + "px";
51901      } else {
51902        $dragEl[0].style.height = dragSize + "px";
51903      }
51904
51905      if (divider >= 1) {
51906        $el[0].style.display = 'none';
51907      } else {
51908        $el[0].style.display = '';
51909      }
51910      if (swiper.params.scrollbar.hide) {
51911        $el[0].style.opacity = 0;
51912      }
51913      Utils.extend(scrollbar, {
51914        trackSize: trackSize,
51915        divider: divider,
51916        moveDivider: moveDivider,
51917        dragSize: dragSize,
51918      });
51919      scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);
51920    },
51921    getPointerPosition: function getPointerPosition(e) {
51922      var swiper = this;
51923      if (swiper.isHorizontal()) {
51924        return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageX : e.pageX || e.clientX);
51925      }
51926      return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageY : e.pageY || e.clientY);
51927    },
51928    setDragPosition: function setDragPosition(e) {
51929      var swiper = this;
51930      var scrollbar = swiper.scrollbar;
51931      var rtl = swiper.rtlTranslate;
51932      var $el = scrollbar.$el;
51933      var dragSize = scrollbar.dragSize;
51934      var trackSize = scrollbar.trackSize;
51935      var dragStartPos = scrollbar.dragStartPos;
51936
51937      var positionRatio;
51938      positionRatio = ((scrollbar.getPointerPosition(e)) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top']
51939        - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);
51940      positionRatio = Math.max(Math.min(positionRatio, 1), 0);
51941      if (rtl) {
51942        positionRatio = 1 - positionRatio;
51943      }
51944
51945      var position = swiper.minTranslate() + ((swiper.maxTranslate() - swiper.minTranslate()) * positionRatio);
51946
51947      swiper.updateProgress(position);
51948      swiper.setTranslate(position);
51949      swiper.updateActiveIndex();
51950      swiper.updateSlidesClasses();
51951    },
51952    onDragStart: function onDragStart(e) {
51953      var swiper = this;
51954      var params = swiper.params.scrollbar;
51955      var scrollbar = swiper.scrollbar;
51956      var $wrapperEl = swiper.$wrapperEl;
51957      var $el = scrollbar.$el;
51958      var $dragEl = scrollbar.$dragEl;
51959      swiper.scrollbar.isTouched = true;
51960      swiper.scrollbar.dragStartPos = (e.target === $dragEl[0] || e.target === $dragEl)
51961        ? scrollbar.getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;
51962      e.preventDefault();
51963      e.stopPropagation();
51964
51965      $wrapperEl.transition(100);
51966      $dragEl.transition(100);
51967      scrollbar.setDragPosition(e);
51968
51969      clearTimeout(swiper.scrollbar.dragTimeout);
51970
51971      $el.transition(0);
51972      if (params.hide) {
51973        $el.css('opacity', 1);
51974      }
51975      swiper.emit('scrollbarDragStart', e);
51976    },
51977    onDragMove: function onDragMove(e) {
51978      var swiper = this;
51979      var scrollbar = swiper.scrollbar;
51980      var $wrapperEl = swiper.$wrapperEl;
51981      var $el = scrollbar.$el;
51982      var $dragEl = scrollbar.$dragEl;
51983
51984      if (!swiper.scrollbar.isTouched) { return; }
51985      if (e.preventDefault) { e.preventDefault(); }
51986      else { e.returnValue = false; }
51987      scrollbar.setDragPosition(e);
51988      $wrapperEl.transition(0);
51989      $el.transition(0);
51990      $dragEl.transition(0);
51991      swiper.emit('scrollbarDragMove', e);
51992    },
51993    onDragEnd: function onDragEnd(e) {
51994      var swiper = this;
51995
51996      var params = swiper.params.scrollbar;
51997      var scrollbar = swiper.scrollbar;
51998      var $el = scrollbar.$el;
51999
52000      if (!swiper.scrollbar.isTouched) { return; }
52001      swiper.scrollbar.isTouched = false;
52002      if (params.hide) {
52003        clearTimeout(swiper.scrollbar.dragTimeout);
52004        swiper.scrollbar.dragTimeout = Utils.nextTick(function () {
52005          $el.css('opacity', 0);
52006          $el.transition(400);
52007        }, 1000);
52008      }
52009      swiper.emit('scrollbarDragEnd', e);
52010      if (params.snapOnRelease) {
52011        swiper.slideToClosest();
52012      }
52013    },
52014    enableDraggable: function enableDraggable() {
52015      var swiper = this;
52016      if (!swiper.params.scrollbar.el) { return; }
52017      var scrollbar = swiper.scrollbar;
52018      var touchEventsTouch = swiper.touchEventsTouch;
52019      var touchEventsDesktop = swiper.touchEventsDesktop;
52020      var params = swiper.params;
52021      var $el = scrollbar.$el;
52022      var target = $el[0];
52023      var activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;
52024      var passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;
52025      if (!Support.touch) {
52026        target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);
52027        doc.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);
52028        doc.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);
52029      } else {
52030        target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);
52031        target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);
52032        target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);
52033      }
52034    },
52035    disableDraggable: function disableDraggable() {
52036      var swiper = this;
52037      if (!swiper.params.scrollbar.el) { return; }
52038      var scrollbar = swiper.scrollbar;
52039      var touchEventsTouch = swiper.touchEventsTouch;
52040      var touchEventsDesktop = swiper.touchEventsDesktop;
52041      var params = swiper.params;
52042      var $el = scrollbar.$el;
52043      var target = $el[0];
52044      var activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;
52045      var passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;
52046      if (!Support.touch) {
52047        target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);
52048        doc.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);
52049        doc.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);
52050      } else {
52051        target.removeEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);
52052        target.removeEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);
52053        target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);
52054      }
52055    },
52056    init: function init() {
52057      var swiper = this;
52058      if (!swiper.params.scrollbar.el) { return; }
52059      var scrollbar = swiper.scrollbar;
52060      var $swiperEl = swiper.$el;
52061      var params = swiper.params.scrollbar;
52062
52063      var $el = $(params.el);
52064      if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {
52065        $el = $swiperEl.find(params.el);
52066      }
52067
52068      var $dragEl = $el.find(("." + (swiper.params.scrollbar.dragClass)));
52069      if ($dragEl.length === 0) {
52070        $dragEl = $(("<div class=\"" + (swiper.params.scrollbar.dragClass) + "\"></div>"));
52071        $el.append($dragEl);
52072      }
52073
52074      Utils.extend(scrollbar, {
52075        $el: $el,
52076        el: $el[0],
52077        $dragEl: $dragEl,
52078        dragEl: $dragEl[0],
52079      });
52080
52081      if (params.draggable) {
52082        scrollbar.enableDraggable();
52083      }
52084    },
52085    destroy: function destroy() {
52086      var swiper = this;
52087      swiper.scrollbar.disableDraggable();
52088    },
52089  };
52090
52091  var Scrollbar$1 = {
52092    name: 'scrollbar',
52093    params: {
52094      scrollbar: {
52095        el: null,
52096        dragSize: 'auto',
52097        hide: false,
52098        draggable: false,
52099        snapOnRelease: true,
52100        lockClass: 'swiper-scrollbar-lock',
52101        dragClass: 'swiper-scrollbar-drag',
52102      },
52103    },
52104    create: function create() {
52105      var swiper = this;
52106      Utils.extend(swiper, {
52107        scrollbar: {
52108          init: Scrollbar.init.bind(swiper),
52109          destroy: Scrollbar.destroy.bind(swiper),
52110          updateSize: Scrollbar.updateSize.bind(swiper),
52111          setTranslate: Scrollbar.setTranslate.bind(swiper),
52112          setTransition: Scrollbar.setTransition.bind(swiper),
52113          enableDraggable: Scrollbar.enableDraggable.bind(swiper),
52114          disableDraggable: Scrollbar.disableDraggable.bind(swiper),
52115          setDragPosition: Scrollbar.setDragPosition.bind(swiper),
52116          getPointerPosition: Scrollbar.getPointerPosition.bind(swiper),
52117          onDragStart: Scrollbar.onDragStart.bind(swiper),
52118          onDragMove: Scrollbar.onDragMove.bind(swiper),
52119          onDragEnd: Scrollbar.onDragEnd.bind(swiper),
52120          isTouched: false,
52121          timeout: null,
52122          dragTimeout: null,
52123        },
52124      });
52125    },
52126    on: {
52127      init: function init() {
52128        var swiper = this;
52129        swiper.scrollbar.init();
52130        swiper.scrollbar.updateSize();
52131        swiper.scrollbar.setTranslate();
52132      },
52133      update: function update() {
52134        var swiper = this;
52135        swiper.scrollbar.updateSize();
52136      },
52137      resize: function resize() {
52138        var swiper = this;
52139        swiper.scrollbar.updateSize();
52140      },
52141      observerUpdate: function observerUpdate() {
52142        var swiper = this;
52143        swiper.scrollbar.updateSize();
52144      },
52145      setTranslate: function setTranslate() {
52146        var swiper = this;
52147        swiper.scrollbar.setTranslate();
52148      },
52149      setTransition: function setTransition(duration) {
52150        var swiper = this;
52151        swiper.scrollbar.setTransition(duration);
52152      },
52153      destroy: function destroy() {
52154        var swiper = this;
52155        swiper.scrollbar.destroy();
52156      },
52157    },
52158  };
52159
52160  var Parallax = {
52161    setTransform: function setTransform(el, progress) {
52162      var swiper = this;
52163      var rtl = swiper.rtl;
52164
52165      var $el = $(el);
52166      var rtlFactor = rtl ? -1 : 1;
52167
52168      var p = $el.attr('data-swiper-parallax') || '0';
52169      var x = $el.attr('data-swiper-parallax-x');
52170      var y = $el.attr('data-swiper-parallax-y');
52171      var scale = $el.attr('data-swiper-parallax-scale');
52172      var opacity = $el.attr('data-swiper-parallax-opacity');
52173
52174      if (x || y) {
52175        x = x || '0';
52176        y = y || '0';
52177      } else if (swiper.isHorizontal()) {
52178        x = p;
52179        y = '0';
52180      } else {
52181        y = p;
52182        x = '0';
52183      }
52184
52185      if ((x).indexOf('%') >= 0) {
52186        x = (parseInt(x, 10) * progress * rtlFactor) + "%";
52187      } else {
52188        x = (x * progress * rtlFactor) + "px";
52189      }
52190      if ((y).indexOf('%') >= 0) {
52191        y = (parseInt(y, 10) * progress) + "%";
52192      } else {
52193        y = (y * progress) + "px";
52194      }
52195
52196      if (typeof opacity !== 'undefined' && opacity !== null) {
52197        var currentOpacity = opacity - ((opacity - 1) * (1 - Math.abs(progress)));
52198        $el[0].style.opacity = currentOpacity;
52199      }
52200      if (typeof scale === 'undefined' || scale === null) {
52201        $el.transform(("translate3d(" + x + ", " + y + ", 0px)"));
52202      } else {
52203        var currentScale = scale - ((scale - 1) * (1 - Math.abs(progress)));
52204        $el.transform(("translate3d(" + x + ", " + y + ", 0px) scale(" + currentScale + ")"));
52205      }
52206    },
52207    setTranslate: function setTranslate() {
52208      var swiper = this;
52209      var $el = swiper.$el;
52210      var slides = swiper.slides;
52211      var progress = swiper.progress;
52212      var snapGrid = swiper.snapGrid;
52213      $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')
52214        .each(function (index, el) {
52215          swiper.parallax.setTransform(el, progress);
52216        });
52217      slides.each(function (slideIndex, slideEl) {
52218        var slideProgress = slideEl.progress;
52219        if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {
52220          slideProgress += Math.ceil(slideIndex / 2) - (progress * (snapGrid.length - 1));
52221        }
52222        slideProgress = Math.min(Math.max(slideProgress, -1), 1);
52223        $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')
52224          .each(function (index, el) {
52225            swiper.parallax.setTransform(el, slideProgress);
52226          });
52227      });
52228    },
52229    setTransition: function setTransition(duration) {
52230      if ( duration === void 0 ) duration = this.params.speed;
52231
52232      var swiper = this;
52233      var $el = swiper.$el;
52234      $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')
52235        .each(function (index, parallaxEl) {
52236          var $parallaxEl = $(parallaxEl);
52237          var parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;
52238          if (duration === 0) { parallaxDuration = 0; }
52239          $parallaxEl.transition(parallaxDuration);
52240        });
52241    },
52242  };
52243
52244  var Parallax$1 = {
52245    name: 'parallax',
52246    params: {
52247      parallax: {
52248        enabled: false,
52249      },
52250    },
52251    create: function create() {
52252      var swiper = this;
52253      Utils.extend(swiper, {
52254        parallax: {
52255          setTransform: Parallax.setTransform.bind(swiper),
52256          setTranslate: Parallax.setTranslate.bind(swiper),
52257          setTransition: Parallax.setTransition.bind(swiper),
52258        },
52259      });
52260    },
52261    on: {
52262      beforeInit: function beforeInit() {
52263        var swiper = this;
52264        if (!swiper.params.parallax.enabled) { return; }
52265        swiper.params.watchSlidesProgress = true;
52266        swiper.originalParams.watchSlidesProgress = true;
52267      },
52268      init: function init() {
52269        var swiper = this;
52270        if (!swiper.params.parallax.enabled) { return; }
52271        swiper.parallax.setTranslate();
52272      },
52273      setTranslate: function setTranslate() {
52274        var swiper = this;
52275        if (!swiper.params.parallax.enabled) { return; }
52276        swiper.parallax.setTranslate();
52277      },
52278      setTransition: function setTransition(duration) {
52279        var swiper = this;
52280        if (!swiper.params.parallax.enabled) { return; }
52281        swiper.parallax.setTransition(duration);
52282      },
52283    },
52284  };
52285
52286  var Zoom = {
52287    // Calc Scale From Multi-touches
52288    getDistanceBetweenTouches: function getDistanceBetweenTouches(e) {
52289      if (e.targetTouches.length < 2) { return 1; }
52290      var x1 = e.targetTouches[0].pageX;
52291      var y1 = e.targetTouches[0].pageY;
52292      var x2 = e.targetTouches[1].pageX;
52293      var y2 = e.targetTouches[1].pageY;
52294      var distance = Math.sqrt((Math.pow( (x2 - x1), 2 )) + (Math.pow( (y2 - y1), 2 )));
52295      return distance;
52296    },
52297    // Events
52298    onGestureStart: function onGestureStart(e) {
52299      var swiper = this;
52300      var params = swiper.params.zoom;
52301      var zoom = swiper.zoom;
52302      var gesture = zoom.gesture;
52303      zoom.fakeGestureTouched = false;
52304      zoom.fakeGestureMoved = false;
52305      if (!Support.gestures) {
52306        if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) {
52307          return;
52308        }
52309        zoom.fakeGestureTouched = true;
52310        gesture.scaleStart = Zoom.getDistanceBetweenTouches(e);
52311      }
52312      if (!gesture.$slideEl || !gesture.$slideEl.length) {
52313        gesture.$slideEl = $(e.target).closest('.swiper-slide');
52314        if (gesture.$slideEl.length === 0) { gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); }
52315        gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas');
52316        gesture.$imageWrapEl = gesture.$imageEl.parent(("." + (params.containerClass)));
52317        gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
52318        if (gesture.$imageWrapEl.length === 0) {
52319          gesture.$imageEl = undefined;
52320          return;
52321        }
52322      }
52323      gesture.$imageEl.transition(0);
52324      swiper.zoom.isScaling = true;
52325    },
52326    onGestureChange: function onGestureChange(e) {
52327      var swiper = this;
52328      var params = swiper.params.zoom;
52329      var zoom = swiper.zoom;
52330      var gesture = zoom.gesture;
52331      if (!Support.gestures) {
52332        if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) {
52333          return;
52334        }
52335        zoom.fakeGestureMoved = true;
52336        gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);
52337      }
52338      if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }
52339      if (Support.gestures) {
52340        zoom.scale = e.scale * zoom.currentScale;
52341      } else {
52342        zoom.scale = (gesture.scaleMove / gesture.scaleStart) * zoom.currentScale;
52343      }
52344      if (zoom.scale > gesture.maxRatio) {
52345        zoom.scale = (gesture.maxRatio - 1) + (Math.pow( ((zoom.scale - gesture.maxRatio) + 1), 0.5 ));
52346      }
52347      if (zoom.scale < params.minRatio) {
52348        zoom.scale = (params.minRatio + 1) - (Math.pow( ((params.minRatio - zoom.scale) + 1), 0.5 ));
52349      }
52350      gesture.$imageEl.transform(("translate3d(0,0,0) scale(" + (zoom.scale) + ")"));
52351    },
52352    onGestureEnd: function onGestureEnd(e) {
52353      var swiper = this;
52354      var params = swiper.params.zoom;
52355      var zoom = swiper.zoom;
52356      var gesture = zoom.gesture;
52357      if (!Support.gestures) {
52358        if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {
52359          return;
52360        }
52361        if (e.type !== 'touchend' || (e.type === 'touchend' && e.changedTouches.length < 2 && !Device.android)) {
52362          return;
52363        }
52364        zoom.fakeGestureTouched = false;
52365        zoom.fakeGestureMoved = false;
52366      }
52367      if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }
52368      zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);
52369      gesture.$imageEl.transition(swiper.params.speed).transform(("translate3d(0,0,0) scale(" + (zoom.scale) + ")"));
52370      zoom.currentScale = zoom.scale;
52371      zoom.isScaling = false;
52372      if (zoom.scale === 1) { gesture.$slideEl = undefined; }
52373    },
52374    onTouchStart: function onTouchStart(e) {
52375      var swiper = this;
52376      var zoom = swiper.zoom;
52377      var gesture = zoom.gesture;
52378      var image = zoom.image;
52379      if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }
52380      if (image.isTouched) { return; }
52381      if (Device.android) { e.preventDefault(); }
52382      image.isTouched = true;
52383      image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
52384      image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
52385    },
52386    onTouchMove: function onTouchMove(e) {
52387      var swiper = this;
52388      var zoom = swiper.zoom;
52389      var gesture = zoom.gesture;
52390      var image = zoom.image;
52391      var velocity = zoom.velocity;
52392      if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }
52393      swiper.allowClick = false;
52394      if (!image.isTouched || !gesture.$slideEl) { return; }
52395
52396      if (!image.isMoved) {
52397        image.width = gesture.$imageEl[0].offsetWidth;
52398        image.height = gesture.$imageEl[0].offsetHeight;
52399        image.startX = Utils.getTranslate(gesture.$imageWrapEl[0], 'x') || 0;
52400        image.startY = Utils.getTranslate(gesture.$imageWrapEl[0], 'y') || 0;
52401        gesture.slideWidth = gesture.$slideEl[0].offsetWidth;
52402        gesture.slideHeight = gesture.$slideEl[0].offsetHeight;
52403        gesture.$imageWrapEl.transition(0);
52404        if (swiper.rtl) {
52405          image.startX = -image.startX;
52406          image.startY = -image.startY;
52407        }
52408      }
52409      // Define if we need image drag
52410      var scaledWidth = image.width * zoom.scale;
52411      var scaledHeight = image.height * zoom.scale;
52412
52413      if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) { return; }
52414
52415      image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);
52416      image.maxX = -image.minX;
52417      image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);
52418      image.maxY = -image.minY;
52419
52420      image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
52421      image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
52422
52423      if (!image.isMoved && !zoom.isScaling) {
52424        if (
52425          swiper.isHorizontal()
52426          && (
52427            (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x)
52428            || (Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)
52429          )
52430        ) {
52431          image.isTouched = false;
52432          return;
52433        } if (
52434          !swiper.isHorizontal()
52435          && (
52436            (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y)
52437            || (Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)
52438          )
52439        ) {
52440          image.isTouched = false;
52441          return;
52442        }
52443      }
52444      e.preventDefault();
52445      e.stopPropagation();
52446
52447      image.isMoved = true;
52448      image.currentX = (image.touchesCurrent.x - image.touchesStart.x) + image.startX;
52449      image.currentY = (image.touchesCurrent.y - image.touchesStart.y) + image.startY;
52450
52451      if (image.currentX < image.minX) {
52452        image.currentX = (image.minX + 1) - (Math.pow( ((image.minX - image.currentX) + 1), 0.8 ));
52453      }
52454      if (image.currentX > image.maxX) {
52455        image.currentX = (image.maxX - 1) + (Math.pow( ((image.currentX - image.maxX) + 1), 0.8 ));
52456      }
52457
52458      if (image.currentY < image.minY) {
52459        image.currentY = (image.minY + 1) - (Math.pow( ((image.minY - image.currentY) + 1), 0.8 ));
52460      }
52461      if (image.currentY > image.maxY) {
52462        image.currentY = (image.maxY - 1) + (Math.pow( ((image.currentY - image.maxY) + 1), 0.8 ));
52463      }
52464
52465      // Velocity
52466      if (!velocity.prevPositionX) { velocity.prevPositionX = image.touchesCurrent.x; }
52467      if (!velocity.prevPositionY) { velocity.prevPositionY = image.touchesCurrent.y; }
52468      if (!velocity.prevTime) { velocity.prevTime = Date.now(); }
52469      velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;
52470      velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;
52471      if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) { velocity.x = 0; }
52472      if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) { velocity.y = 0; }
52473      velocity.prevPositionX = image.touchesCurrent.x;
52474      velocity.prevPositionY = image.touchesCurrent.y;
52475      velocity.prevTime = Date.now();
52476
52477      gesture.$imageWrapEl.transform(("translate3d(" + (image.currentX) + "px, " + (image.currentY) + "px,0)"));
52478    },
52479    onTouchEnd: function onTouchEnd() {
52480      var swiper = this;
52481      var zoom = swiper.zoom;
52482      var gesture = zoom.gesture;
52483      var image = zoom.image;
52484      var velocity = zoom.velocity;
52485      if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }
52486      if (!image.isTouched || !image.isMoved) {
52487        image.isTouched = false;
52488        image.isMoved = false;
52489        return;
52490      }
52491      image.isTouched = false;
52492      image.isMoved = false;
52493      var momentumDurationX = 300;
52494      var momentumDurationY = 300;
52495      var momentumDistanceX = velocity.x * momentumDurationX;
52496      var newPositionX = image.currentX + momentumDistanceX;
52497      var momentumDistanceY = velocity.y * momentumDurationY;
52498      var newPositionY = image.currentY + momentumDistanceY;
52499
52500      // Fix duration
52501      if (velocity.x !== 0) { momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x); }
52502      if (velocity.y !== 0) { momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y); }
52503      var momentumDuration = Math.max(momentumDurationX, momentumDurationY);
52504
52505      image.currentX = newPositionX;
52506      image.currentY = newPositionY;
52507
52508      // Define if we need image drag
52509      var scaledWidth = image.width * zoom.scale;
52510      var scaledHeight = image.height * zoom.scale;
52511      image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);
52512      image.maxX = -image.minX;
52513      image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);
52514      image.maxY = -image.minY;
52515      image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);
52516      image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);
52517
52518      gesture.$imageWrapEl.transition(momentumDuration).transform(("translate3d(" + (image.currentX) + "px, " + (image.currentY) + "px,0)"));
52519    },
52520    onTransitionEnd: function onTransitionEnd() {
52521      var swiper = this;
52522      var zoom = swiper.zoom;
52523      var gesture = zoom.gesture;
52524      if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {
52525        gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');
52526        gesture.$imageWrapEl.transform('translate3d(0,0,0)');
52527
52528        zoom.scale = 1;
52529        zoom.currentScale = 1;
52530
52531        gesture.$slideEl = undefined;
52532        gesture.$imageEl = undefined;
52533        gesture.$imageWrapEl = undefined;
52534      }
52535    },
52536    // Toggle Zoom
52537    toggle: function toggle(e) {
52538      var swiper = this;
52539      var zoom = swiper.zoom;
52540
52541      if (zoom.scale && zoom.scale !== 1) {
52542        // Zoom Out
52543        zoom.out();
52544      } else {
52545        // Zoom In
52546        zoom.in(e);
52547      }
52548    },
52549    in: function in$1(e) {
52550      var swiper = this;
52551
52552      var zoom = swiper.zoom;
52553      var params = swiper.params.zoom;
52554      var gesture = zoom.gesture;
52555      var image = zoom.image;
52556
52557      if (!gesture.$slideEl) {
52558        gesture.$slideEl = swiper.clickedSlide ? $(swiper.clickedSlide) : swiper.slides.eq(swiper.activeIndex);
52559        gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas');
52560        gesture.$imageWrapEl = gesture.$imageEl.parent(("." + (params.containerClass)));
52561      }
52562      if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }
52563
52564      gesture.$slideEl.addClass(("" + (params.zoomedSlideClass)));
52565
52566      var touchX;
52567      var touchY;
52568      var offsetX;
52569      var offsetY;
52570      var diffX;
52571      var diffY;
52572      var translateX;
52573      var translateY;
52574      var imageWidth;
52575      var imageHeight;
52576      var scaledWidth;
52577      var scaledHeight;
52578      var translateMinX;
52579      var translateMinY;
52580      var translateMaxX;
52581      var translateMaxY;
52582      var slideWidth;
52583      var slideHeight;
52584
52585      if (typeof image.touchesStart.x === 'undefined' && e) {
52586        touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;
52587        touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;
52588      } else {
52589        touchX = image.touchesStart.x;
52590        touchY = image.touchesStart.y;
52591      }
52592
52593      zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
52594      zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
52595      if (e) {
52596        slideWidth = gesture.$slideEl[0].offsetWidth;
52597        slideHeight = gesture.$slideEl[0].offsetHeight;
52598        offsetX = gesture.$slideEl.offset().left;
52599        offsetY = gesture.$slideEl.offset().top;
52600        diffX = (offsetX + (slideWidth / 2)) - touchX;
52601        diffY = (offsetY + (slideHeight / 2)) - touchY;
52602
52603        imageWidth = gesture.$imageEl[0].offsetWidth;
52604        imageHeight = gesture.$imageEl[0].offsetHeight;
52605        scaledWidth = imageWidth * zoom.scale;
52606        scaledHeight = imageHeight * zoom.scale;
52607
52608        translateMinX = Math.min(((slideWidth / 2) - (scaledWidth / 2)), 0);
52609        translateMinY = Math.min(((slideHeight / 2) - (scaledHeight / 2)), 0);
52610        translateMaxX = -translateMinX;
52611        translateMaxY = -translateMinY;
52612
52613        translateX = diffX * zoom.scale;
52614        translateY = diffY * zoom.scale;
52615
52616        if (translateX < translateMinX) {
52617          translateX = translateMinX;
52618        }
52619        if (translateX > translateMaxX) {
52620          translateX = translateMaxX;
52621        }
52622
52623        if (translateY < translateMinY) {
52624          translateY = translateMinY;
52625        }
52626        if (translateY > translateMaxY) {
52627          translateY = translateMaxY;
52628        }
52629      } else {
52630        translateX = 0;
52631        translateY = 0;
52632      }
52633      gesture.$imageWrapEl.transition(300).transform(("translate3d(" + translateX + "px, " + translateY + "px,0)"));
52634      gesture.$imageEl.transition(300).transform(("translate3d(0,0,0) scale(" + (zoom.scale) + ")"));
52635    },
52636    out: function out() {
52637      var swiper = this;
52638
52639      var zoom = swiper.zoom;
52640      var params = swiper.params.zoom;
52641      var gesture = zoom.gesture;
52642
52643      if (!gesture.$slideEl) {
52644        gesture.$slideEl = swiper.clickedSlide ? $(swiper.clickedSlide) : swiper.slides.eq(swiper.activeIndex);
52645        gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas');
52646        gesture.$imageWrapEl = gesture.$imageEl.parent(("." + (params.containerClass)));
52647      }
52648      if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }
52649
52650      zoom.scale = 1;
52651      zoom.currentScale = 1;
52652      gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');
52653      gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');
52654      gesture.$slideEl.removeClass(("" + (params.zoomedSlideClass)));
52655      gesture.$slideEl = undefined;
52656    },
52657    // Attach/Detach Events
52658    enable: function enable() {
52659      var swiper = this;
52660      var zoom = swiper.zoom;
52661      if (zoom.enabled) { return; }
52662      zoom.enabled = true;
52663
52664      var passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;
52665
52666      // Scale image
52667      if (Support.gestures) {
52668        swiper.$wrapperEl.on('gesturestart', '.swiper-slide', zoom.onGestureStart, passiveListener);
52669        swiper.$wrapperEl.on('gesturechange', '.swiper-slide', zoom.onGestureChange, passiveListener);
52670        swiper.$wrapperEl.on('gestureend', '.swiper-slide', zoom.onGestureEnd, passiveListener);
52671      } else if (swiper.touchEvents.start === 'touchstart') {
52672        swiper.$wrapperEl.on(swiper.touchEvents.start, '.swiper-slide', zoom.onGestureStart, passiveListener);
52673        swiper.$wrapperEl.on(swiper.touchEvents.move, '.swiper-slide', zoom.onGestureChange, passiveListener);
52674        swiper.$wrapperEl.on(swiper.touchEvents.end, '.swiper-slide', zoom.onGestureEnd, passiveListener);
52675      }
52676
52677      // Move image
52678      swiper.$wrapperEl.on(swiper.touchEvents.move, ("." + (swiper.params.zoom.containerClass)), zoom.onTouchMove);
52679    },
52680    disable: function disable() {
52681      var swiper = this;
52682      var zoom = swiper.zoom;
52683      if (!zoom.enabled) { return; }
52684
52685      swiper.zoom.enabled = false;
52686
52687      var passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;
52688
52689      // Scale image
52690      if (Support.gestures) {
52691        swiper.$wrapperEl.off('gesturestart', '.swiper-slide', zoom.onGestureStart, passiveListener);
52692        swiper.$wrapperEl.off('gesturechange', '.swiper-slide', zoom.onGestureChange, passiveListener);
52693        swiper.$wrapperEl.off('gestureend', '.swiper-slide', zoom.onGestureEnd, passiveListener);
52694      } else if (swiper.touchEvents.start === 'touchstart') {
52695        swiper.$wrapperEl.off(swiper.touchEvents.start, '.swiper-slide', zoom.onGestureStart, passiveListener);
52696        swiper.$wrapperEl.off(swiper.touchEvents.move, '.swiper-slide', zoom.onGestureChange, passiveListener);
52697        swiper.$wrapperEl.off(swiper.touchEvents.end, '.swiper-slide', zoom.onGestureEnd, passiveListener);
52698      }
52699
52700      // Move image
52701      swiper.$wrapperEl.off(swiper.touchEvents.move, ("." + (swiper.params.zoom.containerClass)), zoom.onTouchMove);
52702    },
52703  };
52704
52705  var Zoom$1 = {
52706    name: 'zoom',
52707    params: {
52708      zoom: {
52709        enabled: false,
52710        maxRatio: 3,
52711        minRatio: 1,
52712        toggle: true,
52713        containerClass: 'swiper-zoom-container',
52714        zoomedSlideClass: 'swiper-slide-zoomed',
52715      },
52716    },
52717    create: function create() {
52718      var swiper = this;
52719      var zoom = {
52720        enabled: false,
52721        scale: 1,
52722        currentScale: 1,
52723        isScaling: false,
52724        gesture: {
52725          $slideEl: undefined,
52726          slideWidth: undefined,
52727          slideHeight: undefined,
52728          $imageEl: undefined,
52729          $imageWrapEl: undefined,
52730          maxRatio: 3,
52731        },
52732        image: {
52733          isTouched: undefined,
52734          isMoved: undefined,
52735          currentX: undefined,
52736          currentY: undefined,
52737          minX: undefined,
52738          minY: undefined,
52739          maxX: undefined,
52740          maxY: undefined,
52741          width: undefined,
52742          height: undefined,
52743          startX: undefined,
52744          startY: undefined,
52745          touchesStart: {},
52746          touchesCurrent: {},
52747        },
52748        velocity: {
52749          x: undefined,
52750          y: undefined,
52751          prevPositionX: undefined,
52752          prevPositionY: undefined,
52753          prevTime: undefined,
52754        },
52755      };
52756
52757      ('onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out').split(' ').forEach(function (methodName) {
52758        zoom[methodName] = Zoom[methodName].bind(swiper);
52759      });
52760      Utils.extend(swiper, {
52761        zoom: zoom,
52762      });
52763
52764      var scale = 1;
52765      Object.defineProperty(swiper.zoom, 'scale', {
52766        get: function get() {
52767          return scale;
52768        },
52769        set: function set(value) {
52770          if (scale !== value) {
52771            var imageEl = swiper.zoom.gesture.$imageEl ? swiper.zoom.gesture.$imageEl[0] : undefined;
52772            var slideEl = swiper.zoom.gesture.$slideEl ? swiper.zoom.gesture.$slideEl[0] : undefined;
52773            swiper.emit('zoomChange', value, imageEl, slideEl);
52774          }
52775          scale = value;
52776        },
52777      });
52778    },
52779    on: {
52780      init: function init() {
52781        var swiper = this;
52782        if (swiper.params.zoom.enabled) {
52783          swiper.zoom.enable();
52784        }
52785      },
52786      destroy: function destroy() {
52787        var swiper = this;
52788        swiper.zoom.disable();
52789      },
52790      touchStart: function touchStart(e) {
52791        var swiper = this;
52792        if (!swiper.zoom.enabled) { return; }
52793        swiper.zoom.onTouchStart(e);
52794      },
52795      touchEnd: function touchEnd(e) {
52796        var swiper = this;
52797        if (!swiper.zoom.enabled) { return; }
52798        swiper.zoom.onTouchEnd(e);
52799      },
52800      doubleTap: function doubleTap(e) {
52801        var swiper = this;
52802        if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {
52803          swiper.zoom.toggle(e);
52804        }
52805      },
52806      transitionEnd: function transitionEnd() {
52807        var swiper = this;
52808        if (swiper.zoom.enabled && swiper.params.zoom.enabled) {
52809          swiper.zoom.onTransitionEnd();
52810        }
52811      },
52812    },
52813  };
52814
52815  var Lazy = {
52816    loadInSlide: function loadInSlide(index, loadInDuplicate) {
52817      if ( loadInDuplicate === void 0 ) loadInDuplicate = true;
52818
52819      var swiper = this;
52820      var params = swiper.params.lazy;
52821      if (typeof index === 'undefined') { return; }
52822      if (swiper.slides.length === 0) { return; }
52823      var isVirtual = swiper.virtual && swiper.params.virtual.enabled;
52824
52825      var $slideEl = isVirtual
52826        ? swiper.$wrapperEl.children(("." + (swiper.params.slideClass) + "[data-swiper-slide-index=\"" + index + "\"]"))
52827        : swiper.slides.eq(index);
52828
52829      var $images = $slideEl.find(("." + (params.elementClass) + ":not(." + (params.loadedClass) + "):not(." + (params.loadingClass) + ")"));
52830      if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {
52831        $images = $images.add($slideEl[0]);
52832      }
52833      if ($images.length === 0) { return; }
52834
52835      $images.each(function (imageIndex, imageEl) {
52836        var $imageEl = $(imageEl);
52837        $imageEl.addClass(params.loadingClass);
52838
52839        var background = $imageEl.attr('data-background');
52840        var src = $imageEl.attr('data-src');
52841        var srcset = $imageEl.attr('data-srcset');
52842        var sizes = $imageEl.attr('data-sizes');
52843
52844        swiper.loadImage($imageEl[0], (src || background), srcset, sizes, false, function () {
52845          if (typeof swiper === 'undefined' || swiper === null || !swiper || (swiper && !swiper.params) || swiper.destroyed) { return; }
52846          if (background) {
52847            $imageEl.css('background-image', ("url(\"" + background + "\")"));
52848            $imageEl.removeAttr('data-background');
52849          } else {
52850            if (srcset) {
52851              $imageEl.attr('srcset', srcset);
52852              $imageEl.removeAttr('data-srcset');
52853            }
52854            if (sizes) {
52855              $imageEl.attr('sizes', sizes);
52856              $imageEl.removeAttr('data-sizes');
52857            }
52858            if (src) {
52859              $imageEl.attr('src', src);
52860              $imageEl.removeAttr('data-src');
52861            }
52862          }
52863
52864          $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);
52865          $slideEl.find(("." + (params.preloaderClass))).remove();
52866          if (swiper.params.loop && loadInDuplicate) {
52867            var slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');
52868            if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {
52869              var originalSlide = swiper.$wrapperEl.children(("[data-swiper-slide-index=\"" + slideOriginalIndex + "\"]:not(." + (swiper.params.slideDuplicateClass) + ")"));
52870              swiper.lazy.loadInSlide(originalSlide.index(), false);
52871            } else {
52872              var duplicatedSlide = swiper.$wrapperEl.children(("." + (swiper.params.slideDuplicateClass) + "[data-swiper-slide-index=\"" + slideOriginalIndex + "\"]"));
52873              swiper.lazy.loadInSlide(duplicatedSlide.index(), false);
52874            }
52875          }
52876          swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]);
52877        });
52878
52879        swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]);
52880      });
52881    },
52882    load: function load() {
52883      var swiper = this;
52884      var $wrapperEl = swiper.$wrapperEl;
52885      var swiperParams = swiper.params;
52886      var slides = swiper.slides;
52887      var activeIndex = swiper.activeIndex;
52888      var isVirtual = swiper.virtual && swiperParams.virtual.enabled;
52889      var params = swiperParams.lazy;
52890
52891      var slidesPerView = swiperParams.slidesPerView;
52892      if (slidesPerView === 'auto') {
52893        slidesPerView = 0;
52894      }
52895
52896      function slideExist(index) {
52897        if (isVirtual) {
52898          if ($wrapperEl.children(("." + (swiperParams.slideClass) + "[data-swiper-slide-index=\"" + index + "\"]")).length) {
52899            return true;
52900          }
52901        } else if (slides[index]) { return true; }
52902        return false;
52903      }
52904      function slideIndex(slideEl) {
52905        if (isVirtual) {
52906          return $(slideEl).attr('data-swiper-slide-index');
52907        }
52908        return $(slideEl).index();
52909      }
52910
52911      if (!swiper.lazy.initialImageLoaded) { swiper.lazy.initialImageLoaded = true; }
52912      if (swiper.params.watchSlidesVisibility) {
52913        $wrapperEl.children(("." + (swiperParams.slideVisibleClass))).each(function (elIndex, slideEl) {
52914          var index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();
52915          swiper.lazy.loadInSlide(index);
52916        });
52917      } else if (slidesPerView > 1) {
52918        for (var i = activeIndex; i < activeIndex + slidesPerView; i += 1) {
52919          if (slideExist(i)) { swiper.lazy.loadInSlide(i); }
52920        }
52921      } else {
52922        swiper.lazy.loadInSlide(activeIndex);
52923      }
52924      if (params.loadPrevNext) {
52925        if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) {
52926          var amount = params.loadPrevNextAmount;
52927          var spv = slidesPerView;
52928          var maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);
52929          var minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);
52930          // Next Slides
52931          for (var i$1 = activeIndex + slidesPerView; i$1 < maxIndex; i$1 += 1) {
52932            if (slideExist(i$1)) { swiper.lazy.loadInSlide(i$1); }
52933          }
52934          // Prev Slides
52935          for (var i$2 = minIndex; i$2 < activeIndex; i$2 += 1) {
52936            if (slideExist(i$2)) { swiper.lazy.loadInSlide(i$2); }
52937          }
52938        } else {
52939          var nextSlide = $wrapperEl.children(("." + (swiperParams.slideNextClass)));
52940          if (nextSlide.length > 0) { swiper.lazy.loadInSlide(slideIndex(nextSlide)); }
52941
52942          var prevSlide = $wrapperEl.children(("." + (swiperParams.slidePrevClass)));
52943          if (prevSlide.length > 0) { swiper.lazy.loadInSlide(slideIndex(prevSlide)); }
52944        }
52945      }
52946    },
52947  };
52948
52949  var Lazy$1 = {
52950    name: 'lazy',
52951    params: {
52952      lazy: {
52953        enabled: false,
52954        loadPrevNext: false,
52955        loadPrevNextAmount: 1,
52956        loadOnTransitionStart: false,
52957
52958        elementClass: 'swiper-lazy',
52959        loadingClass: 'swiper-lazy-loading',
52960        loadedClass: 'swiper-lazy-loaded',
52961        preloaderClass: 'swiper-lazy-preloader',
52962      },
52963    },
52964    create: function create() {
52965      var swiper = this;
52966      Utils.extend(swiper, {
52967        lazy: {
52968          initialImageLoaded: false,
52969          load: Lazy.load.bind(swiper),
52970          loadInSlide: Lazy.loadInSlide.bind(swiper),
52971        },
52972      });
52973    },
52974    on: {
52975      beforeInit: function beforeInit() {
52976        var swiper = this;
52977        if (swiper.params.lazy.enabled && swiper.params.preloadImages) {
52978          swiper.params.preloadImages = false;
52979        }
52980      },
52981      init: function init() {
52982        var swiper = this;
52983        if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) {
52984          swiper.lazy.load();
52985        }
52986      },
52987      scroll: function scroll() {
52988        var swiper = this;
52989        if (swiper.params.freeMode && !swiper.params.freeModeSticky) {
52990          swiper.lazy.load();
52991        }
52992      },
52993      resize: function resize() {
52994        var swiper = this;
52995        if (swiper.params.lazy.enabled) {
52996          swiper.lazy.load();
52997        }
52998      },
52999      scrollbarDragMove: function scrollbarDragMove() {
53000        var swiper = this;
53001        if (swiper.params.lazy.enabled) {
53002          swiper.lazy.load();
53003        }
53004      },
53005      transitionStart: function transitionStart() {
53006        var swiper = this;
53007        if (swiper.params.lazy.enabled) {
53008          if (swiper.params.lazy.loadOnTransitionStart || (!swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded)) {
53009            swiper.lazy.load();
53010          }
53011        }
53012      },
53013      transitionEnd: function transitionEnd() {
53014        var swiper = this;
53015        if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {
53016          swiper.lazy.load();
53017        }
53018      },
53019    },
53020  };
53021
53022  /* eslint no-bitwise: ["error", { "allow": [">>"] }] */
53023
53024  var Controller = {
53025    LinearSpline: function LinearSpline(x, y) {
53026      var binarySearch = (function search() {
53027        var maxIndex;
53028        var minIndex;
53029        var guess;
53030        return function (array, val) {
53031          minIndex = -1;
53032          maxIndex = array.length;
53033          while (maxIndex - minIndex > 1) {
53034            guess = maxIndex + minIndex >> 1;
53035            if (array[guess] <= val) {
53036              minIndex = guess;
53037            } else {
53038              maxIndex = guess;
53039            }
53040          }
53041          return maxIndex;
53042        };
53043      }());
53044      this.x = x;
53045      this.y = y;
53046      this.lastIndex = x.length - 1;
53047      // Given an x value (x2), return the expected y2 value:
53048      // (x1,y1) is the known point before given value,
53049      // (x3,y3) is the known point after given value.
53050      var i1;
53051      var i3;
53052
53053      this.interpolate = function interpolate(x2) {
53054        if (!x2) { return 0; }
53055
53056        // Get the indexes of x1 and x3 (the array indexes before and after given x2):
53057        i3 = binarySearch(this.x, x2);
53058        i1 = i3 - 1;
53059
53060        // We have our indexes i1 & i3, so we can calculate already:
53061        // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1
53062        return (((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1])) + this.y[i1];
53063      };
53064      return this;
53065    },
53066    // xxx: for now i will just save one spline function to to
53067    getInterpolateFunction: function getInterpolateFunction(c) {
53068      var swiper = this;
53069      if (!swiper.controller.spline) {
53070        swiper.controller.spline = swiper.params.loop
53071          ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid)
53072          : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid);
53073      }
53074    },
53075    setTranslate: function setTranslate(setTranslate$1, byController) {
53076      var swiper = this;
53077      var controlled = swiper.controller.control;
53078      var multiplier;
53079      var controlledTranslate;
53080      function setControlledTranslate(c) {
53081        // this will create an Interpolate function based on the snapGrids
53082        // x is the Grid of the scrolled scroller and y will be the controlled scroller
53083        // it makes sense to create this only once and recall it for the interpolation
53084        // the function does a lot of value caching for performance
53085        var translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;
53086        if (swiper.params.controller.by === 'slide') {
53087          swiper.controller.getInterpolateFunction(c);
53088          // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid
53089          // but it did not work out
53090          controlledTranslate = -swiper.controller.spline.interpolate(-translate);
53091        }
53092
53093        if (!controlledTranslate || swiper.params.controller.by === 'container') {
53094          multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());
53095          controlledTranslate = ((translate - swiper.minTranslate()) * multiplier) + c.minTranslate();
53096        }
53097
53098        if (swiper.params.controller.inverse) {
53099          controlledTranslate = c.maxTranslate() - controlledTranslate;
53100        }
53101        c.updateProgress(controlledTranslate);
53102        c.setTranslate(controlledTranslate, swiper);
53103        c.updateActiveIndex();
53104        c.updateSlidesClasses();
53105      }
53106      if (Array.isArray(controlled)) {
53107        for (var i = 0; i < controlled.length; i += 1) {
53108          if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
53109            setControlledTranslate(controlled[i]);
53110          }
53111        }
53112      } else if (controlled instanceof Swiper && byController !== controlled) {
53113        setControlledTranslate(controlled);
53114      }
53115    },
53116    setTransition: function setTransition(duration, byController) {
53117      var swiper = this;
53118      var controlled = swiper.controller.control;
53119      var i;
53120      function setControlledTransition(c) {
53121        c.setTransition(duration, swiper);
53122        if (duration !== 0) {
53123          c.transitionStart();
53124          if (c.params.autoHeight) {
53125            Utils.nextTick(function () {
53126              c.updateAutoHeight();
53127            });
53128          }
53129          c.$wrapperEl.transitionEnd(function () {
53130            if (!controlled) { return; }
53131            if (c.params.loop && swiper.params.controller.by === 'slide') {
53132              c.loopFix();
53133            }
53134            c.transitionEnd();
53135          });
53136        }
53137      }
53138      if (Array.isArray(controlled)) {
53139        for (i = 0; i < controlled.length; i += 1) {
53140          if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
53141            setControlledTransition(controlled[i]);
53142          }
53143        }
53144      } else if (controlled instanceof Swiper && byController !== controlled) {
53145        setControlledTransition(controlled);
53146      }
53147    },
53148  };
53149  var Controller$1 = {
53150    name: 'controller',
53151    params: {
53152      controller: {
53153        control: undefined,
53154        inverse: false,
53155        by: 'slide', // or 'container'
53156      },
53157    },
53158    create: function create() {
53159      var swiper = this;
53160      Utils.extend(swiper, {
53161        controller: {
53162          control: swiper.params.controller.control,
53163          getInterpolateFunction: Controller.getInterpolateFunction.bind(swiper),
53164          setTranslate: Controller.setTranslate.bind(swiper),
53165          setTransition: Controller.setTransition.bind(swiper),
53166        },
53167      });
53168    },
53169    on: {
53170      update: function update() {
53171        var swiper = this;
53172        if (!swiper.controller.control) { return; }
53173        if (swiper.controller.spline) {
53174          swiper.controller.spline = undefined;
53175          delete swiper.controller.spline;
53176        }
53177      },
53178      resize: function resize() {
53179        var swiper = this;
53180        if (!swiper.controller.control) { return; }
53181        if (swiper.controller.spline) {
53182          swiper.controller.spline = undefined;
53183          delete swiper.controller.spline;
53184        }
53185      },
53186      observerUpdate: function observerUpdate() {
53187        var swiper = this;
53188        if (!swiper.controller.control) { return; }
53189        if (swiper.controller.spline) {
53190          swiper.controller.spline = undefined;
53191          delete swiper.controller.spline;
53192        }
53193      },
53194      setTranslate: function setTranslate(translate, byController) {
53195        var swiper = this;
53196        if (!swiper.controller.control) { return; }
53197        swiper.controller.setTranslate(translate, byController);
53198      },
53199      setTransition: function setTransition(duration, byController) {
53200        var swiper = this;
53201        if (!swiper.controller.control) { return; }
53202        swiper.controller.setTransition(duration, byController);
53203      },
53204    },
53205  };
53206
53207  var a11y = {
53208    makeElFocusable: function makeElFocusable($el) {
53209      $el.attr('tabIndex', '0');
53210      return $el;
53211    },
53212    addElRole: function addElRole($el, role) {
53213      $el.attr('role', role);
53214      return $el;
53215    },
53216    addElLabel: function addElLabel($el, label) {
53217      $el.attr('aria-label', label);
53218      return $el;
53219    },
53220    disableEl: function disableEl($el) {
53221      $el.attr('aria-disabled', true);
53222      return $el;
53223    },
53224    enableEl: function enableEl($el) {
53225      $el.attr('aria-disabled', false);
53226      return $el;
53227    },
53228    onEnterKey: function onEnterKey(e) {
53229      var swiper = this;
53230      var params = swiper.params.a11y;
53231      if (e.keyCode !== 13) { return; }
53232      var $targetEl = $(e.target);
53233      if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {
53234        if (!(swiper.isEnd && !swiper.params.loop)) {
53235          swiper.slideNext();
53236        }
53237        if (swiper.isEnd) {
53238          swiper.a11y.notify(params.lastSlideMessage);
53239        } else {
53240          swiper.a11y.notify(params.nextSlideMessage);
53241        }
53242      }
53243      if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {
53244        if (!(swiper.isBeginning && !swiper.params.loop)) {
53245          swiper.slidePrev();
53246        }
53247        if (swiper.isBeginning) {
53248          swiper.a11y.notify(params.firstSlideMessage);
53249        } else {
53250          swiper.a11y.notify(params.prevSlideMessage);
53251        }
53252      }
53253      if (swiper.pagination && $targetEl.is(("." + (swiper.params.pagination.bulletClass)))) {
53254        $targetEl[0].click();
53255      }
53256    },
53257    notify: function notify(message) {
53258      var swiper = this;
53259      var notification = swiper.a11y.liveRegion;
53260      if (notification.length === 0) { return; }
53261      notification.html('');
53262      notification.html(message);
53263    },
53264    updateNavigation: function updateNavigation() {
53265      var swiper = this;
53266
53267      if (swiper.params.loop) { return; }
53268      var ref = swiper.navigation;
53269      var $nextEl = ref.$nextEl;
53270      var $prevEl = ref.$prevEl;
53271
53272      if ($prevEl && $prevEl.length > 0) {
53273        if (swiper.isBeginning) {
53274          swiper.a11y.disableEl($prevEl);
53275        } else {
53276          swiper.a11y.enableEl($prevEl);
53277        }
53278      }
53279      if ($nextEl && $nextEl.length > 0) {
53280        if (swiper.isEnd) {
53281          swiper.a11y.disableEl($nextEl);
53282        } else {
53283          swiper.a11y.enableEl($nextEl);
53284        }
53285      }
53286    },
53287    updatePagination: function updatePagination() {
53288      var swiper = this;
53289      var params = swiper.params.a11y;
53290      if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
53291        swiper.pagination.bullets.each(function (bulletIndex, bulletEl) {
53292          var $bulletEl = $(bulletEl);
53293          swiper.a11y.makeElFocusable($bulletEl);
53294          swiper.a11y.addElRole($bulletEl, 'button');
53295          swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/{{index}}/, $bulletEl.index() + 1));
53296        });
53297      }
53298    },
53299    init: function init() {
53300      var swiper = this;
53301
53302      swiper.$el.append(swiper.a11y.liveRegion);
53303
53304      // Navigation
53305      var params = swiper.params.a11y;
53306      var $nextEl;
53307      var $prevEl;
53308      if (swiper.navigation && swiper.navigation.$nextEl) {
53309        $nextEl = swiper.navigation.$nextEl;
53310      }
53311      if (swiper.navigation && swiper.navigation.$prevEl) {
53312        $prevEl = swiper.navigation.$prevEl;
53313      }
53314      if ($nextEl) {
53315        swiper.a11y.makeElFocusable($nextEl);
53316        swiper.a11y.addElRole($nextEl, 'button');
53317        swiper.a11y.addElLabel($nextEl, params.nextSlideMessage);
53318        $nextEl.on('keydown', swiper.a11y.onEnterKey);
53319      }
53320      if ($prevEl) {
53321        swiper.a11y.makeElFocusable($prevEl);
53322        swiper.a11y.addElRole($prevEl, 'button');
53323        swiper.a11y.addElLabel($prevEl, params.prevSlideMessage);
53324        $prevEl.on('keydown', swiper.a11y.onEnterKey);
53325      }
53326
53327      // Pagination
53328      if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
53329        swiper.pagination.$el.on('keydown', ("." + (swiper.params.pagination.bulletClass)), swiper.a11y.onEnterKey);
53330      }
53331    },
53332    destroy: function destroy() {
53333      var swiper = this;
53334      if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) { swiper.a11y.liveRegion.remove(); }
53335
53336      var $nextEl;
53337      var $prevEl;
53338      if (swiper.navigation && swiper.navigation.$nextEl) {
53339        $nextEl = swiper.navigation.$nextEl;
53340      }
53341      if (swiper.navigation && swiper.navigation.$prevEl) {
53342        $prevEl = swiper.navigation.$prevEl;
53343      }
53344      if ($nextEl) {
53345        $nextEl.off('keydown', swiper.a11y.onEnterKey);
53346      }
53347      if ($prevEl) {
53348        $prevEl.off('keydown', swiper.a11y.onEnterKey);
53349      }
53350
53351      // Pagination
53352      if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
53353        swiper.pagination.$el.off('keydown', ("." + (swiper.params.pagination.bulletClass)), swiper.a11y.onEnterKey);
53354      }
53355    },
53356  };
53357  var A11y = {
53358    name: 'a11y',
53359    params: {
53360      a11y: {
53361        enabled: true,
53362        notificationClass: 'swiper-notification',
53363        prevSlideMessage: 'Previous slide',
53364        nextSlideMessage: 'Next slide',
53365        firstSlideMessage: 'This is the first slide',
53366        lastSlideMessage: 'This is the last slide',
53367        paginationBulletMessage: 'Go to slide {{index}}',
53368      },
53369    },
53370    create: function create() {
53371      var swiper = this;
53372      Utils.extend(swiper, {
53373        a11y: {
53374          liveRegion: $(("<span class=\"" + (swiper.params.a11y.notificationClass) + "\" aria-live=\"assertive\" aria-atomic=\"true\"></span>")),
53375        },
53376      });
53377      Object.keys(a11y).forEach(function (methodName) {
53378        swiper.a11y[methodName] = a11y[methodName].bind(swiper);
53379      });
53380    },
53381    on: {
53382      init: function init() {
53383        var swiper = this;
53384        if (!swiper.params.a11y.enabled) { return; }
53385        swiper.a11y.init();
53386        swiper.a11y.updateNavigation();
53387      },
53388      toEdge: function toEdge() {
53389        var swiper = this;
53390        if (!swiper.params.a11y.enabled) { return; }
53391        swiper.a11y.updateNavigation();
53392      },
53393      fromEdge: function fromEdge() {
53394        var swiper = this;
53395        if (!swiper.params.a11y.enabled) { return; }
53396        swiper.a11y.updateNavigation();
53397      },
53398      paginationUpdate: function paginationUpdate() {
53399        var swiper = this;
53400        if (!swiper.params.a11y.enabled) { return; }
53401        swiper.a11y.updatePagination();
53402      },
53403      destroy: function destroy() {
53404        var swiper = this;
53405        if (!swiper.params.a11y.enabled) { return; }
53406        swiper.a11y.destroy();
53407      },
53408    },
53409  };
53410
53411  var History = {
53412    init: function init() {
53413      var swiper = this;
53414      if (!swiper.params.history) { return; }
53415      if (!win.history || !win.history.pushState) {
53416        swiper.params.history.enabled = false;
53417        swiper.params.hashNavigation.enabled = true;
53418        return;
53419      }
53420      var history = swiper.history;
53421      history.initialized = true;
53422      history.paths = History.getPathValues();
53423      if (!history.paths.key && !history.paths.value) { return; }
53424      history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit);
53425      if (!swiper.params.history.replaceState) {
53426        win.addEventListener('popstate', swiper.history.setHistoryPopState);
53427      }
53428    },
53429    destroy: function destroy() {
53430      var swiper = this;
53431      if (!swiper.params.history.replaceState) {
53432        win.removeEventListener('popstate', swiper.history.setHistoryPopState);
53433      }
53434    },
53435    setHistoryPopState: function setHistoryPopState() {
53436      var swiper = this;
53437      swiper.history.paths = History.getPathValues();
53438      swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false);
53439    },
53440    getPathValues: function getPathValues() {
53441      var pathArray = win.location.pathname.slice(1).split('/').filter(function (part) { return part !== ''; });
53442      var total = pathArray.length;
53443      var key = pathArray[total - 2];
53444      var value = pathArray[total - 1];
53445      return { key: key, value: value };
53446    },
53447    setHistory: function setHistory(key, index) {
53448      var swiper = this;
53449      if (!swiper.history.initialized || !swiper.params.history.enabled) { return; }
53450      var slide = swiper.slides.eq(index);
53451      var value = History.slugify(slide.attr('data-history'));
53452      if (!win.location.pathname.includes(key)) {
53453        value = key + "/" + value;
53454      }
53455      var currentState = win.history.state;
53456      if (currentState && currentState.value === value) {
53457        return;
53458      }
53459      if (swiper.params.history.replaceState) {
53460        win.history.replaceState({ value: value }, null, value);
53461      } else {
53462        win.history.pushState({ value: value }, null, value);
53463      }
53464    },
53465    slugify: function slugify(text) {
53466      return text.toString()
53467        .replace(/\s+/g, '-')
53468        .replace(/[^\w-]+/g, '')
53469        .replace(/--+/g, '-')
53470        .replace(/^-+/, '')
53471        .replace(/-+$/, '');
53472    },
53473    scrollToSlide: function scrollToSlide(speed, value, runCallbacks) {
53474      var swiper = this;
53475      if (value) {
53476        for (var i = 0, length = swiper.slides.length; i < length; i += 1) {
53477          var slide = swiper.slides.eq(i);
53478          var slideHistory = History.slugify(slide.attr('data-history'));
53479          if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {
53480            var index = slide.index();
53481            swiper.slideTo(index, speed, runCallbacks);
53482          }
53483        }
53484      } else {
53485        swiper.slideTo(0, speed, runCallbacks);
53486      }
53487    },
53488  };
53489
53490  var History$1 = {
53491    name: 'history',
53492    params: {
53493      history: {
53494        enabled: false,
53495        replaceState: false,
53496        key: 'slides',
53497      },
53498    },
53499    create: function create() {
53500      var swiper = this;
53501      Utils.extend(swiper, {
53502        history: {
53503          init: History.init.bind(swiper),
53504          setHistory: History.setHistory.bind(swiper),
53505          setHistoryPopState: History.setHistoryPopState.bind(swiper),
53506          scrollToSlide: History.scrollToSlide.bind(swiper),
53507          destroy: History.destroy.bind(swiper),
53508        },
53509      });
53510    },
53511    on: {
53512      init: function init() {
53513        var swiper = this;
53514        if (swiper.params.history.enabled) {
53515          swiper.history.init();
53516        }
53517      },
53518      destroy: function destroy() {
53519        var swiper = this;
53520        if (swiper.params.history.enabled) {
53521          swiper.history.destroy();
53522        }
53523      },
53524      transitionEnd: function transitionEnd() {
53525        var swiper = this;
53526        if (swiper.history.initialized) {
53527          swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);
53528        }
53529      },
53530    },
53531  };
53532
53533  var HashNavigation = {
53534    onHashCange: function onHashCange() {
53535      var swiper = this;
53536      var newHash = doc.location.hash.replace('#', '');
53537      var activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');
53538      if (newHash !== activeSlideHash) {
53539        var newIndex = swiper.$wrapperEl.children(("." + (swiper.params.slideClass) + "[data-hash=\"" + newHash + "\"]")).index();
53540        if (typeof newIndex === 'undefined') { return; }
53541        swiper.slideTo(newIndex);
53542      }
53543    },
53544    setHash: function setHash() {
53545      var swiper = this;
53546      if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) { return; }
53547      if (swiper.params.hashNavigation.replaceState && win.history && win.history.replaceState) {
53548        win.history.replaceState(null, null, (("#" + (swiper.slides.eq(swiper.activeIndex).attr('data-hash'))) || 0));
53549      } else {
53550        var slide = swiper.slides.eq(swiper.activeIndex);
53551        var hash = slide.attr('data-hash') || slide.attr('data-history');
53552        doc.location.hash = hash || '';
53553      }
53554    },
53555    init: function init() {
53556      var swiper = this;
53557      if (!swiper.params.hashNavigation.enabled || (swiper.params.history && swiper.params.history.enabled)) { return; }
53558      swiper.hashNavigation.initialized = true;
53559      var hash = doc.location.hash.replace('#', '');
53560      if (hash) {
53561        var speed = 0;
53562        for (var i = 0, length = swiper.slides.length; i < length; i += 1) {
53563          var slide = swiper.slides.eq(i);
53564          var slideHash = slide.attr('data-hash') || slide.attr('data-history');
53565          if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {
53566            var index = slide.index();
53567            swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);
53568          }
53569        }
53570      }
53571      if (swiper.params.hashNavigation.watchState) {
53572        $(win).on('hashchange', swiper.hashNavigation.onHashCange);
53573      }
53574    },
53575    destroy: function destroy() {
53576      var swiper = this;
53577      if (swiper.params.hashNavigation.watchState) {
53578        $(win).off('hashchange', swiper.hashNavigation.onHashCange);
53579      }
53580    },
53581  };
53582  var HashNavigation$1 = {
53583    name: 'hash-navigation',
53584    params: {
53585      hashNavigation: {
53586        enabled: false,
53587        replaceState: false,
53588        watchState: false,
53589      },
53590    },
53591    create: function create() {
53592      var swiper = this;
53593      Utils.extend(swiper, {
53594        hashNavigation: {
53595          initialized: false,
53596          init: HashNavigation.init.bind(swiper),
53597          destroy: HashNavigation.destroy.bind(swiper),
53598          setHash: HashNavigation.setHash.bind(swiper),
53599          onHashCange: HashNavigation.onHashCange.bind(swiper),
53600        },
53601      });
53602    },
53603    on: {
53604      init: function init() {
53605        var swiper = this;
53606        if (swiper.params.hashNavigation.enabled) {
53607          swiper.hashNavigation.init();
53608        }
53609      },
53610      destroy: function destroy() {
53611        var swiper = this;
53612        if (swiper.params.hashNavigation.enabled) {
53613          swiper.hashNavigation.destroy();
53614        }
53615      },
53616      transitionEnd: function transitionEnd() {
53617        var swiper = this;
53618        if (swiper.hashNavigation.initialized) {
53619          swiper.hashNavigation.setHash();
53620        }
53621      },
53622    },
53623  };
53624
53625  /* eslint no-underscore-dangle: "off" */
53626
53627  var Autoplay = {
53628    run: function run() {
53629      var swiper = this;
53630      var $activeSlideEl = swiper.slides.eq(swiper.activeIndex);
53631      var delay = swiper.params.autoplay.delay;
53632      if ($activeSlideEl.attr('data-swiper-autoplay')) {
53633        delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;
53634      }
53635      clearTimeout(swiper.autoplay.timeout);
53636      swiper.autoplay.timeout = Utils.nextTick(function () {
53637        if (swiper.params.autoplay.reverseDirection) {
53638          if (swiper.params.loop) {
53639            swiper.loopFix();
53640            swiper.slidePrev(swiper.params.speed, true, true);
53641            swiper.emit('autoplay');
53642          } else if (!swiper.isBeginning) {
53643            swiper.slidePrev(swiper.params.speed, true, true);
53644            swiper.emit('autoplay');
53645          } else if (!swiper.params.autoplay.stopOnLastSlide) {
53646            swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);
53647            swiper.emit('autoplay');
53648          } else {
53649            swiper.autoplay.stop();
53650          }
53651        } else if (swiper.params.loop) {
53652          swiper.loopFix();
53653          swiper.slideNext(swiper.params.speed, true, true);
53654          swiper.emit('autoplay');
53655        } else if (!swiper.isEnd) {
53656          swiper.slideNext(swiper.params.speed, true, true);
53657          swiper.emit('autoplay');
53658        } else if (!swiper.params.autoplay.stopOnLastSlide) {
53659          swiper.slideTo(0, swiper.params.speed, true, true);
53660          swiper.emit('autoplay');
53661        } else {
53662          swiper.autoplay.stop();
53663        }
53664      }, delay);
53665    },
53666    start: function start() {
53667      var swiper = this;
53668      if (typeof swiper.autoplay.timeout !== 'undefined') { return false; }
53669      if (swiper.autoplay.running) { return false; }
53670      swiper.autoplay.running = true;
53671      swiper.emit('autoplayStart');
53672      swiper.autoplay.run();
53673      return true;
53674    },
53675    stop: function stop() {
53676      var swiper = this;
53677      if (!swiper.autoplay.running) { return false; }
53678      if (typeof swiper.autoplay.timeout === 'undefined') { return false; }
53679
53680      if (swiper.autoplay.timeout) {
53681        clearTimeout(swiper.autoplay.timeout);
53682        swiper.autoplay.timeout = undefined;
53683      }
53684      swiper.autoplay.running = false;
53685      swiper.emit('autoplayStop');
53686      return true;
53687    },
53688    pause: function pause(speed) {
53689      var swiper = this;
53690      if (!swiper.autoplay.running) { return; }
53691      if (swiper.autoplay.paused) { return; }
53692      if (swiper.autoplay.timeout) { clearTimeout(swiper.autoplay.timeout); }
53693      swiper.autoplay.paused = true;
53694      if (speed === 0 || !swiper.params.autoplay.waitForTransition) {
53695        swiper.autoplay.paused = false;
53696        swiper.autoplay.run();
53697      } else {
53698        swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd);
53699        swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);
53700      }
53701    },
53702  };
53703
53704  var Autoplay$1 = {
53705    name: 'autoplay',
53706    params: {
53707      autoplay: {
53708        enabled: false,
53709        delay: 3000,
53710        waitForTransition: true,
53711        disableOnInteraction: true,
53712        stopOnLastSlide: false,
53713        reverseDirection: false,
53714      },
53715    },
53716    create: function create() {
53717      var swiper = this;
53718      Utils.extend(swiper, {
53719        autoplay: {
53720          running: false,
53721          paused: false,
53722          run: Autoplay.run.bind(swiper),
53723          start: Autoplay.start.bind(swiper),
53724          stop: Autoplay.stop.bind(swiper),
53725          pause: Autoplay.pause.bind(swiper),
53726          onTransitionEnd: function onTransitionEnd(e) {
53727            if (!swiper || swiper.destroyed || !swiper.$wrapperEl) { return; }
53728            if (e.target !== this) { return; }
53729            swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd);
53730            swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);
53731            swiper.autoplay.paused = false;
53732            if (!swiper.autoplay.running) {
53733              swiper.autoplay.stop();
53734            } else {
53735              swiper.autoplay.run();
53736            }
53737          },
53738        },
53739      });
53740    },
53741    on: {
53742      init: function init() {
53743        var swiper = this;
53744        if (swiper.params.autoplay.enabled) {
53745          swiper.autoplay.start();
53746        }
53747      },
53748      beforeTransitionStart: function beforeTransitionStart(speed, internal) {
53749        var swiper = this;
53750        if (swiper.autoplay.running) {
53751          if (internal || !swiper.params.autoplay.disableOnInteraction) {
53752            swiper.autoplay.pause(speed);
53753          } else {
53754            swiper.autoplay.stop();
53755          }
53756        }
53757      },
53758      sliderFirstMove: function sliderFirstMove() {
53759        var swiper = this;
53760        if (swiper.autoplay.running) {
53761          if (swiper.params.autoplay.disableOnInteraction) {
53762            swiper.autoplay.stop();
53763          } else {
53764            swiper.autoplay.pause();
53765          }
53766        }
53767      },
53768      destroy: function destroy() {
53769        var swiper = this;
53770        if (swiper.autoplay.running) {
53771          swiper.autoplay.stop();
53772        }
53773      },
53774    },
53775  };
53776
53777  var Fade = {
53778    setTranslate: function setTranslate() {
53779      var swiper = this;
53780      var slides = swiper.slides;
53781      for (var i = 0; i < slides.length; i += 1) {
53782        var $slideEl = swiper.slides.eq(i);
53783        var offset = $slideEl[0].swiperSlideOffset;
53784        var tx = -offset;
53785        if (!swiper.params.virtualTranslate) { tx -= swiper.translate; }
53786        var ty = 0;
53787        if (!swiper.isHorizontal()) {
53788          ty = tx;
53789          tx = 0;
53790        }
53791        var slideOpacity = swiper.params.fadeEffect.crossFade
53792          ? Math.max(1 - Math.abs($slideEl[0].progress), 0)
53793          : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);
53794        $slideEl
53795          .css({
53796            opacity: slideOpacity,
53797          })
53798          .transform(("translate3d(" + tx + "px, " + ty + "px, 0px)"));
53799      }
53800    },
53801    setTransition: function setTransition(duration) {
53802      var swiper = this;
53803      var slides = swiper.slides;
53804      var $wrapperEl = swiper.$wrapperEl;
53805      slides.transition(duration);
53806      if (swiper.params.virtualTranslate && duration !== 0) {
53807        var eventTriggered = false;
53808        slides.transitionEnd(function () {
53809          if (eventTriggered) { return; }
53810          if (!swiper || swiper.destroyed) { return; }
53811          eventTriggered = true;
53812          swiper.animating = false;
53813          var triggerEvents = ['webkitTransitionEnd', 'transitionend'];
53814          for (var i = 0; i < triggerEvents.length; i += 1) {
53815            $wrapperEl.trigger(triggerEvents[i]);
53816          }
53817        });
53818      }
53819    },
53820  };
53821
53822  var EffectFade = {
53823    name: 'effect-fade',
53824    params: {
53825      fadeEffect: {
53826        crossFade: false,
53827      },
53828    },
53829    create: function create() {
53830      var swiper = this;
53831      Utils.extend(swiper, {
53832        fadeEffect: {
53833          setTranslate: Fade.setTranslate.bind(swiper),
53834          setTransition: Fade.setTransition.bind(swiper),
53835        },
53836      });
53837    },
53838    on: {
53839      beforeInit: function beforeInit() {
53840        var swiper = this;
53841        if (swiper.params.effect !== 'fade') { return; }
53842        swiper.classNames.push(((swiper.params.containerModifierClass) + "fade"));
53843        var overwriteParams = {
53844          slidesPerView: 1,
53845          slidesPerColumn: 1,
53846          slidesPerGroup: 1,
53847          watchSlidesProgress: true,
53848          spaceBetween: 0,
53849          virtualTranslate: true,
53850        };
53851        Utils.extend(swiper.params, overwriteParams);
53852        Utils.extend(swiper.originalParams, overwriteParams);
53853      },
53854      setTranslate: function setTranslate() {
53855        var swiper = this;
53856        if (swiper.params.effect !== 'fade') { return; }
53857        swiper.fadeEffect.setTranslate();
53858      },
53859      setTransition: function setTransition(duration) {
53860        var swiper = this;
53861        if (swiper.params.effect !== 'fade') { return; }
53862        swiper.fadeEffect.setTransition(duration);
53863      },
53864    },
53865  };
53866
53867  var Cube = {
53868    setTranslate: function setTranslate() {
53869      var swiper = this;
53870      var $el = swiper.$el;
53871      var $wrapperEl = swiper.$wrapperEl;
53872      var slides = swiper.slides;
53873      var swiperWidth = swiper.width;
53874      var swiperHeight = swiper.height;
53875      var rtl = swiper.rtlTranslate;
53876      var swiperSize = swiper.size;
53877      var params = swiper.params.cubeEffect;
53878      var isHorizontal = swiper.isHorizontal();
53879      var isVirtual = swiper.virtual && swiper.params.virtual.enabled;
53880      var wrapperRotate = 0;
53881      var $cubeShadowEl;
53882      if (params.shadow) {
53883        if (isHorizontal) {
53884          $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');
53885          if ($cubeShadowEl.length === 0) {
53886            $cubeShadowEl = $('<div class="swiper-cube-shadow"></div>');
53887            $wrapperEl.append($cubeShadowEl);
53888          }
53889          $cubeShadowEl.css({ height: (swiperWidth + "px") });
53890        } else {
53891          $cubeShadowEl = $el.find('.swiper-cube-shadow');
53892          if ($cubeShadowEl.length === 0) {
53893            $cubeShadowEl = $('<div class="swiper-cube-shadow"></div>');
53894            $el.append($cubeShadowEl);
53895          }
53896        }
53897      }
53898      for (var i = 0; i < slides.length; i += 1) {
53899        var $slideEl = slides.eq(i);
53900        var slideIndex = i;
53901        if (isVirtual) {
53902          slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);
53903        }
53904        var slideAngle = slideIndex * 90;
53905        var round = Math.floor(slideAngle / 360);
53906        if (rtl) {
53907          slideAngle = -slideAngle;
53908          round = Math.floor(-slideAngle / 360);
53909        }
53910        var progress = Math.max(Math.min($slideEl[0].progress, 1), -1);
53911        var tx = 0;
53912        var ty = 0;
53913        var tz = 0;
53914        if (slideIndex % 4 === 0) {
53915          tx = -round * 4 * swiperSize;
53916          tz = 0;
53917        } else if ((slideIndex - 1) % 4 === 0) {
53918          tx = 0;
53919          tz = -round * 4 * swiperSize;
53920        } else if ((slideIndex - 2) % 4 === 0) {
53921          tx = swiperSize + (round * 4 * swiperSize);
53922          tz = swiperSize;
53923        } else if ((slideIndex - 3) % 4 === 0) {
53924          tx = -swiperSize;
53925          tz = (3 * swiperSize) + (swiperSize * 4 * round);
53926        }
53927        if (rtl) {
53928          tx = -tx;
53929        }
53930
53931        if (!isHorizontal) {
53932          ty = tx;
53933          tx = 0;
53934        }
53935
53936        var transform = "rotateX(" + (isHorizontal ? 0 : -slideAngle) + "deg) rotateY(" + (isHorizontal ? slideAngle : 0) + "deg) translate3d(" + tx + "px, " + ty + "px, " + tz + "px)";
53937        if (progress <= 1 && progress > -1) {
53938          wrapperRotate = (slideIndex * 90) + (progress * 90);
53939          if (rtl) { wrapperRotate = (-slideIndex * 90) - (progress * 90); }
53940        }
53941        $slideEl.transform(transform);
53942        if (params.slideShadows) {
53943          // Set shadows
53944          var shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
53945          var shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
53946          if (shadowBefore.length === 0) {
53947            shadowBefore = $(("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'left' : 'top') + "\"></div>"));
53948            $slideEl.append(shadowBefore);
53949          }
53950          if (shadowAfter.length === 0) {
53951            shadowAfter = $(("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'right' : 'bottom') + "\"></div>"));
53952            $slideEl.append(shadowAfter);
53953          }
53954          if (shadowBefore.length) { shadowBefore[0].style.opacity = Math.max(-progress, 0); }
53955          if (shadowAfter.length) { shadowAfter[0].style.opacity = Math.max(progress, 0); }
53956        }
53957      }
53958      $wrapperEl.css({
53959        '-webkit-transform-origin': ("50% 50% -" + (swiperSize / 2) + "px"),
53960        '-moz-transform-origin': ("50% 50% -" + (swiperSize / 2) + "px"),
53961        '-ms-transform-origin': ("50% 50% -" + (swiperSize / 2) + "px"),
53962        'transform-origin': ("50% 50% -" + (swiperSize / 2) + "px"),
53963      });
53964
53965      if (params.shadow) {
53966        if (isHorizontal) {
53967          $cubeShadowEl.transform(("translate3d(0px, " + ((swiperWidth / 2) + params.shadowOffset) + "px, " + (-swiperWidth / 2) + "px) rotateX(90deg) rotateZ(0deg) scale(" + (params.shadowScale) + ")"));
53968        } else {
53969          var shadowAngle = Math.abs(wrapperRotate) - (Math.floor(Math.abs(wrapperRotate) / 90) * 90);
53970          var multiplier = 1.5 - (
53971            (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2)
53972            + (Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2)
53973          );
53974          var scale1 = params.shadowScale;
53975          var scale2 = params.shadowScale / multiplier;
53976          var offset = params.shadowOffset;
53977          $cubeShadowEl.transform(("scale3d(" + scale1 + ", 1, " + scale2 + ") translate3d(0px, " + ((swiperHeight / 2) + offset) + "px, " + (-swiperHeight / 2 / scale2) + "px) rotateX(-90deg)"));
53978        }
53979      }
53980      var zFactor = (Browser.isSafari || Browser.isUiWebView) ? (-swiperSize / 2) : 0;
53981      $wrapperEl
53982        .transform(("translate3d(0px,0," + zFactor + "px) rotateX(" + (swiper.isHorizontal() ? 0 : wrapperRotate) + "deg) rotateY(" + (swiper.isHorizontal() ? -wrapperRotate : 0) + "deg)"));
53983    },
53984    setTransition: function setTransition(duration) {
53985      var swiper = this;
53986      var $el = swiper.$el;
53987      var slides = swiper.slides;
53988      slides
53989        .transition(duration)
53990        .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')
53991        .transition(duration);
53992      if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {
53993        $el.find('.swiper-cube-shadow').transition(duration);
53994      }
53995    },
53996  };
53997
53998  var EffectCube = {
53999    name: 'effect-cube',
54000    params: {
54001      cubeEffect: {
54002        slideShadows: true,
54003        shadow: true,
54004        shadowOffset: 20,
54005        shadowScale: 0.94,
54006      },
54007    },
54008    create: function create() {
54009      var swiper = this;
54010      Utils.extend(swiper, {
54011        cubeEffect: {
54012          setTranslate: Cube.setTranslate.bind(swiper),
54013          setTransition: Cube.setTransition.bind(swiper),
54014        },
54015      });
54016    },
54017    on: {
54018      beforeInit: function beforeInit() {
54019        var swiper = this;
54020        if (swiper.params.effect !== 'cube') { return; }
54021        swiper.classNames.push(((swiper.params.containerModifierClass) + "cube"));
54022        swiper.classNames.push(((swiper.params.containerModifierClass) + "3d"));
54023        var overwriteParams = {
54024          slidesPerView: 1,
54025          slidesPerColumn: 1,
54026          slidesPerGroup: 1,
54027          watchSlidesProgress: true,
54028          resistanceRatio: 0,
54029          spaceBetween: 0,
54030          centeredSlides: false,
54031          virtualTranslate: true,
54032        };
54033        Utils.extend(swiper.params, overwriteParams);
54034        Utils.extend(swiper.originalParams, overwriteParams);
54035      },
54036      setTranslate: function setTranslate() {
54037        var swiper = this;
54038        if (swiper.params.effect !== 'cube') { return; }
54039        swiper.cubeEffect.setTranslate();
54040      },
54041      setTransition: function setTransition(duration) {
54042        var swiper = this;
54043        if (swiper.params.effect !== 'cube') { return; }
54044        swiper.cubeEffect.setTransition(duration);
54045      },
54046    },
54047  };
54048
54049  var Flip = {
54050    setTranslate: function setTranslate() {
54051      var swiper = this;
54052      var slides = swiper.slides;
54053      var rtl = swiper.rtlTranslate;
54054      for (var i = 0; i < slides.length; i += 1) {
54055        var $slideEl = slides.eq(i);
54056        var progress = $slideEl[0].progress;
54057        if (swiper.params.flipEffect.limitRotation) {
54058          progress = Math.max(Math.min($slideEl[0].progress, 1), -1);
54059        }
54060        var offset = $slideEl[0].swiperSlideOffset;
54061        var rotate = -180 * progress;
54062        var rotateY = rotate;
54063        var rotateX = 0;
54064        var tx = -offset;
54065        var ty = 0;
54066        if (!swiper.isHorizontal()) {
54067          ty = tx;
54068          tx = 0;
54069          rotateX = -rotateY;
54070          rotateY = 0;
54071        } else if (rtl) {
54072          rotateY = -rotateY;
54073        }
54074
54075        $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;
54076
54077        if (swiper.params.flipEffect.slideShadows) {
54078          // Set shadows
54079          var shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
54080          var shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
54081          if (shadowBefore.length === 0) {
54082            shadowBefore = $(("<div class=\"swiper-slide-shadow-" + (swiper.isHorizontal() ? 'left' : 'top') + "\"></div>"));
54083            $slideEl.append(shadowBefore);
54084          }
54085          if (shadowAfter.length === 0) {
54086            shadowAfter = $(("<div class=\"swiper-slide-shadow-" + (swiper.isHorizontal() ? 'right' : 'bottom') + "\"></div>"));
54087            $slideEl.append(shadowAfter);
54088          }
54089          if (shadowBefore.length) { shadowBefore[0].style.opacity = Math.max(-progress, 0); }
54090          if (shadowAfter.length) { shadowAfter[0].style.opacity = Math.max(progress, 0); }
54091        }
54092        $slideEl
54093          .transform(("translate3d(" + tx + "px, " + ty + "px, 0px) rotateX(" + rotateX + "deg) rotateY(" + rotateY + "deg)"));
54094      }
54095    },
54096    setTransition: function setTransition(duration) {
54097      var swiper = this;
54098      var slides = swiper.slides;
54099      var activeIndex = swiper.activeIndex;
54100      var $wrapperEl = swiper.$wrapperEl;
54101      slides
54102        .transition(duration)
54103        .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')
54104        .transition(duration);
54105      if (swiper.params.virtualTranslate && duration !== 0) {
54106        var eventTriggered = false;
54107        // eslint-disable-next-line
54108        slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {
54109          if (eventTriggered) { return; }
54110          if (!swiper || swiper.destroyed) { return; }
54111          // if (!$(this).hasClass(swiper.params.slideActiveClass)) return;
54112          eventTriggered = true;
54113          swiper.animating = false;
54114          var triggerEvents = ['webkitTransitionEnd', 'transitionend'];
54115          for (var i = 0; i < triggerEvents.length; i += 1) {
54116            $wrapperEl.trigger(triggerEvents[i]);
54117          }
54118        });
54119      }
54120    },
54121  };
54122
54123  var EffectFlip = {
54124    name: 'effect-flip',
54125    params: {
54126      flipEffect: {
54127        slideShadows: true,
54128        limitRotation: true,
54129      },
54130    },
54131    create: function create() {
54132      var swiper = this;
54133      Utils.extend(swiper, {
54134        flipEffect: {
54135          setTranslate: Flip.setTranslate.bind(swiper),
54136          setTransition: Flip.setTransition.bind(swiper),
54137        },
54138      });
54139    },
54140    on: {
54141      beforeInit: function beforeInit() {
54142        var swiper = this;
54143        if (swiper.params.effect !== 'flip') { return; }
54144        swiper.classNames.push(((swiper.params.containerModifierClass) + "flip"));
54145        swiper.classNames.push(((swiper.params.containerModifierClass) + "3d"));
54146        var overwriteParams = {
54147          slidesPerView: 1,
54148          slidesPerColumn: 1,
54149          slidesPerGroup: 1,
54150          watchSlidesProgress: true,
54151          spaceBetween: 0,
54152          virtualTranslate: true,
54153        };
54154        Utils.extend(swiper.params, overwriteParams);
54155        Utils.extend(swiper.originalParams, overwriteParams);
54156      },
54157      setTranslate: function setTranslate() {
54158        var swiper = this;
54159        if (swiper.params.effect !== 'flip') { return; }
54160        swiper.flipEffect.setTranslate();
54161      },
54162      setTransition: function setTransition(duration) {
54163        var swiper = this;
54164        if (swiper.params.effect !== 'flip') { return; }
54165        swiper.flipEffect.setTransition(duration);
54166      },
54167    },
54168  };
54169
54170  var Coverflow = {
54171    setTranslate: function setTranslate() {
54172      var swiper = this;
54173      var swiperWidth = swiper.width;
54174      var swiperHeight = swiper.height;
54175      var slides = swiper.slides;
54176      var $wrapperEl = swiper.$wrapperEl;
54177      var slidesSizesGrid = swiper.slidesSizesGrid;
54178      var params = swiper.params.coverflowEffect;
54179      var isHorizontal = swiper.isHorizontal();
54180      var transform = swiper.translate;
54181      var center = isHorizontal ? -transform + (swiperWidth / 2) : -transform + (swiperHeight / 2);
54182      var rotate = isHorizontal ? params.rotate : -params.rotate;
54183      var translate = params.depth;
54184      // Each slide offset from center
54185      for (var i = 0, length = slides.length; i < length; i += 1) {
54186        var $slideEl = slides.eq(i);
54187        var slideSize = slidesSizesGrid[i];
54188        var slideOffset = $slideEl[0].swiperSlideOffset;
54189        var offsetMultiplier = ((center - slideOffset - (slideSize / 2)) / slideSize) * params.modifier;
54190
54191        var rotateY = isHorizontal ? rotate * offsetMultiplier : 0;
54192        var rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;
54193        // var rotateZ = 0
54194        var translateZ = -translate * Math.abs(offsetMultiplier);
54195
54196        var translateY = isHorizontal ? 0 : params.stretch * (offsetMultiplier);
54197        var translateX = isHorizontal ? params.stretch * (offsetMultiplier) : 0;
54198
54199        // Fix for ultra small values
54200        if (Math.abs(translateX) < 0.001) { translateX = 0; }
54201        if (Math.abs(translateY) < 0.001) { translateY = 0; }
54202        if (Math.abs(translateZ) < 0.001) { translateZ = 0; }
54203        if (Math.abs(rotateY) < 0.001) { rotateY = 0; }
54204        if (Math.abs(rotateX) < 0.001) { rotateX = 0; }
54205
54206        var slideTransform = "translate3d(" + translateX + "px," + translateY + "px," + translateZ + "px)  rotateX(" + rotateX + "deg) rotateY(" + rotateY + "deg)";
54207
54208        $slideEl.transform(slideTransform);
54209        $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;
54210        if (params.slideShadows) {
54211          // Set shadows
54212          var $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
54213          var $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
54214          if ($shadowBeforeEl.length === 0) {
54215            $shadowBeforeEl = $(("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'left' : 'top') + "\"></div>"));
54216            $slideEl.append($shadowBeforeEl);
54217          }
54218          if ($shadowAfterEl.length === 0) {
54219            $shadowAfterEl = $(("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'right' : 'bottom') + "\"></div>"));
54220            $slideEl.append($shadowAfterEl);
54221          }
54222          if ($shadowBeforeEl.length) { $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; }
54223          if ($shadowAfterEl.length) { $shadowAfterEl[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0; }
54224        }
54225      }
54226
54227      // Set correct perspective for IE10
54228      if (Support.pointerEvents || Support.prefixedPointerEvents) {
54229        var ws = $wrapperEl[0].style;
54230        ws.perspectiveOrigin = center + "px 50%";
54231      }
54232    },
54233    setTransition: function setTransition(duration) {
54234      var swiper = this;
54235      swiper.slides
54236        .transition(duration)
54237        .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')
54238        .transition(duration);
54239    },
54240  };
54241
54242  var EffectCoverflow = {
54243    name: 'effect-coverflow',
54244    params: {
54245      coverflowEffect: {
54246        rotate: 50,
54247        stretch: 0,
54248        depth: 100,
54249        modifier: 1,
54250        slideShadows: true,
54251      },
54252    },
54253    create: function create() {
54254      var swiper = this;
54255      Utils.extend(swiper, {
54256        coverflowEffect: {
54257          setTranslate: Coverflow.setTranslate.bind(swiper),
54258          setTransition: Coverflow.setTransition.bind(swiper),
54259        },
54260      });
54261    },
54262    on: {
54263      beforeInit: function beforeInit() {
54264        var swiper = this;
54265        if (swiper.params.effect !== 'coverflow') { return; }
54266
54267        swiper.classNames.push(((swiper.params.containerModifierClass) + "coverflow"));
54268        swiper.classNames.push(((swiper.params.containerModifierClass) + "3d"));
54269
54270        swiper.params.watchSlidesProgress = true;
54271        swiper.originalParams.watchSlidesProgress = true;
54272      },
54273      setTranslate: function setTranslate() {
54274        var swiper = this;
54275        if (swiper.params.effect !== 'coverflow') { return; }
54276        swiper.coverflowEffect.setTranslate();
54277      },
54278      setTransition: function setTransition(duration) {
54279        var swiper = this;
54280        if (swiper.params.effect !== 'coverflow') { return; }
54281        swiper.coverflowEffect.setTransition(duration);
54282      },
54283    },
54284  };
54285
54286  var Thumbs = {
54287    init: function init() {
54288      var swiper = this;
54289      var ref = swiper.params;
54290      var thumbsParams = ref.thumbs;
54291      var SwiperClass = swiper.constructor;
54292      if (thumbsParams.swiper instanceof SwiperClass) {
54293        swiper.thumbs.swiper = thumbsParams.swiper;
54294        Utils.extend(swiper.thumbs.swiper.originalParams, {
54295          watchSlidesProgress: true,
54296          slideToClickedSlide: false,
54297        });
54298        Utils.extend(swiper.thumbs.swiper.params, {
54299          watchSlidesProgress: true,
54300          slideToClickedSlide: false,
54301        });
54302      } else if (Utils.isObject(thumbsParams.swiper)) {
54303        swiper.thumbs.swiper = new SwiperClass(Utils.extend({}, thumbsParams.swiper, {
54304          watchSlidesVisibility: true,
54305          watchSlidesProgress: true,
54306          slideToClickedSlide: false,
54307        }));
54308        swiper.thumbs.swiperCreated = true;
54309      }
54310      swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);
54311      swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick);
54312    },
54313    onThumbClick: function onThumbClick() {
54314      var swiper = this;
54315      var thumbsSwiper = swiper.thumbs.swiper;
54316      if (!thumbsSwiper) { return; }
54317      var clickedIndex = thumbsSwiper.clickedIndex;
54318      var clickedSlide = thumbsSwiper.clickedSlide;
54319      if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) { return; }
54320      if (typeof clickedIndex === 'undefined' || clickedIndex === null) { return; }
54321      var slideToIndex;
54322      if (thumbsSwiper.params.loop) {
54323        slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);
54324      } else {
54325        slideToIndex = clickedIndex;
54326      }
54327      if (swiper.params.loop) {
54328        var currentIndex = swiper.activeIndex;
54329        if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {
54330          swiper.loopFix();
54331          // eslint-disable-next-line
54332          swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
54333          currentIndex = swiper.activeIndex;
54334        }
54335        var prevIndex = swiper.slides.eq(currentIndex).prevAll(("[data-swiper-slide-index=\"" + slideToIndex + "\"]")).eq(0).index();
54336        var nextIndex = swiper.slides.eq(currentIndex).nextAll(("[data-swiper-slide-index=\"" + slideToIndex + "\"]")).eq(0).index();
54337        if (typeof prevIndex === 'undefined') { slideToIndex = nextIndex; }
54338        else if (typeof nextIndex === 'undefined') { slideToIndex = prevIndex; }
54339        else if (nextIndex - currentIndex < currentIndex - prevIndex) { slideToIndex = nextIndex; }
54340        else { slideToIndex = prevIndex; }
54341      }
54342      swiper.slideTo(slideToIndex);
54343    },
54344    update: function update(initial) {
54345      var swiper = this;
54346      var thumbsSwiper = swiper.thumbs.swiper;
54347      if (!thumbsSwiper) { return; }
54348
54349      var slidesPerView = thumbsSwiper.params.slidesPerView === 'auto'
54350        ? thumbsSwiper.slidesPerViewDynamic()
54351        : thumbsSwiper.params.slidesPerView;
54352
54353      if (swiper.realIndex !== thumbsSwiper.realIndex) {
54354        var currentThumbsIndex = thumbsSwiper.activeIndex;
54355        var newThumbsIndex;
54356        if (thumbsSwiper.params.loop) {
54357          if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {
54358            thumbsSwiper.loopFix();
54359            // eslint-disable-next-line
54360            thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;
54361            currentThumbsIndex = thumbsSwiper.activeIndex;
54362          }
54363          // Find actual thumbs index to slide to
54364          var prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll(("[data-swiper-slide-index=\"" + (swiper.realIndex) + "\"]")).eq(0).index();
54365          var nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll(("[data-swiper-slide-index=\"" + (swiper.realIndex) + "\"]")).eq(0).index();
54366          if (typeof prevThumbsIndex === 'undefined') { newThumbsIndex = nextThumbsIndex; }
54367          else if (typeof nextThumbsIndex === 'undefined') { newThumbsIndex = prevThumbsIndex; }
54368          else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) { newThumbsIndex = currentThumbsIndex; }
54369          else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) { newThumbsIndex = nextThumbsIndex; }
54370          else { newThumbsIndex = prevThumbsIndex; }
54371        } else {
54372          newThumbsIndex = swiper.realIndex;
54373        }
54374        if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {
54375          if (thumbsSwiper.params.centeredSlides) {
54376            if (newThumbsIndex > currentThumbsIndex) {
54377              newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;
54378            } else {
54379              newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;
54380            }
54381          } else if (newThumbsIndex > currentThumbsIndex) {
54382            newThumbsIndex = newThumbsIndex - slidesPerView + 1;
54383          }
54384          thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);
54385        }
54386      }
54387
54388      // Activate thumbs
54389      var thumbsToActivate = 1;
54390      var thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;
54391
54392      if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {
54393        thumbsToActivate = swiper.params.slidesPerView;
54394      }
54395
54396      thumbsSwiper.slides.removeClass(thumbActiveClass);
54397      if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual) {
54398        for (var i = 0; i < thumbsToActivate; i += 1) {
54399          thumbsSwiper.$wrapperEl.children(("[data-swiper-slide-index=\"" + (swiper.realIndex + i) + "\"]")).addClass(thumbActiveClass);
54400        }
54401      } else {
54402        for (var i$1 = 0; i$1 < thumbsToActivate; i$1 += 1) {
54403          thumbsSwiper.slides.eq(swiper.realIndex + i$1).addClass(thumbActiveClass);
54404        }
54405      }
54406    },
54407  };
54408  var Thumbs$1 = {
54409    name: 'thumbs',
54410    params: {
54411      thumbs: {
54412        swiper: null,
54413        slideThumbActiveClass: 'swiper-slide-thumb-active',
54414        thumbsContainerClass: 'swiper-container-thumbs',
54415      },
54416    },
54417    create: function create() {
54418      var swiper = this;
54419      Utils.extend(swiper, {
54420        thumbs: {
54421          swiper: null,
54422          init: Thumbs.init.bind(swiper),
54423          update: Thumbs.update.bind(swiper),
54424          onThumbClick: Thumbs.onThumbClick.bind(swiper),
54425        },
54426      });
54427    },
54428    on: {
54429      beforeInit: function beforeInit() {
54430        var swiper = this;
54431        var ref = swiper.params;
54432        var thumbs = ref.thumbs;
54433        if (!thumbs || !thumbs.swiper) { return; }
54434        swiper.thumbs.init();
54435        swiper.thumbs.update(true);
54436      },
54437      slideChange: function slideChange() {
54438        var swiper = this;
54439        if (!swiper.thumbs.swiper) { return; }
54440        swiper.thumbs.update();
54441      },
54442      update: function update() {
54443        var swiper = this;
54444        if (!swiper.thumbs.swiper) { return; }
54445        swiper.thumbs.update();
54446      },
54447      resize: function resize() {
54448        var swiper = this;
54449        if (!swiper.thumbs.swiper) { return; }
54450        swiper.thumbs.update();
54451      },
54452      observerUpdate: function observerUpdate() {
54453        var swiper = this;
54454        if (!swiper.thumbs.swiper) { return; }
54455        swiper.thumbs.update();
54456      },
54457      setTransition: function setTransition(duration) {
54458        var swiper = this;
54459        var thumbsSwiper = swiper.thumbs.swiper;
54460        if (!thumbsSwiper) { return; }
54461        thumbsSwiper.setTransition(duration);
54462      },
54463      beforeDestroy: function beforeDestroy() {
54464        var swiper = this;
54465        var thumbsSwiper = swiper.thumbs.swiper;
54466        if (!thumbsSwiper) { return; }
54467        if (swiper.thumbs.swiperCreated && thumbsSwiper) {
54468          thumbsSwiper.destroy();
54469        }
54470      },
54471    },
54472  };
54473
54474  // Swiper Class
54475
54476  var components = [
54477    Device$1,
54478    Support$1,
54479    Browser$1,
54480    Resize,
54481    Observer$1,
54482    Virtual$1,
54483    Keyboard$1,
54484    Mousewheel$1,
54485    Navigation$1,
54486    Pagination$1,
54487    Scrollbar$1,
54488    Parallax$1,
54489    Zoom$1,
54490    Lazy$1,
54491    Controller$1,
54492    A11y,
54493    History$1,
54494    HashNavigation$1,
54495    Autoplay$1,
54496    EffectFade,
54497    EffectCube,
54498    EffectFlip,
54499    EffectCoverflow,
54500    Thumbs$1
54501  ];
54502
54503  if (typeof Swiper.use === 'undefined') {
54504    Swiper.use = Swiper.Class.use;
54505    Swiper.installModule = Swiper.Class.installModule;
54506  }
54507
54508  Swiper.use(components);
54509
54510  return Swiper;
54511
54512}));
54513
54514
54515/***/ }),
54516
vendor: 6,148 bytes, lines 54517-54526
54517/***/ "./node_modules/vue-awesome-swiper/dist/vue-awesome-swiper.js":
54518/*!********************************************************************!*\
54519  !*** ./node_modules/vue-awesome-swiper/dist/vue-awesome-swiper.js ***!
54520  \********************************************************************/
54521/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
54522
54523!function(e,t){ true?module.exports=t(__webpack_require__(/*! swiper/dist/js/swiper.js */ "./node_modules/swiper/dist/js/swiper.js")):0}(this,function(e){return function(e){function t(i){if(n[i])return n[i].exports;var s=n[i]={i:i,l:!1,exports:{}};return e[i].call(s.exports,s,s.exports,t),s.l=!0,s.exports}var n={};return t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,i){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:i})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/",t(t.s=4)}([function(t,n){t.exports=e},function(e,t){e.exports=function(e,t,n,i,s,r){var o,a=e=e||{},u=typeof e.default;"object"!==u&&"function"!==u||(o=e,a=e.default);var p="function"==typeof a?a.options:a;t&&(p.render=t.render,p.staticRenderFns=t.staticRenderFns,p._compiled=!0),n&&(p.functional=!0),s&&(p._scopeId=s);var l;if(r?(l=function(e){e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,e||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),i&&i.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(r)},p._ssrRegister=l):i&&(l=i),l){var c=p.functional,d=c?p.render:p.beforeCreate;c?(p._injectStyles=l,p.render=function(e,t){return l.call(t),d(e,t)}):p.beforeCreate=d?[].concat(d,l):[l]}return{esModule:o,exports:a,options:p}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(5),s=n.n(i),r=n(8),o=n(1),a=o(s.a,r.a,!1,null,null,null);t.default=a.exports},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(6),s=n.n(i),r=n(7),o=n(1),a=o(s.a,r.a,!1,null,null,null);t.default=a.exports},function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.install=t.swiperSlide=t.swiper=t.Swiper=void 0;var s=n(0),r=i(s),o=n(2),a=i(o),u=n(3),p=i(u),l=window.Swiper||r.default,c=p.default,d=a.default,f=function(e,t){t&&(p.default.props.globalOptions.default=function(){return t}),e.component(p.default.name,p.default),e.component(a.default.name,a.default)},h={Swiper:l,swiper:c,swiperSlide:d,install:f};t.default=h,t.Swiper=l,t.swiper=c,t.swiperSlide=d,t.install=f},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"swiper-slide",data:function(){return{slideClass:"swiper-slide"}},ready:function(){this.update()},mounted:function(){this.update(),this.$parent&&this.$parent.options&&this.$parent.options.slideClass&&(this.slideClass=this.$parent.options.slideClass)},updated:function(){this.update()},attached:function(){this.update()},methods:{update:function(){this.$parent&&this.$parent.swiper&&this.$parent.update()}}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(0),s=function(e){return e&&e.__esModule?e:{default:e}}(i),r=window.Swiper||s.default;"function"!=typeof Object.assign&&Object.defineProperty(Object,"assign",{value:function(e,t){if(null==e)throw new TypeError("Cannot convert undefined or null to object");for(var n=Object(e),i=1;i<arguments.length;i++){var s=arguments[i];if(null!=s)for(var r in s)Object.prototype.hasOwnProperty.call(s,r)&&(n[r]=s[r])}return n},writable:!0,configurable:!0});var o=["beforeDestroy","slideChange","slideChangeTransitionStart","slideChangeTransitionEnd","slideNextTransitionStart","slideNextTransitionEnd","slidePrevTransitionStart","slidePrevTransitionEnd","transitionStart","transitionEnd","touchStart","touchMove","touchMoveOpposite","sliderMove","touchEnd","click","tap","doubleTap","imagesReady","progress","reachBeginning","reachEnd","fromEdge","setTranslate","setTransition","resize"];t.default={name:"swiper",props:{options:{type:Object,default:function(){return{}}},globalOptions:{type:Object,required:!1,default:function(){return{}}}},data:function(){return{swiper:null,classes:{wrapperClass:"swiper-wrapper"}}},ready:function(){this.swiper||this.mountInstance()},mounted:function(){if(!this.swiper){var e=!1;for(var t in this.classes)this.classes.hasOwnProperty(t)&&this.options[t]&&(e=!0,this.classes[t]=this.options[t]);e?this.$nextTick(this.mountInstance):this.mountInstance()}},activated:function(){this.update()},updated:function(){this.update()},beforeDestroy:function(){this.$nextTick(function(){this.swiper&&(this.swiper.destroy&&this.swiper.destroy(),delete this.swiper)})},methods:{update:function(){this.swiper&&(this.swiper.update&&this.swiper.update(),this.swiper.navigation&&this.swiper.navigation.update(),this.swiper.pagination&&this.swiper.pagination.render(),this.swiper.pagination&&this.swiper.pagination.update())},mountInstance:function(){var e=Object.assign({},this.globalOptions,this.options);this.swiper=new r(this.$el,e),this.bindEvents(),this.$emit("ready",this.swiper)},bindEvents:function(){var e=this,t=this;o.forEach(function(n){e.swiper.on(n,function(){t.$emit.apply(t,[n].concat(Array.prototype.slice.call(arguments))),t.$emit.apply(t,[n.replace(/([A-Z])/g,"-$1").toLowerCase()].concat(Array.prototype.slice.call(arguments)))})})}}}},function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"swiper-container"},[e._t("parallax-bg"),e._v(" "),n("div",{class:e.classes.wrapperClass},[e._t("default")],2),e._v(" "),e._t("pagination"),e._v(" "),e._t("button-prev"),e._v(" "),e._t("button-next"),e._v(" "),e._t("scrollbar")],2)},s=[],r={render:i,staticRenderFns:s};t.a=r},function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement;return(e._self._c||t)("div",{class:e.slideClass},[e._t("default")],2)},s=[],r={render:i,staticRenderFns:s};t.a=r}])});
54524
54525/***/ }),
54526
54527/***/ "./resources/js/components/ChatMessage.vue":
54528/*!*************************************************!*\
54529  !*** ./resources/js/components/ChatMessage.vue ***!
54530  \*************************************************/
54531/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
54532
54533"use strict";
54534__webpack_require__.r(__webpack_exports__);
54535/* harmony export */ __webpack_require__.d(__webpack_exports__, {
54536/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
54537/* harmony export */ });
54538/* harmony import */ var _ChatMessage_vue_vue_type_template_id_7812acf4__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ChatMessage.vue?vue&type=template&id=7812acf4 */ "./resources/js/components/ChatMessage.vue?vue&type=template&id=7812acf4");
54539/* harmony import */ var _ChatMessage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ChatMessage.vue?vue&type=script&lang=js */ "./resources/js/components/ChatMessage.vue?vue&type=script&lang=js");
54540/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
54541
54542
54543
54544
54545
54546/* normalize component */
54547;
54548var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
54549  _ChatMessage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
54550  _ChatMessage_vue_vue_type_template_id_7812acf4__WEBPACK_IMPORTED_MODULE_0__.render,
54551  _ChatMessage_vue_vue_type_template_id_7812acf4__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
54552  false,
54553  null,
54554  null,
54555  null
54556  
54557)
54558
54559/* hot reload */
54560if (false) { var api; }
54561component.options.__file = "resources/js/components/ChatMessage.vue"
54562/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
54563
54564/***/ }),
54565
54566/***/ "./resources/js/components/ChatRoom.vue":
54567/*!**********************************************!*\
54568  !*** ./resources/js/components/ChatRoom.vue ***!
54569  \**********************************************/
54570/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
54571
54572"use strict";
54573__webpack_require__.r(__webpack_exports__);
54574/* harmony export */ __webpack_require__.d(__webpack_exports__, {
54575/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
54576/* harmony export */ });
54577/* harmony import */ var _ChatRoom_vue_vue_type_template_id_4926d03e__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ChatRoom.vue?vue&type=template&id=4926d03e */ "./resources/js/components/ChatRoom.vue?vue&type=template&id=4926d03e");
54578/* harmony import */ var _ChatRoom_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ChatRoom.vue?vue&type=script&lang=js */ "./resources/js/components/ChatRoom.vue?vue&type=script&lang=js");
54579/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
54580
54581
54582
54583
54584
54585/* normalize component */
54586;
54587var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
54588  _ChatRoom_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
54589  _ChatRoom_vue_vue_type_template_id_4926d03e__WEBPACK_IMPORTED_MODULE_0__.render,
54590  _ChatRoom_vue_vue_type_template_id_4926d03e__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
54591  false,
54592  null,
54593  null,
54594  null
54595  
54596)
54597
54598/* hot reload */
54599if (false) { var api; }
54600component.options.__file = "resources/js/components/ChatRoom.vue"
54601/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
54602
54603/***/ }),
54604
54605/***/ "./resources/js/components/ChatRoomList.vue":
54606/*!**************************************************!*\
54607  !*** ./resources/js/components/ChatRoomList.vue ***!
54608  \**************************************************/
54609/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
54610
54611"use strict";
54612__webpack_require__.r(__webpack_exports__);
54613/* harmony export */ __webpack_require__.d(__webpack_exports__, {
54614/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
54615/* harmony export */ });
54616/* harmony import */ var _ChatRoomList_vue_vue_type_template_id_36db22fc__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ChatRoomList.vue?vue&type=template&id=36db22fc */ "./resources/js/components/ChatRoomList.vue?vue&type=template&id=36db22fc");
54617/* harmony import */ var _ChatRoomList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ChatRoomList.vue?vue&type=script&lang=js */ "./resources/js/components/ChatRoomList.vue?vue&type=script&lang=js");
54618/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
54619
54620
54621
54622
54623
54624/* normalize component */
54625;
54626var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
54627  _ChatRoomList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
54628  _ChatRoomList_vue_vue_type_template_id_36db22fc__WEBPACK_IMPORTED_MODULE_0__.render,
54629  _ChatRoomList_vue_vue_type_template_id_36db22fc__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
54630  false,
54631  null,
54632  null,
54633  null
54634  
54635)
54636
54637/* hot reload */
54638if (false) { var api; }
54639component.options.__file = "resources/js/components/ChatRoomList.vue"
54640/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
54641
54642/***/ }),
54643
54644/***/ "./resources/js/components/ChatRoomSetting.vue":
54645/*!*****************************************************!*\
54646  !*** ./resources/js/components/ChatRoomSetting.vue ***!
54647  \*****************************************************/
54648/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
54649
54650"use strict";
54651__webpack_require__.r(__webpack_exports__);
54652/* harmony export */ __webpack_require__.d(__webpack_exports__, {
54653/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
54654/* harmony export */ });
54655/* harmony import */ var _ChatRoomSetting_vue_vue_type_template_id_c1cfc73c__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ChatRoomSetting.vue?vue&type=template&id=c1cfc73c */ "./resources/js/components/ChatRoomSetting.vue?vue&type=template&id=c1cfc73c");
54656/* harmony import */ var _ChatRoomSetting_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ChatRoomSetting.vue?vue&type=script&lang=js */ "./resources/js/components/ChatRoomSetting.vue?vue&type=script&lang=js");
54657/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
54658
54659
54660
54661
54662
54663/* normalize component */
54664;
54665var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
54666  _ChatRoomSetting_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
54667  _ChatRoomSetting_vue_vue_type_template_id_c1cfc73c__WEBPACK_IMPORTED_MODULE_0__.render,
54668  _ChatRoomSetting_vue_vue_type_template_id_c1cfc73c__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
54669  false,
54670  null,
54671  null,
54672  null
54673  
54674)
54675
54676/* hot reload */
54677if (false) { var api; }
54678component.options.__file = "resources/js/components/ChatRoomSetting.vue"
54679/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
54680
54681/***/ }),
54682
54683/***/ "./resources/js/components/ChatSelectUserModal.vue":
54684/*!*********************************************************!*\
54685  !*** ./resources/js/components/ChatSelectUserModal.vue ***!
54686  \*********************************************************/
54687/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
54688
54689"use strict";
54690__webpack_require__.r(__webpack_exports__);
54691/* harmony export */ __webpack_require__.d(__webpack_exports__, {
54692/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
54693/* harmony export */ });
54694/* harmony import */ var _ChatSelectUserModal_vue_vue_type_template_id_2cd7071a__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ChatSelectUserModal.vue?vue&type=template&id=2cd7071a */ "./resources/js/components/ChatSelectUserModal.vue?vue&type=template&id=2cd7071a");
54695/* harmony import */ var _ChatSelectUserModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ChatSelectUserModal.vue?vue&type=script&lang=js */ "./resources/js/components/ChatSelectUserModal.vue?vue&type=script&lang=js");
54696/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
54697
54698
54699
54700
54701
54702/* normalize component */
54703;
54704var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
54705  _ChatSelectUserModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
54706  _ChatSelectUserModal_vue_vue_type_template_id_2cd7071a__WEBPACK_IMPORTED_MODULE_0__.render,
54707  _ChatSelectUserModal_vue_vue_type_template_id_2cd7071a__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
54708  false,
54709  null,
54710  null,
54711  null
54712  
54713)
54714
54715/* hot reload */
54716if (false) { var api; }
54717component.options.__file = "resources/js/components/ChatSelectUserModal.vue"
54718/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
54719
54720/***/ }),
54721
54722/***/ "./resources/js/components/ChatZoominModal.vue":
54723/*!*****************************************************!*\
54724  !*** ./resources/js/components/ChatZoominModal.vue ***!
54725  \*****************************************************/
54726/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
54727
54728"use strict";
54729__webpack_require__.r(__webpack_exports__);
54730/* harmony export */ __webpack_require__.d(__webpack_exports__, {
54731/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
54732/* harmony export */ });
54733/* harmony import */ var _ChatZoominModal_vue_vue_type_template_id_13f548c2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ChatZoominModal.vue?vue&type=template&id=13f548c2 */ "./resources/js/components/ChatZoominModal.vue?vue&type=template&id=13f548c2");
54734/* harmony import */ var _ChatZoominModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ChatZoominModal.vue?vue&type=script&lang=js */ "./resources/js/components/ChatZoominModal.vue?vue&type=script&lang=js");
54735/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
54736
54737
54738
54739
54740
54741/* normalize component */
54742;
54743var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
54744  _ChatZoominModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
54745  _ChatZoominModal_vue_vue_type_template_id_13f548c2__WEBPACK_IMPORTED_MODULE_0__.render,
54746  _ChatZoominModal_vue_vue_type_template_id_13f548c2__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
54747  false,
54748  null,
54749  null,
54750  null
54751  
54752)
54753
54754/* hot reload */
54755if (false) { var api; }
54756component.options.__file = "resources/js/components/ChatZoominModal.vue"
54757/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
54758
54759/***/ }),
54760
54761/***/ "./resources/js/components/CollectList.vue":
54762/*!*************************************************!*\
54763  !*** ./resources/js/components/CollectList.vue ***!
54764  \*************************************************/
54765/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
54766
54767"use strict";
54768__webpack_require__.r(__webpack_exports__);
54769/* harmony export */ __webpack_require__.d(__webpack_exports__, {
54770/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
54771/* harmony export */ });
54772/* harmony import */ var _CollectList_vue_vue_type_template_id_318b27cd__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CollectList.vue?vue&type=template&id=318b27cd */ "./resources/js/components/CollectList.vue?vue&type=template&id=318b27cd");
54773/* harmony import */ var _CollectList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./CollectList.vue?vue&type=script&lang=js */ "./resources/js/components/CollectList.vue?vue&type=script&lang=js");
54774/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
54775
54776
54777
54778
54779
54780/* normalize component */
54781;
54782var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
54783  _CollectList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
54784  _CollectList_vue_vue_type_template_id_318b27cd__WEBPACK_IMPORTED_MODULE_0__.render,
54785  _CollectList_vue_vue_type_template_id_318b27cd__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
54786  false,
54787  null,
54788  null,
54789  null
54790  
54791)
54792
54793/* hot reload */
54794if (false) { var api; }
54795component.options.__file = "resources/js/components/CollectList.vue"
54796/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
54797
54798/***/ }),
54799
54800/***/ "./resources/js/components/CompleteModal.vue":
54801/*!***************************************************!*\
54802  !*** ./resources/js/components/CompleteModal.vue ***!
54803  \***************************************************/
54804/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
54805
54806"use strict";
54807__webpack_require__.r(__webpack_exports__);
54808/* harmony export */ __webpack_require__.d(__webpack_exports__, {
54809/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
54810/* harmony export */ });
54811/* harmony import */ var _CompleteModal_vue_vue_type_template_id_7dcd3699__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CompleteModal.vue?vue&type=template&id=7dcd3699 */ "./resources/js/components/CompleteModal.vue?vue&type=template&id=7dcd3699");
54812/* harmony import */ var _CompleteModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./CompleteModal.vue?vue&type=script&lang=js */ "./resources/js/components/CompleteModal.vue?vue&type=script&lang=js");
54813/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
54814
54815
54816
54817
54818
54819/* normalize component */
54820;
54821var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
54822  _CompleteModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
54823  _CompleteModal_vue_vue_type_template_id_7dcd3699__WEBPACK_IMPORTED_MODULE_0__.render,
54824  _CompleteModal_vue_vue_type_template_id_7dcd3699__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
54825  false,
54826  null,
54827  null,
54828  null
54829  
54830)
54831
54832/* hot reload */
54833if (false) { var api; }
54834component.options.__file = "resources/js/components/CompleteModal.vue"
54835/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
54836
54837/***/ }),
54838
54839/***/ "./resources/js/components/CopyUrlButton.vue":
54840/*!***************************************************!*\
54841  !*** ./resources/js/components/CopyUrlButton.vue ***!
54842  \***************************************************/
54843/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
54844
54845"use strict";
54846__webpack_require__.r(__webpack_exports__);
54847/* harmony export */ __webpack_require__.d(__webpack_exports__, {
54848/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
54849/* harmony export */ });
54850/* harmony import */ var _CopyUrlButton_vue_vue_type_template_id_0493799e__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CopyUrlButton.vue?vue&type=template&id=0493799e */ "./resources/js/components/CopyUrlButton.vue?vue&type=template&id=0493799e");
54851/* harmony import */ var _CopyUrlButton_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./CopyUrlButton.vue?vue&type=script&lang=js */ "./resources/js/components/CopyUrlButton.vue?vue&type=script&lang=js");
54852/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
54853
54854
54855
54856
54857
54858/* normalize component */
54859;
54860var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
54861  _CopyUrlButton_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
54862  _CopyUrlButton_vue_vue_type_template_id_0493799e__WEBPACK_IMPORTED_MODULE_0__.render,
54863  _CopyUrlButton_vue_vue_type_template_id_0493799e__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
54864  false,
54865  null,
54866  null,
54867  null
54868  
54869)
54870
54871/* hot reload */
54872if (false) { var api; }
54873component.options.__file = "resources/js/components/CopyUrlButton.vue"
54874/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
54875
54876/***/ }),
54877
54878/***/ "./resources/js/components/Coupon.vue":
54879/*!********************************************!*\
54880  !*** ./resources/js/components/Coupon.vue ***!
54881  \********************************************/
54882/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
54883
54884"use strict";
54885__webpack_require__.r(__webpack_exports__);
54886/* harmony export */ __webpack_require__.d(__webpack_exports__, {
54887/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
54888/* harmony export */ });
54889/* harmony import */ var _Coupon_vue_vue_type_template_id_c253f95e__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Coupon.vue?vue&type=template&id=c253f95e */ "./resources/js/components/Coupon.vue?vue&type=template&id=c253f95e");
54890/* harmony import */ var _Coupon_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Coupon.vue?vue&type=script&lang=js */ "./resources/js/components/Coupon.vue?vue&type=script&lang=js");
54891/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
54892
54893
54894
54895
54896
54897/* normalize component */
54898;
54899var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
54900  _Coupon_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
54901  _Coupon_vue_vue_type_template_id_c253f95e__WEBPACK_IMPORTED_MODULE_0__.render,
54902  _Coupon_vue_vue_type_template_id_c253f95e__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
54903  false,
54904  null,
54905  null,
54906  null
54907  
54908)
54909
54910/* hot reload */
54911if (false) { var api; }
54912component.options.__file = "resources/js/components/Coupon.vue"
54913/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
54914
54915/***/ }),
54916
54917/***/ "./resources/js/components/CouponList.vue":
54918/*!************************************************!*\
54919  !*** ./resources/js/components/CouponList.vue ***!
54920  \************************************************/
54921/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
54922
54923"use strict";
54924__webpack_require__.r(__webpack_exports__);
54925/* harmony export */ __webpack_require__.d(__webpack_exports__, {
54926/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
54927/* harmony export */ });
54928/* harmony import */ var _CouponList_vue_vue_type_template_id_2676d6e2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CouponList.vue?vue&type=template&id=2676d6e2 */ "./resources/js/components/CouponList.vue?vue&type=template&id=2676d6e2");
54929/* harmony import */ var _CouponList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./CouponList.vue?vue&type=script&lang=js */ "./resources/js/components/CouponList.vue?vue&type=script&lang=js");
54930/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
54931
54932
54933
54934
54935
54936/* normalize component */
54937;
54938var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
54939  _CouponList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
54940  _CouponList_vue_vue_type_template_id_2676d6e2__WEBPACK_IMPORTED_MODULE_0__.render,
54941  _CouponList_vue_vue_type_template_id_2676d6e2__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
54942  false,
54943  null,
54944  null,
54945  null
54946  
54947)
54948
54949/* hot reload */
54950if (false) { var api; }
54951component.options.__file = "resources/js/components/CouponList.vue"
54952/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
54953
54954/***/ }),
54955
54956/***/ "./resources/js/components/NewUser.vue":
54957/*!*********************************************!*\
54958  !*** ./resources/js/components/NewUser.vue ***!
54959  \*********************************************/
54960/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
54961
54962"use strict";
54963__webpack_require__.r(__webpack_exports__);
54964/* harmony export */ __webpack_require__.d(__webpack_exports__, {
54965/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
54966/* harmony export */ });
54967/* harmony import */ var _NewUser_vue_vue_type_template_id_1283a570__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./NewUser.vue?vue&type=template&id=1283a570 */ "./resources/js/components/NewUser.vue?vue&type=template&id=1283a570");
54968/* harmony import */ var _NewUser_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./NewUser.vue?vue&type=script&lang=js */ "./resources/js/components/NewUser.vue?vue&type=script&lang=js");
54969/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
54970
54971
54972
54973
54974
54975/* normalize component */
54976;
54977var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
54978  _NewUser_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
54979  _NewUser_vue_vue_type_template_id_1283a570__WEBPACK_IMPORTED_MODULE_0__.render,
54980  _NewUser_vue_vue_type_template_id_1283a570__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
54981  false,
54982  null,
54983  null,
54984  null
54985  
54986)
54987
54988/* hot reload */
54989if (false) { var api; }
54990component.options.__file = "resources/js/components/NewUser.vue"
54991/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
54992
54993/***/ }),
54994
54995/***/ "./resources/js/components/Post.vue":
54996/*!******************************************!*\
54997  !*** ./resources/js/components/Post.vue ***!
54998  \******************************************/
54999/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
55000
55001"use strict";
55002__webpack_require__.r(__webpack_exports__);
55003/* harmony export */ __webpack_require__.d(__webpack_exports__, {
55004/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
55005/* harmony export */ });
55006/* harmony import */ var _Post_vue_vue_type_template_id_5e8280ea__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Post.vue?vue&type=template&id=5e8280ea */ "./resources/js/components/Post.vue?vue&type=template&id=5e8280ea");
55007/* harmony import */ var _Post_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Post.vue?vue&type=script&lang=js */ "./resources/js/components/Post.vue?vue&type=script&lang=js");
55008/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
55009
55010
55011
55012
55013
55014/* normalize component */
55015;
55016var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
55017  _Post_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
55018  _Post_vue_vue_type_template_id_5e8280ea__WEBPACK_IMPORTED_MODULE_0__.render,
55019  _Post_vue_vue_type_template_id_5e8280ea__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
55020  false,
55021  null,
55022  null,
55023  null
55024  
55025)
55026
55027/* hot reload */
55028if (false) { var api; }
55029component.options.__file = "resources/js/components/Post.vue"
55030/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
55031
55032/***/ }),
55033
55034/***/ "./resources/js/components/PostComment.vue":
55035/*!*************************************************!*\
55036  !*** ./resources/js/components/PostComment.vue ***!
55037  \*************************************************/
55038/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
55039
55040"use strict";
55041__webpack_require__.r(__webpack_exports__);
55042/* harmony export */ __webpack_require__.d(__webpack_exports__, {
55043/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
55044/* harmony export */ });
55045/* harmony import */ var _PostComment_vue_vue_type_template_id_a82be5f8__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./PostComment.vue?vue&type=template&id=a82be5f8 */ "./resources/js/components/PostComment.vue?vue&type=template&id=a82be5f8");
55046/* harmony import */ var _PostComment_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./PostComment.vue?vue&type=script&lang=js */ "./resources/js/components/PostComment.vue?vue&type=script&lang=js");
55047/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
55048
55049
55050
55051
55052
55053/* normalize component */
55054;
55055var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
55056  _PostComment_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
55057  _PostComment_vue_vue_type_template_id_a82be5f8__WEBPACK_IMPORTED_MODULE_0__.render,
55058  _PostComment_vue_vue_type_template_id_a82be5f8__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
55059  false,
55060  null,
55061  null,
55062  null
55063  
55064)
55065
55066/* hot reload */
55067if (false) { var api; }
55068component.options.__file = "resources/js/components/PostComment.vue"
55069/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
55070
55071/***/ }),
55072
55073/***/ "./resources/js/components/PostCommentList.vue":
55074/*!*****************************************************!*\
55075  !*** ./resources/js/components/PostCommentList.vue ***!
55076  \*****************************************************/
55077/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
55078
55079"use strict";
55080__webpack_require__.r(__webpack_exports__);
55081/* harmony export */ __webpack_require__.d(__webpack_exports__, {
55082/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
55083/* harmony export */ });
55084/* harmony import */ var _PostCommentList_vue_vue_type_template_id_4ef2e67c__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./PostCommentList.vue?vue&type=template&id=4ef2e67c */ "./resources/js/components/PostCommentList.vue?vue&type=template&id=4ef2e67c");
55085/* harmony import */ var _PostCommentList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./PostCommentList.vue?vue&type=script&lang=js */ "./resources/js/components/PostCommentList.vue?vue&type=script&lang=js");
55086/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
55087
55088
55089
55090
55091
55092/* normalize component */
55093;
55094var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
55095  _PostCommentList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
55096  _PostCommentList_vue_vue_type_template_id_4ef2e67c__WEBPACK_IMPORTED_MODULE_0__.render,
55097  _PostCommentList_vue_vue_type_template_id_4ef2e67c__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
55098  false,
55099  null,
55100  null,
55101  null
55102  
55103)
55104
55105/* hot reload */
55106if (false) { var api; }
55107component.options.__file = "resources/js/components/PostCommentList.vue"
55108/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
55109
55110/***/ }),
55111
55112/***/ "./resources/js/components/PostList.vue":
55113/*!**********************************************!*\
55114  !*** ./resources/js/components/PostList.vue ***!
55115  \**********************************************/
55116/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
55117
55118"use strict";
55119__webpack_require__.r(__webpack_exports__);
55120/* harmony export */ __webpack_require__.d(__webpack_exports__, {
55121/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
55122/* harmony export */ });
55123/* harmony import */ var _PostList_vue_vue_type_template_id_4720a3c9__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./PostList.vue?vue&type=template&id=4720a3c9 */ "./resources/js/components/PostList.vue?vue&type=template&id=4720a3c9");
55124/* harmony import */ var _PostList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./PostList.vue?vue&type=script&lang=js */ "./resources/js/components/PostList.vue?vue&type=script&lang=js");
55125/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
55126
55127
55128
55129
55130
55131/* normalize component */
55132;
55133var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
55134  _PostList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
55135  _PostList_vue_vue_type_template_id_4720a3c9__WEBPACK_IMPORTED_MODULE_0__.render,
55136  _PostList_vue_vue_type_template_id_4720a3c9__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
55137  false,
55138  null,
55139  null,
55140  null
55141  
55142)
55143
55144/* hot reload */
55145if (false) { var api; }
55146component.options.__file = "resources/js/components/PostList.vue"
55147/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
55148
55149/***/ }),
55150
55151/***/ "./resources/js/components/PostReplyList.vue":
55152/*!***************************************************!*\
55153  !*** ./resources/js/components/PostReplyList.vue ***!
55154  \***************************************************/
55155/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
55156
55157"use strict";
55158__webpack_require__.r(__webpack_exports__);
55159/* harmony export */ __webpack_require__.d(__webpack_exports__, {
55160/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
55161/* harmony export */ });
55162/* harmony import */ var _PostReplyList_vue_vue_type_template_id_6c6a54e6__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./PostReplyList.vue?vue&type=template&id=6c6a54e6 */ "./resources/js/components/PostReplyList.vue?vue&type=template&id=6c6a54e6");
55163/* harmony import */ var _PostReplyList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./PostReplyList.vue?vue&type=script&lang=js */ "./resources/js/components/PostReplyList.vue?vue&type=script&lang=js");
55164/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
55165
55166
55167
55168
55169
55170/* normalize component */
55171;
55172var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
55173  _PostReplyList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
55174  _PostReplyList_vue_vue_type_template_id_6c6a54e6__WEBPACK_IMPORTED_MODULE_0__.render,
55175  _PostReplyList_vue_vue_type_template_id_6c6a54e6__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
55176  false,
55177  null,
55178  null,
55179  null
55180  
55181)
55182
55183/* hot reload */
55184if (false) { var api; }
55185component.options.__file = "resources/js/components/PostReplyList.vue"
55186/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
55187
55188/***/ }),
55189
55190/***/ "./resources/js/components/ProfileEditModal.vue":
55191/*!******************************************************!*\
55192  !*** ./resources/js/components/ProfileEditModal.vue ***!
55193  \******************************************************/
55194/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
55195
55196"use strict";
55197__webpack_require__.r(__webpack_exports__);
55198/* harmony export */ __webpack_require__.d(__webpack_exports__, {
55199/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
55200/* harmony export */ });
55201/* harmony import */ var _ProfileEditModal_vue_vue_type_template_id_1d27ac85_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ProfileEditModal.vue?vue&type=template&id=1d27ac85&scoped=true */ "./resources/js/components/ProfileEditModal.vue?vue&type=template&id=1d27ac85&scoped=true");
55202/* harmony import */ var _ProfileEditModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ProfileEditModal.vue?vue&type=script&lang=js */ "./resources/js/components/ProfileEditModal.vue?vue&type=script&lang=js");
55203/* harmony import */ var _ProfileEditModal_vue_vue_type_style_index_0_id_1d27ac85_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ProfileEditModal.vue?vue&type=style&index=0&id=1d27ac85&scoped=true&lang=css */ "./resources/js/components/ProfileEditModal.vue?vue&type=style&index=0&id=1d27ac85&scoped=true&lang=css");
55204/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
55205
55206
55207
55208;
55209
55210
55211/* normalize component */
55212
55213var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__["default"])(
55214  _ProfileEditModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
55215  _ProfileEditModal_vue_vue_type_template_id_1d27ac85_scoped_true__WEBPACK_IMPORTED_MODULE_0__.render,
55216  _ProfileEditModal_vue_vue_type_template_id_1d27ac85_scoped_true__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
55217  false,
55218  null,
55219  "1d27ac85",
55220  null
55221  
55222)
55223
55224/* hot reload */
55225if (false) { var api; }
55226component.options.__file = "resources/js/components/ProfileEditModal.vue"
55227/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
55228
55229/***/ }),
55230
55231/***/ "./resources/js/components/ReportDetailModal.vue":
55232/*!*******************************************************!*\
55233  !*** ./resources/js/components/ReportDetailModal.vue ***!
55234  \*******************************************************/
55235/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
55236
55237"use strict";
55238__webpack_require__.r(__webpack_exports__);
55239/* harmony export */ __webpack_require__.d(__webpack_exports__, {
55240/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
55241/* harmony export */ });
55242/* harmony import */ var _ReportDetailModal_vue_vue_type_template_id_4c0c502d__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ReportDetailModal.vue?vue&type=template&id=4c0c502d */ "./resources/js/components/ReportDetailModal.vue?vue&type=template&id=4c0c502d");
55243/* harmony import */ var _ReportDetailModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ReportDetailModal.vue?vue&type=script&lang=js */ "./resources/js/components/ReportDetailModal.vue?vue&type=script&lang=js");
55244/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
55245
55246
55247
55248
55249
55250/* normalize component */
55251;
55252var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
55253  _ReportDetailModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
55254  _ReportDetailModal_vue_vue_type_template_id_4c0c502d__WEBPACK_IMPORTED_MODULE_0__.render,
55255  _ReportDetailModal_vue_vue_type_template_id_4c0c502d__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
55256  false,
55257  null,
55258  null,
55259  null
55260  
55261)
55262
55263/* hot reload */
55264if (false) { var api; }
55265component.options.__file = "resources/js/components/ReportDetailModal.vue"
55266/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
55267
55268/***/ }),
55269
55270/***/ "./resources/js/components/ReportModal.vue":
55271/*!*************************************************!*\
55272  !*** ./resources/js/components/ReportModal.vue ***!
55273  \*************************************************/
55274/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
55275
55276"use strict";
55277__webpack_require__.r(__webpack_exports__);
55278/* harmony export */ __webpack_require__.d(__webpack_exports__, {
55279/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
55280/* harmony export */ });
55281/* harmony import */ var _ReportModal_vue_vue_type_template_id_9bdf8784__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ReportModal.vue?vue&type=template&id=9bdf8784 */ "./resources/js/components/ReportModal.vue?vue&type=template&id=9bdf8784");
55282/* harmony import */ var _ReportModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ReportModal.vue?vue&type=script&lang=js */ "./resources/js/components/ReportModal.vue?vue&type=script&lang=js");
55283/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
55284
55285
55286
55287
55288
55289/* normalize component */
55290;
55291var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
55292  _ReportModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
55293  _ReportModal_vue_vue_type_template_id_9bdf8784__WEBPACK_IMPORTED_MODULE_0__.render,
55294  _ReportModal_vue_vue_type_template_id_9bdf8784__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
55295  false,
55296  null,
55297  null,
55298  null
55299  
55300)
55301
55302/* hot reload */
55303if (false) { var api; }
55304component.options.__file = "resources/js/components/ReportModal.vue"
55305/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
55306
55307/***/ }),
55308
55309/***/ "./resources/js/components/SocialCompleteModal.vue":
55310/*!*********************************************************!*\
55311  !*** ./resources/js/components/SocialCompleteModal.vue ***!
55312  \*********************************************************/
55313/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
55314
55315"use strict";
55316__webpack_require__.r(__webpack_exports__);
55317/* harmony export */ __webpack_require__.d(__webpack_exports__, {
55318/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
55319/* harmony export */ });
55320/* harmony import */ var _SocialCompleteModal_vue_vue_type_template_id_3235c8ec__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialCompleteModal.vue?vue&type=template&id=3235c8ec */ "./resources/js/components/SocialCompleteModal.vue?vue&type=template&id=3235c8ec");
55321/* harmony import */ var _SocialCompleteModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialCompleteModal.vue?vue&type=script&lang=js */ "./resources/js/components/SocialCompleteModal.vue?vue&type=script&lang=js");
55322/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
55323
55324
55325
55326
55327
55328/* normalize component */
55329;
55330var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
55331  _SocialCompleteModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
55332  _SocialCompleteModal_vue_vue_type_template_id_3235c8ec__WEBPACK_IMPORTED_MODULE_0__.render,
55333  _SocialCompleteModal_vue_vue_type_template_id_3235c8ec__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
55334  false,
55335  null,
55336  null,
55337  null
55338  
55339)
55340
55341/* hot reload */
55342if (false) { var api; }
55343component.options.__file = "resources/js/components/SocialCompleteModal.vue"
55344/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
55345
55346/***/ }),
55347
55348/***/ "./resources/js/components/SocialConfirmModal.vue":
55349/*!********************************************************!*\
55350  !*** ./resources/js/components/SocialConfirmModal.vue ***!
55351  \********************************************************/
55352/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
55353
55354"use strict";
55355__webpack_require__.r(__webpack_exports__);
55356/* harmony export */ __webpack_require__.d(__webpack_exports__, {
55357/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
55358/* harmony export */ });
55359/* harmony import */ var _SocialConfirmModal_vue_vue_type_template_id_6b7b7885__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialConfirmModal.vue?vue&type=template&id=6b7b7885 */ "./resources/js/components/SocialConfirmModal.vue?vue&type=template&id=6b7b7885");
55360/* harmony import */ var _SocialConfirmModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialConfirmModal.vue?vue&type=script&lang=js */ "./resources/js/components/SocialConfirmModal.vue?vue&type=script&lang=js");
55361/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
55362
55363
55364
55365
55366
55367/* normalize component */
55368;
55369var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
55370  _SocialConfirmModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
55371  _SocialConfirmModal_vue_vue_type_template_id_6b7b7885__WEBPACK_IMPORTED_MODULE_0__.render,
55372  _SocialConfirmModal_vue_vue_type_template_id_6b7b7885__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
55373  false,
55374  null,
55375  null,
55376  null
55377  
55378)
55379
55380/* hot reload */
55381if (false) { var api; }
55382component.options.__file = "resources/js/components/SocialConfirmModal.vue"
55383/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
55384
55385/***/ }),
55386
55387/***/ "./resources/js/components/SocialContent.vue":
55388/*!***************************************************!*\
55389  !*** ./resources/js/components/SocialContent.vue ***!
55390  \***************************************************/
55391/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
55392
55393"use strict";
55394__webpack_require__.r(__webpack_exports__);
55395/* harmony export */ __webpack_require__.d(__webpack_exports__, {
55396/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
55397/* harmony export */ });
55398/* harmony import */ var _SocialContent_vue_vue_type_template_id_49d905f1__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialContent.vue?vue&type=template&id=49d905f1 */ "./resources/js/components/SocialContent.vue?vue&type=template&id=49d905f1");
55399/* harmony import */ var _SocialContent_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialContent.vue?vue&type=script&lang=js */ "./resources/js/components/SocialContent.vue?vue&type=script&lang=js");
55400/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
55401
55402
55403
55404
55405
55406/* normalize component */
55407;
55408var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
55409  _SocialContent_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
55410  _SocialContent_vue_vue_type_template_id_49d905f1__WEBPACK_IMPORTED_MODULE_0__.render,
55411  _SocialContent_vue_vue_type_template_id_49d905f1__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
55412  false,
55413  null,
55414  null,
55415  null
55416  
55417)
55418
55419/* hot reload */
55420if (false) { var api; }
55421component.options.__file = "resources/js/components/SocialContent.vue"
55422/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
55423
55424/***/ }),
55425
55426/***/ "./resources/js/components/SocialContentInput.vue":
55427/*!********************************************************!*\
55428  !*** ./resources/js/components/SocialContentInput.vue ***!
55429  \********************************************************/
55430/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
55431
55432"use strict";
55433__webpack_require__.r(__webpack_exports__);
55434/* harmony export */ __webpack_require__.d(__webpack_exports__, {
55435/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
55436/* harmony export */ });
55437/* harmony import */ var _SocialContentInput_vue_vue_type_template_id_d28fdcee__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialContentInput.vue?vue&type=template&id=d28fdcee */ "./resources/js/components/SocialContentInput.vue?vue&type=template&id=d28fdcee");
55438/* harmony import */ var _SocialContentInput_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialContentInput.vue?vue&type=script&lang=js */ "./resources/js/components/SocialContentInput.vue?vue&type=script&lang=js");
55439/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
55440
55441
55442
55443
55444
55445/* normalize component */
55446;
55447var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
55448  _SocialContentInput_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
55449  _SocialContentInput_vue_vue_type_template_id_d28fdcee__WEBPACK_IMPORTED_MODULE_0__.render,
55450  _SocialContentInput_vue_vue_type_template_id_d28fdcee__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
55451  false,
55452  null,
55453  null,
55454  null
55455  
55456)
55457
55458/* hot reload */
55459if (false) { var api; }
55460component.options.__file = "resources/js/components/SocialContentInput.vue"
55461/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
55462
55463/***/ }),
55464
55465/***/ "./resources/js/components/SocialControlModal.vue":
55466/*!********************************************************!*\
55467  !*** ./resources/js/components/SocialControlModal.vue ***!
55468  \********************************************************/
55469/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
55470
55471"use strict";
55472__webpack_require__.r(__webpack_exports__);
55473/* harmony export */ __webpack_require__.d(__webpack_exports__, {
55474/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
55475/* harmony export */ });
55476/* harmony import */ var _SocialControlModal_vue_vue_type_template_id_08ed1a88__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialControlModal.vue?vue&type=template&id=08ed1a88 */ "./resources/js/components/SocialControlModal.vue?vue&type=template&id=08ed1a88");
55477/* harmony import */ var _SocialControlModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialControlModal.vue?vue&type=script&lang=js */ "./resources/js/components/SocialControlModal.vue?vue&type=script&lang=js");
55478/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
55479
55480
55481
55482
55483
55484/* normalize component */
55485;
55486var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
55487  _SocialControlModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
55488  _SocialControlModal_vue_vue_type_template_id_08ed1a88__WEBPACK_IMPORTED_MODULE_0__.render,
55489  _SocialControlModal_vue_vue_type_template_id_08ed1a88__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
55490  false,
55491  null,
55492  null,
55493  null
55494  
55495)
55496
55497/* hot reload */
55498if (false) { var api; }
55499component.options.__file = "resources/js/components/SocialControlModal.vue"
55500/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
55501
55502/***/ }),
55503
55504/***/ "./resources/js/components/SocialFileInput.vue":
55505/*!*****************************************************!*\
55506  !*** ./resources/js/components/SocialFileInput.vue ***!
55507  \*****************************************************/
55508/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
55509
55510"use strict";
55511__webpack_require__.r(__webpack_exports__);
55512/* harmony export */ __webpack_require__.d(__webpack_exports__, {
55513/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
55514/* harmony export */ });
55515/* harmony import */ var _SocialFileInput_vue_vue_type_template_id_6e6352b4__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialFileInput.vue?vue&type=template&id=6e6352b4 */ "./resources/js/components/SocialFileInput.vue?vue&type=template&id=6e6352b4");
55516/* harmony import */ var _SocialFileInput_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialFileInput.vue?vue&type=script&lang=js */ "./resources/js/components/SocialFileInput.vue?vue&type=script&lang=js");
55517/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
55518
55519
55520
55521
55522
55523/* normalize component */
55524;
55525var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
55526  _SocialFileInput_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
55527  _SocialFileInput_vue_vue_type_template_id_6e6352b4__WEBPACK_IMPORTED_MODULE_0__.render,
55528  _SocialFileInput_vue_vue_type_template_id_6e6352b4__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
55529  false,
55530  null,
55531  null,
55532  null
55533  
55534)
55535
55536/* hot reload */
55537if (false) { var api; }
55538component.options.__file = "resources/js/components/SocialFileInput.vue"
55539/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
55540
55541/***/ }),
55542
55543/***/ "./resources/js/components/SocialFirstModal.vue":
55544/*!******************************************************!*\
55545  !*** ./resources/js/components/SocialFirstModal.vue ***!
55546  \******************************************************/
55547/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
55548
55549"use strict";
55550__webpack_require__.r(__webpack_exports__);
55551/* harmony export */ __webpack_require__.d(__webpack_exports__, {
55552/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
55553/* harmony export */ });
55554/* harmony import */ var _SocialFirstModal_vue_vue_type_template_id_f244bad6__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialFirstModal.vue?vue&type=template&id=f244bad6 */ "./resources/js/components/SocialFirstModal.vue?vue&type=template&id=f244bad6");
55555/* harmony import */ var _SocialFirstModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialFirstModal.vue?vue&type=script&lang=js */ "./resources/js/components/SocialFirstModal.vue?vue&type=script&lang=js");
55556/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
55557
55558
55559
55560
55561
55562/* normalize component */
55563;
55564var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
55565  _SocialFirstModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
55566  _SocialFirstModal_vue_vue_type_template_id_f244bad6__WEBPACK_IMPORTED_MODULE_0__.render,
55567  _SocialFirstModal_vue_vue_type_template_id_f244bad6__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
55568  false,
55569  null,
55570  null,
55571  null
55572  
55573)
55574
55575/* hot reload */
55576if (false) { var api; }
55577component.options.__file = "resources/js/components/SocialFirstModal.vue"
55578/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
55579
55580/***/ }),
55581
55582/***/ "./resources/js/components/SocialMessagePage.vue":
55583/*!*******************************************************!*\
55584  !*** ./resources/js/components/SocialMessagePage.vue ***!
55585  \*******************************************************/
55586/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
55587
55588"use strict";
55589__webpack_require__.r(__webpack_exports__);
55590/* harmony export */ __webpack_require__.d(__webpack_exports__, {
55591/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
55592/* harmony export */ });
55593/* harmony import */ var _SocialMessagePage_vue_vue_type_template_id_0578f62e__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialMessagePage.vue?vue&type=template&id=0578f62e */ "./resources/js/components/SocialMessagePage.vue?vue&type=template&id=0578f62e");
55594/* harmony import */ var _SocialMessagePage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialMessagePage.vue?vue&type=script&lang=js */ "./resources/js/components/SocialMessagePage.vue?vue&type=script&lang=js");
55595/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
55596
55597
55598
55599
55600
55601/* normalize component */
55602;
55603var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
55604  _SocialMessagePage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
55605  _SocialMessagePage_vue_vue_type_template_id_0578f62e__WEBPACK_IMPORTED_MODULE_0__.render,
55606  _SocialMessagePage_vue_vue_type_template_id_0578f62e__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
55607  false,
55608  null,
55609  null,
55610  null
55611  
55612)
55613
55614/* hot reload */
55615if (false) { var api; }
55616component.options.__file = "resources/js/components/SocialMessagePage.vue"
55617/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
55618
55619/***/ }),
55620
55621/***/ "./resources/js/components/SocialNavbar.vue":
55622/*!**************************************************!*\
55623  !*** ./resources/js/components/SocialNavbar.vue ***!
55624  \**************************************************/
55625/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
55626
55627"use strict";
55628__webpack_require__.r(__webpack_exports__);
55629/* harmony export */ __webpack_require__.d(__webpack_exports__, {
55630/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
55631/* harmony export */ });
55632/* harmony import */ var _SocialNavbar_vue_vue_type_template_id_06f35748__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialNavbar.vue?vue&type=template&id=06f35748 */ "./resources/js/components/SocialNavbar.vue?vue&type=template&id=06f35748");
55633/* harmony import */ var _SocialNavbar_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialNavbar.vue?vue&type=script&lang=js */ "./resources/js/components/SocialNavbar.vue?vue&type=script&lang=js");
55634/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
55635
55636
55637
55638
55639
55640/* normalize component */
55641;
55642var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
55643  _SocialNavbar_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
55644  _SocialNavbar_vue_vue_type_template_id_06f35748__WEBPACK_IMPORTED_MODULE_0__.render,
55645  _SocialNavbar_vue_vue_type_template_id_06f35748__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
55646  false,
55647  null,
55648  null,
55649  null
55650  
55651)
55652
55653/* hot reload */
55654if (false) { var api; }
55655component.options.__file = "resources/js/components/SocialNavbar.vue"
55656/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
55657
55658/***/ }),
55659
55660/***/ "./resources/js/components/SocialNotification.vue":
55661/*!********************************************************!*\
55662  !*** ./resources/js/components/SocialNotification.vue ***!
55663  \********************************************************/
55664/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
55665
55666"use strict";
55667__webpack_require__.r(__webpack_exports__);
55668/* harmony export */ __webpack_require__.d(__webpack_exports__, {
55669/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
55670/* harmony export */ });
55671/* harmony import */ var _SocialNotification_vue_vue_type_template_id_12bbe6a3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialNotification.vue?vue&type=template&id=12bbe6a3 */ "./resources/js/components/SocialNotification.vue?vue&type=template&id=12bbe6a3");
55672/* harmony import */ var _SocialNotification_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialNotification.vue?vue&type=script&lang=js */ "./resources/js/components/SocialNotification.vue?vue&type=script&lang=js");
55673/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
55674
55675
55676
55677
55678
55679/* normalize component */
55680;
55681var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
55682  _SocialNotification_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
55683  _SocialNotification_vue_vue_type_template_id_12bbe6a3__WEBPACK_IMPORTED_MODULE_0__.render,
55684  _SocialNotification_vue_vue_type_template_id_12bbe6a3__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
55685  false,
55686  null,
55687  null,
55688  null
55689  
55690)
55691
55692/* hot reload */
55693if (false) { var api; }
55694component.options.__file = "resources/js/components/SocialNotification.vue"
55695/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
55696
55697/***/ }),
55698
55699/***/ "./resources/js/components/SocialNotificationModal.vue":
55700/*!*************************************************************!*\
55701  !*** ./resources/js/components/SocialNotificationModal.vue ***!
55702  \*************************************************************/
55703/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
55704
55705"use strict";
55706__webpack_require__.r(__webpack_exports__);
55707/* harmony export */ __webpack_require__.d(__webpack_exports__, {
55708/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
55709/* harmony export */ });
55710/* harmony import */ var _SocialNotificationModal_vue_vue_type_template_id_d8136d0c__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialNotificationModal.vue?vue&type=template&id=d8136d0c */ "./resources/js/components/SocialNotificationModal.vue?vue&type=template&id=d8136d0c");
55711/* harmony import */ var _SocialNotificationModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialNotificationModal.vue?vue&type=script&lang=js */ "./resources/js/components/SocialNotificationModal.vue?vue&type=script&lang=js");
55712/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
55713
55714
55715
55716
55717
55718/* normalize component */
55719;
55720var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
55721  _SocialNotificationModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
55722  _SocialNotificationModal_vue_vue_type_template_id_d8136d0c__WEBPACK_IMPORTED_MODULE_0__.render,
55723  _SocialNotificationModal_vue_vue_type_template_id_d8136d0c__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
55724  false,
55725  null,
55726  null,
55727  null
55728  
55729)
55730
55731/* hot reload */
55732if (false) { var api; }
55733component.options.__file = "resources/js/components/SocialNotificationModal.vue"
55734/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
55735
55736/***/ }),
55737
55738/***/ "./resources/js/components/SocialPage.vue":
55739/*!************************************************!*\
55740  !*** ./resources/js/components/SocialPage.vue ***!
55741  \************************************************/
55742/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
55743
55744"use strict";
55745__webpack_require__.r(__webpack_exports__);
55746/* harmony export */ __webpack_require__.d(__webpack_exports__, {
55747/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
55748/* harmony export */ });
55749/* harmony import */ var _SocialPage_vue_vue_type_template_id_674a2372__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialPage.vue?vue&type=template&id=674a2372 */ "./resources/js/components/SocialPage.vue?vue&type=template&id=674a2372");
55750/* harmony import */ var _SocialPage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialPage.vue?vue&type=script&lang=js */ "./resources/js/components/SocialPage.vue?vue&type=script&lang=js");
55751/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
55752
55753
55754
55755
55756
55757/* normalize component */
55758;
55759var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
55760  _SocialPage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
55761  _SocialPage_vue_vue_type_template_id_674a2372__WEBPACK_IMPORTED_MODULE_0__.render,
55762  _SocialPage_vue_vue_type_template_id_674a2372__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
55763  false,
55764  null,
55765  null,
55766  null
55767  
55768)
55769
55770/* hot reload */
55771if (false) { var api; }
55772component.options.__file = "resources/js/components/SocialPage.vue"
55773/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
55774
55775/***/ }),
55776
55777/***/ "./resources/js/components/SocialPlaceModal.vue":
55778/*!******************************************************!*\
55779  !*** ./resources/js/components/SocialPlaceModal.vue ***!
55780  \******************************************************/
55781/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
55782
55783"use strict";
55784__webpack_require__.r(__webpack_exports__);
55785/* harmony export */ __webpack_require__.d(__webpack_exports__, {
55786/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
55787/* harmony export */ });
55788/* harmony import */ var _SocialPlaceModal_vue_vue_type_template_id_03abce1e__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialPlaceModal.vue?vue&type=template&id=03abce1e */ "./resources/js/components/SocialPlaceModal.vue?vue&type=template&id=03abce1e");
55789/* harmony import */ var _SocialPlaceModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialPlaceModal.vue?vue&type=script&lang=js */ "./resources/js/components/SocialPlaceModal.vue?vue&type=script&lang=js");
55790/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
55791
55792
55793
55794
55795
55796/* normalize component */
55797;
55798var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
55799  _SocialPlaceModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
55800  _SocialPlaceModal_vue_vue_type_template_id_03abce1e__WEBPACK_IMPORTED_MODULE_0__.render,
55801  _SocialPlaceModal_vue_vue_type_template_id_03abce1e__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
55802  false,
55803  null,
55804  null,
55805  null
55806  
55807)
55808
55809/* hot reload */
55810if (false) { var api; }
55811component.options.__file = "resources/js/components/SocialPlaceModal.vue"
55812/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
55813
55814/***/ }),
55815
55816/***/ "./resources/js/components/SocialPlacePage.vue":
55817/*!*****************************************************!*\
55818  !*** ./resources/js/components/SocialPlacePage.vue ***!
55819  \*****************************************************/
55820/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
55821
55822"use strict";
55823__webpack_require__.r(__webpack_exports__);
55824/* harmony export */ __webpack_require__.d(__webpack_exports__, {
55825/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
55826/* harmony export */ });
55827/* harmony import */ var _SocialPlacePage_vue_vue_type_template_id_8901b1a4__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialPlacePage.vue?vue&type=template&id=8901b1a4 */ "./resources/js/components/SocialPlacePage.vue?vue&type=template&id=8901b1a4");
55828/* harmony import */ var _SocialPlacePage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialPlacePage.vue?vue&type=script&lang=js */ "./resources/js/components/SocialPlacePage.vue?vue&type=script&lang=js");
55829/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
55830
55831
55832
55833
55834
55835/* normalize component */
55836;
55837var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
55838  _SocialPlacePage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
55839  _SocialPlacePage_vue_vue_type_template_id_8901b1a4__WEBPACK_IMPORTED_MODULE_0__.render,
55840  _SocialPlacePage_vue_vue_type_template_id_8901b1a4__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
55841  false,
55842  null,
55843  null,
55844  null
55845  
55846)
55847
55848/* hot reload */
55849if (false) { var api; }
55850component.options.__file = "resources/js/components/SocialPlacePage.vue"
55851/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
55852
55853/***/ }),
55854
55855/***/ "./resources/js/components/SocialPost.vue":
55856/*!************************************************!*\
55857  !*** ./resources/js/components/SocialPost.vue ***!
55858  \************************************************/
55859/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
55860
55861"use strict";
55862__webpack_require__.r(__webpack_exports__);
55863/* harmony export */ __webpack_require__.d(__webpack_exports__, {
55864/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
55865/* harmony export */ });
55866/* harmony import */ var _SocialPost_vue_vue_type_template_id_73809850__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialPost.vue?vue&type=template&id=73809850 */ "./resources/js/components/SocialPost.vue?vue&type=template&id=73809850");
55867/* harmony import */ var _SocialPost_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialPost.vue?vue&type=script&lang=js */ "./resources/js/components/SocialPost.vue?vue&type=script&lang=js");
55868/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
55869
55870
55871
55872
55873
55874/* normalize component */
55875;
55876var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
55877  _SocialPost_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
55878  _SocialPost_vue_vue_type_template_id_73809850__WEBPACK_IMPORTED_MODULE_0__.render,
55879  _SocialPost_vue_vue_type_template_id_73809850__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
55880  false,
55881  null,
55882  null,
55883  null
55884  
55885)
55886
55887/* hot reload */
55888if (false) { var api; }
55889component.options.__file = "resources/js/components/SocialPost.vue"
55890/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
55891
55892/***/ }),
55893
55894/***/ "./resources/js/components/SocialPostComment.vue":
55895/*!*******************************************************!*\
55896  !*** ./resources/js/components/SocialPostComment.vue ***!
55897  \*******************************************************/
55898/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
55899
55900"use strict";
55901__webpack_require__.r(__webpack_exports__);
55902/* harmony export */ __webpack_require__.d(__webpack_exports__, {
55903/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
55904/* harmony export */ });
55905/* harmony import */ var _SocialPostComment_vue_vue_type_template_id_63e91817__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialPostComment.vue?vue&type=template&id=63e91817 */ "./resources/js/components/SocialPostComment.vue?vue&type=template&id=63e91817");
55906/* harmony import */ var _SocialPostComment_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialPostComment.vue?vue&type=script&lang=js */ "./resources/js/components/SocialPostComment.vue?vue&type=script&lang=js");
55907/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
55908
55909
55910
55911
55912
55913/* normalize component */
55914;
55915var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
55916  _SocialPostComment_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
55917  _SocialPostComment_vue_vue_type_template_id_63e91817__WEBPACK_IMPORTED_MODULE_0__.render,
55918  _SocialPostComment_vue_vue_type_template_id_63e91817__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
55919  false,
55920  null,
55921  null,
55922  null
55923  
55924)
55925
55926/* hot reload */
55927if (false) { var api; }
55928component.options.__file = "resources/js/components/SocialPostComment.vue"
55929/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
55930
55931/***/ }),
55932
55933/***/ "./resources/js/components/SocialPostCommentList.vue":
55934/*!***********************************************************!*\
55935  !*** ./resources/js/components/SocialPostCommentList.vue ***!
55936  \***********************************************************/
55937/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
55938
55939"use strict";
55940__webpack_require__.r(__webpack_exports__);
55941/* harmony export */ __webpack_require__.d(__webpack_exports__, {
55942/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
55943/* harmony export */ });
55944/* harmony import */ var _SocialPostCommentList_vue_vue_type_template_id_1513d655__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialPostCommentList.vue?vue&type=template&id=1513d655 */ "./resources/js/components/SocialPostCommentList.vue?vue&type=template&id=1513d655");
55945/* harmony import */ var _SocialPostCommentList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialPostCommentList.vue?vue&type=script&lang=js */ "./resources/js/components/SocialPostCommentList.vue?vue&type=script&lang=js");
55946/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
55947
55948
55949
55950
55951
55952/* normalize component */
55953;
55954var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
55955  _SocialPostCommentList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
55956  _SocialPostCommentList_vue_vue_type_template_id_1513d655__WEBPACK_IMPORTED_MODULE_0__.render,
55957  _SocialPostCommentList_vue_vue_type_template_id_1513d655__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
55958  false,
55959  null,
55960  null,
55961  null
55962  
55963)
55964
55965/* hot reload */
55966if (false) { var api; }
55967component.options.__file = "resources/js/components/SocialPostCommentList.vue"
55968/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
55969
55970/***/ }),
55971
55972/***/ "./resources/js/components/SocialPostEditModal.vue":
55973/*!*********************************************************!*\
55974  !*** ./resources/js/components/SocialPostEditModal.vue ***!
55975  \*********************************************************/
55976/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
55977
55978"use strict";
55979__webpack_require__.r(__webpack_exports__);
55980/* harmony export */ __webpack_require__.d(__webpack_exports__, {
55981/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
55982/* harmony export */ });
55983/* harmony import */ var _SocialPostEditModal_vue_vue_type_template_id_7a44027b__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialPostEditModal.vue?vue&type=template&id=7a44027b */ "./resources/js/components/SocialPostEditModal.vue?vue&type=template&id=7a44027b");
55984/* harmony import */ var _SocialPostEditModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialPostEditModal.vue?vue&type=script&lang=js */ "./resources/js/components/SocialPostEditModal.vue?vue&type=script&lang=js");
55985/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
55986
55987
55988
55989
55990
55991/* normalize component */
55992;
55993var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
55994  _SocialPostEditModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
55995  _SocialPostEditModal_vue_vue_type_template_id_7a44027b__WEBPACK_IMPORTED_MODULE_0__.render,
55996  _SocialPostEditModal_vue_vue_type_template_id_7a44027b__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
55997  false,
55998  null,
55999  null,
56000  null
56001  
56002)
56003
56004/* hot reload */
56005if (false) { var api; }
56006component.options.__file = "resources/js/components/SocialPostEditModal.vue"
56007/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
56008
56009/***/ }),
56010
56011/***/ "./resources/js/components/SocialPostError.vue":
56012/*!*****************************************************!*\
56013  !*** ./resources/js/components/SocialPostError.vue ***!
56014  \*****************************************************/
56015/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
56016
56017"use strict";
56018__webpack_require__.r(__webpack_exports__);
56019/* harmony export */ __webpack_require__.d(__webpack_exports__, {
56020/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
56021/* harmony export */ });
56022/* harmony import */ var _SocialPostError_vue_vue_type_template_id_588b2740__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialPostError.vue?vue&type=template&id=588b2740 */ "./resources/js/components/SocialPostError.vue?vue&type=template&id=588b2740");
56023/* harmony import */ var _SocialPostError_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialPostError.vue?vue&type=script&lang=js */ "./resources/js/components/SocialPostError.vue?vue&type=script&lang=js");
56024/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
56025
56026
56027
56028
56029
56030/* normalize component */
56031;
56032var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
56033  _SocialPostError_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
56034  _SocialPostError_vue_vue_type_template_id_588b2740__WEBPACK_IMPORTED_MODULE_0__.render,
56035  _SocialPostError_vue_vue_type_template_id_588b2740__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
56036  false,
56037  null,
56038  null,
56039  null
56040  
56041)
56042
56043/* hot reload */
56044if (false) { var api; }
56045component.options.__file = "resources/js/components/SocialPostError.vue"
56046/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
56047
56048/***/ }),
56049
56050/***/ "./resources/js/components/SocialPostList.vue":
56051/*!****************************************************!*\
56052  !*** ./resources/js/components/SocialPostList.vue ***!
56053  \****************************************************/
56054/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
56055
56056"use strict";
56057__webpack_require__.r(__webpack_exports__);
56058/* harmony export */ __webpack_require__.d(__webpack_exports__, {
56059/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
56060/* harmony export */ });
56061/* harmony import */ var _SocialPostList_vue_vue_type_template_id_2176acd4__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialPostList.vue?vue&type=template&id=2176acd4 */ "./resources/js/components/SocialPostList.vue?vue&type=template&id=2176acd4");
56062/* harmony import */ var _SocialPostList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialPostList.vue?vue&type=script&lang=js */ "./resources/js/components/SocialPostList.vue?vue&type=script&lang=js");
56063/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
56064
56065
56066
56067
56068
56069/* normalize component */
56070;
56071var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
56072  _SocialPostList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
56073  _SocialPostList_vue_vue_type_template_id_2176acd4__WEBPACK_IMPORTED_MODULE_0__.render,
56074  _SocialPostList_vue_vue_type_template_id_2176acd4__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
56075  false,
56076  null,
56077  null,
56078  null
56079  
56080)
56081
56082/* hot reload */
56083if (false) { var api; }
56084component.options.__file = "resources/js/components/SocialPostList.vue"
56085/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
56086
56087/***/ }),
56088
56089/***/ "./resources/js/components/SocialPostPage.vue":
56090/*!****************************************************!*\
56091  !*** ./resources/js/components/SocialPostPage.vue ***!
56092  \****************************************************/
56093/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
56094
56095"use strict";
56096__webpack_require__.r(__webpack_exports__);
56097/* harmony export */ __webpack_require__.d(__webpack_exports__, {
56098/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
56099/* harmony export */ });
56100/* harmony import */ var _SocialPostPage_vue_vue_type_template_id_5b6c09f2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialPostPage.vue?vue&type=template&id=5b6c09f2 */ "./resources/js/components/SocialPostPage.vue?vue&type=template&id=5b6c09f2");
56101/* harmony import */ var _SocialPostPage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialPostPage.vue?vue&type=script&lang=js */ "./resources/js/components/SocialPostPage.vue?vue&type=script&lang=js");
56102/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
56103
56104
56105
56106
56107
56108/* normalize component */
56109;
56110var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
56111  _SocialPostPage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
56112  _SocialPostPage_vue_vue_type_template_id_5b6c09f2__WEBPACK_IMPORTED_MODULE_0__.render,
56113  _SocialPostPage_vue_vue_type_template_id_5b6c09f2__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
56114  false,
56115  null,
56116  null,
56117  null
56118  
56119)
56120
56121/* hot reload */
56122if (false) { var api; }
56123component.options.__file = "resources/js/components/SocialPostPage.vue"
56124/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
56125
56126/***/ }),
56127
56128/***/ "./resources/js/components/SocialPostReplyList.vue":
56129/*!*********************************************************!*\
56130  !*** ./resources/js/components/SocialPostReplyList.vue ***!
56131  \*********************************************************/
56132/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
56133
56134"use strict";
56135__webpack_require__.r(__webpack_exports__);
56136/* harmony export */ __webpack_require__.d(__webpack_exports__, {
56137/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
56138/* harmony export */ });
56139/* harmony import */ var _SocialPostReplyList_vue_vue_type_template_id_7e3367e0__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialPostReplyList.vue?vue&type=template&id=7e3367e0 */ "./resources/js/components/SocialPostReplyList.vue?vue&type=template&id=7e3367e0");
56140/* harmony import */ var _SocialPostReplyList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialPostReplyList.vue?vue&type=script&lang=js */ "./resources/js/components/SocialPostReplyList.vue?vue&type=script&lang=js");
56141/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
56142
56143
56144
56145
56146
56147/* normalize component */
56148;
56149var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
56150  _SocialPostReplyList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
56151  _SocialPostReplyList_vue_vue_type_template_id_7e3367e0__WEBPACK_IMPORTED_MODULE_0__.render,
56152  _SocialPostReplyList_vue_vue_type_template_id_7e3367e0__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
56153  false,
56154  null,
56155  null,
56156  null
56157  
56158)
56159
56160/* hot reload */
56161if (false) { var api; }
56162component.options.__file = "resources/js/components/SocialPostReplyList.vue"
56163/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
56164
56165/***/ }),
56166
56167/***/ "./resources/js/components/SocialSearchModal.vue":
56168/*!*******************************************************!*\
56169  !*** ./resources/js/components/SocialSearchModal.vue ***!
56170  \*******************************************************/
56171/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
56172
56173"use strict";
56174__webpack_require__.r(__webpack_exports__);
56175/* harmony export */ __webpack_require__.d(__webpack_exports__, {
56176/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
56177/* harmony export */ });
56178/* harmony import */ var _SocialSearchModal_vue_vue_type_template_id_970b0d46__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialSearchModal.vue?vue&type=template&id=970b0d46 */ "./resources/js/components/SocialSearchModal.vue?vue&type=template&id=970b0d46");
56179/* harmony import */ var _SocialSearchModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialSearchModal.vue?vue&type=script&lang=js */ "./resources/js/components/SocialSearchModal.vue?vue&type=script&lang=js");
56180/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
56181
56182
56183
56184
56185
56186/* normalize component */
56187;
56188var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
56189  _SocialSearchModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
56190  _SocialSearchModal_vue_vue_type_template_id_970b0d46__WEBPACK_IMPORTED_MODULE_0__.render,
56191  _SocialSearchModal_vue_vue_type_template_id_970b0d46__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
56192  false,
56193  null,
56194  null,
56195  null
56196  
56197)
56198
56199/* hot reload */
56200if (false) { var api; }
56201component.options.__file = "resources/js/components/SocialSearchModal.vue"
56202/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
56203
56204/***/ }),
56205
56206/***/ "./resources/js/components/SocialSelectUserModal.vue":
56207/*!***********************************************************!*\
56208  !*** ./resources/js/components/SocialSelectUserModal.vue ***!
56209  \***********************************************************/
56210/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
56211
56212"use strict";
56213__webpack_require__.r(__webpack_exports__);
56214/* harmony export */ __webpack_require__.d(__webpack_exports__, {
56215/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
56216/* harmony export */ });
56217/* harmony import */ var _SocialSelectUserModal_vue_vue_type_template_id_21ad6efe__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialSelectUserModal.vue?vue&type=template&id=21ad6efe */ "./resources/js/components/SocialSelectUserModal.vue?vue&type=template&id=21ad6efe");
56218/* harmony import */ var _SocialSelectUserModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialSelectUserModal.vue?vue&type=script&lang=js */ "./resources/js/components/SocialSelectUserModal.vue?vue&type=script&lang=js");
56219/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
56220
56221
56222
56223
56224
56225/* normalize component */
56226;
56227var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
56228  _SocialSelectUserModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
56229  _SocialSelectUserModal_vue_vue_type_template_id_21ad6efe__WEBPACK_IMPORTED_MODULE_0__.render,
56230  _SocialSelectUserModal_vue_vue_type_template_id_21ad6efe__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
56231  false,
56232  null,
56233  null,
56234  null
56235  
56236)
56237
56238/* hot reload */
56239if (false) { var api; }
56240component.options.__file = "resources/js/components/SocialSelectUserModal.vue"
56241/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
56242
56243/***/ }),
56244
56245/***/ "./resources/js/components/SocialShareModal.vue":
56246/*!******************************************************!*\
56247  !*** ./resources/js/components/SocialShareModal.vue ***!
56248  \******************************************************/
56249/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
56250
56251"use strict";
56252__webpack_require__.r(__webpack_exports__);
56253/* harmony export */ __webpack_require__.d(__webpack_exports__, {
56254/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
56255/* harmony export */ });
56256/* harmony import */ var _SocialShareModal_vue_vue_type_template_id_aec0eb74__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialShareModal.vue?vue&type=template&id=aec0eb74 */ "./resources/js/components/SocialShareModal.vue?vue&type=template&id=aec0eb74");
56257/* harmony import */ var _SocialShareModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialShareModal.vue?vue&type=script&lang=js */ "./resources/js/components/SocialShareModal.vue?vue&type=script&lang=js");
56258/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
56259
56260
56261
56262
56263
56264/* normalize component */
56265;
56266var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
56267  _SocialShareModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
56268  _SocialShareModal_vue_vue_type_template_id_aec0eb74__WEBPACK_IMPORTED_MODULE_0__.render,
56269  _SocialShareModal_vue_vue_type_template_id_aec0eb74__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
56270  false,
56271  null,
56272  null,
56273  null
56274  
56275)
56276
56277/* hot reload */
56278if (false) { var api; }
56279component.options.__file = "resources/js/components/SocialShareModal.vue"
56280/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
56281
56282/***/ }),
56283
56284/***/ "./resources/js/components/SocialTagPage.vue":
56285/*!***************************************************!*\
56286  !*** ./resources/js/components/SocialTagPage.vue ***!
56287  \***************************************************/
56288/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
56289
56290"use strict";
56291__webpack_require__.r(__webpack_exports__);
56292/* harmony export */ __webpack_require__.d(__webpack_exports__, {
56293/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
56294/* harmony export */ });
56295/* harmony import */ var _SocialTagPage_vue_vue_type_template_id_471d22c1__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialTagPage.vue?vue&type=template&id=471d22c1 */ "./resources/js/components/SocialTagPage.vue?vue&type=template&id=471d22c1");
56296/* harmony import */ var _SocialTagPage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialTagPage.vue?vue&type=script&lang=js */ "./resources/js/components/SocialTagPage.vue?vue&type=script&lang=js");
56297/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
56298
56299
56300
56301
56302
56303/* normalize component */
56304;
56305var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
56306  _SocialTagPage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
56307  _SocialTagPage_vue_vue_type_template_id_471d22c1__WEBPACK_IMPORTED_MODULE_0__.render,
56308  _SocialTagPage_vue_vue_type_template_id_471d22c1__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
56309  false,
56310  null,
56311  null,
56312  null
56313  
56314)
56315
56316/* hot reload */
56317if (false) { var api; }
56318component.options.__file = "resources/js/components/SocialTagPage.vue"
56319/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
56320
56321/***/ }),
56322
56323/***/ "./resources/js/components/SocialUpload.vue":
56324/*!**************************************************!*\
56325  !*** ./resources/js/components/SocialUpload.vue ***!
56326  \**************************************************/
56327/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
56328
56329"use strict";
56330__webpack_require__.r(__webpack_exports__);
56331/* harmony export */ __webpack_require__.d(__webpack_exports__, {
56332/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
56333/* harmony export */ });
56334/* harmony import */ var _SocialUpload_vue_vue_type_template_id_0517e8b9__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialUpload.vue?vue&type=template&id=0517e8b9 */ "./resources/js/components/SocialUpload.vue?vue&type=template&id=0517e8b9");
56335/* harmony import */ var _SocialUpload_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialUpload.vue?vue&type=script&lang=js */ "./resources/js/components/SocialUpload.vue?vue&type=script&lang=js");
56336/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
56337
56338
56339
56340
56341
56342/* normalize component */
56343;
56344var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
56345  _SocialUpload_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
56346  _SocialUpload_vue_vue_type_template_id_0517e8b9__WEBPACK_IMPORTED_MODULE_0__.render,
56347  _SocialUpload_vue_vue_type_template_id_0517e8b9__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
56348  false,
56349  null,
56350  null,
56351  null
56352  
56353)
56354
56355/* hot reload */
56356if (false) { var api; }
56357component.options.__file = "resources/js/components/SocialUpload.vue"
56358/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
56359
56360/***/ }),
56361
56362/***/ "./resources/js/components/SocialUploadFailModal.vue":
56363/*!***********************************************************!*\
56364  !*** ./resources/js/components/SocialUploadFailModal.vue ***!
56365  \***********************************************************/
56366/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
56367
56368"use strict";
56369__webpack_require__.r(__webpack_exports__);
56370/* harmony export */ __webpack_require__.d(__webpack_exports__, {
56371/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
56372/* harmony export */ });
56373/* harmony import */ var _SocialUploadFailModal_vue_vue_type_template_id_43154826__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialUploadFailModal.vue?vue&type=template&id=43154826 */ "./resources/js/components/SocialUploadFailModal.vue?vue&type=template&id=43154826");
56374/* harmony import */ var _SocialUploadFailModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialUploadFailModal.vue?vue&type=script&lang=js */ "./resources/js/components/SocialUploadFailModal.vue?vue&type=script&lang=js");
56375/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
56376
56377
56378
56379
56380
56381/* normalize component */
56382;
56383var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
56384  _SocialUploadFailModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
56385  _SocialUploadFailModal_vue_vue_type_template_id_43154826__WEBPACK_IMPORTED_MODULE_0__.render,
56386  _SocialUploadFailModal_vue_vue_type_template_id_43154826__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
56387  false,
56388  null,
56389  null,
56390  null
56391  
56392)
56393
56394/* hot reload */
56395if (false) { var api; }
56396component.options.__file = "resources/js/components/SocialUploadFailModal.vue"
56397/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
56398
56399/***/ }),
56400
56401/***/ "./resources/js/components/SocialUploadingModal.vue":
56402/*!**********************************************************!*\
56403  !*** ./resources/js/components/SocialUploadingModal.vue ***!
56404  \**********************************************************/
56405/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
56406
56407"use strict";
56408__webpack_require__.r(__webpack_exports__);
56409/* harmony export */ __webpack_require__.d(__webpack_exports__, {
56410/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
56411/* harmony export */ });
56412/* harmony import */ var _SocialUploadingModal_vue_vue_type_template_id_64a15a24__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialUploadingModal.vue?vue&type=template&id=64a15a24 */ "./resources/js/components/SocialUploadingModal.vue?vue&type=template&id=64a15a24");
56413/* harmony import */ var _SocialUploadingModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialUploadingModal.vue?vue&type=script&lang=js */ "./resources/js/components/SocialUploadingModal.vue?vue&type=script&lang=js");
56414/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
56415
56416
56417
56418
56419
56420/* normalize component */
56421;
56422var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
56423  _SocialUploadingModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
56424  _SocialUploadingModal_vue_vue_type_template_id_64a15a24__WEBPACK_IMPORTED_MODULE_0__.render,
56425  _SocialUploadingModal_vue_vue_type_template_id_64a15a24__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
56426  false,
56427  null,
56428  null,
56429  null
56430  
56431)
56432
56433/* hot reload */
56434if (false) { var api; }
56435component.options.__file = "resources/js/components/SocialUploadingModal.vue"
56436/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
56437
56438/***/ }),
56439
56440/***/ "./resources/js/components/SocialUserModal.vue":
56441/*!*****************************************************!*\
56442  !*** ./resources/js/components/SocialUserModal.vue ***!
56443  \*****************************************************/
56444/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
56445
56446"use strict";
56447__webpack_require__.r(__webpack_exports__);
56448/* harmony export */ __webpack_require__.d(__webpack_exports__, {
56449/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
56450/* harmony export */ });
56451/* harmony import */ var _SocialUserModal_vue_vue_type_template_id_ff06facc__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialUserModal.vue?vue&type=template&id=ff06facc */ "./resources/js/components/SocialUserModal.vue?vue&type=template&id=ff06facc");
56452/* harmony import */ var _SocialUserModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialUserModal.vue?vue&type=script&lang=js */ "./resources/js/components/SocialUserModal.vue?vue&type=script&lang=js");
56453/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
56454
56455
56456
56457
56458
56459/* normalize component */
56460;
56461var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
56462  _SocialUserModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
56463  _SocialUserModal_vue_vue_type_template_id_ff06facc__WEBPACK_IMPORTED_MODULE_0__.render,
56464  _SocialUserModal_vue_vue_type_template_id_ff06facc__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
56465  false,
56466  null,
56467  null,
56468  null
56469  
56470)
56471
56472/* hot reload */
56473if (false) { var api; }
56474component.options.__file = "resources/js/components/SocialUserModal.vue"
56475/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
56476
56477/***/ }),
56478
56479/***/ "./resources/js/components/SocialUserPage.vue":
56480/*!****************************************************!*\
56481  !*** ./resources/js/components/SocialUserPage.vue ***!
56482  \****************************************************/
56483/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
56484
56485"use strict";
56486__webpack_require__.r(__webpack_exports__);
56487/* harmony export */ __webpack_require__.d(__webpack_exports__, {
56488/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
56489/* harmony export */ });
56490/* harmony import */ var _SocialUserPage_vue_vue_type_template_id_7070199c__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SocialUserPage.vue?vue&type=template&id=7070199c */ "./resources/js/components/SocialUserPage.vue?vue&type=template&id=7070199c");
56491/* harmony import */ var _SocialUserPage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SocialUserPage.vue?vue&type=script&lang=js */ "./resources/js/components/SocialUserPage.vue?vue&type=script&lang=js");
56492/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
56493
56494
56495
56496
56497
56498/* normalize component */
56499;
56500var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
56501  _SocialUserPage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
56502  _SocialUserPage_vue_vue_type_template_id_7070199c__WEBPACK_IMPORTED_MODULE_0__.render,
56503  _SocialUserPage_vue_vue_type_template_id_7070199c__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
56504  false,
56505  null,
56506  null,
56507  null
56508  
56509)
56510
56511/* hot reload */
56512if (false) { var api; }
56513component.options.__file = "resources/js/components/SocialUserPage.vue"
56514/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
56515
56516/***/ }),
56517
56518/***/ "./resources/js/components/TimeFormat.vue":
56519/*!************************************************!*\
56520  !*** ./resources/js/components/TimeFormat.vue ***!
56521  \************************************************/
56522/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
56523
56524"use strict";
56525__webpack_require__.r(__webpack_exports__);
56526/* harmony export */ __webpack_require__.d(__webpack_exports__, {
56527/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
56528/* harmony export */ });
56529/* harmony import */ var _TimeFormat_vue_vue_type_template_id_46dba3cf__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./TimeFormat.vue?vue&type=template&id=46dba3cf */ "./resources/js/components/TimeFormat.vue?vue&type=template&id=46dba3cf");
56530/* harmony import */ var _TimeFormat_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./TimeFormat.vue?vue&type=script&lang=js */ "./resources/js/components/TimeFormat.vue?vue&type=script&lang=js");
56531/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
56532
56533
56534
56535
56536
56537/* normalize component */
56538;
56539var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
56540  _TimeFormat_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
56541  _TimeFormat_vue_vue_type_template_id_46dba3cf__WEBPACK_IMPORTED_MODULE_0__.render,
56542  _TimeFormat_vue_vue_type_template_id_46dba3cf__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
56543  false,
56544  null,
56545  null,
56546  null
56547  
56548)
56549
56550/* hot reload */
56551if (false) { var api; }
56552component.options.__file = "resources/js/components/TimeFormat.vue"
56553/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
56554
56555/***/ }),
56556
56557/***/ "./resources/js/components/ChatMessage.vue?vue&type=script&lang=js":
56558/*!*************************************************************************!*\
56559  !*** ./resources/js/components/ChatMessage.vue?vue&type=script&lang=js ***!
56560  \*************************************************************************/
56561/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
56562
56563"use strict";
56564__webpack_require__.r(__webpack_exports__);
56565/* harmony export */ __webpack_require__.d(__webpack_exports__, {
56566/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
56567/* harmony export */ });
56568/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ChatMessage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChatMessage.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ChatMessage.vue?vue&type=script&lang=js");
56569 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ChatMessage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 
56570
56571/***/ }),
56572
56573/***/ "./resources/js/components/ChatRoom.vue?vue&type=script&lang=js":
56574/*!**********************************************************************!*\
56575  !*** ./resources/js/components/ChatRoom.vue?vue&type=script&lang=js ***!
56576  \**********************************************************************/
56577/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
56578
56579"use strict";
56580__webpack_require__.r(__webpack_exports__);
56581/* harmony export */ __webpack_require__.d(__webpack_exports__, {
56582/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
56583/* harmony export */ });
56584/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ChatRoom_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChatRoom.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ChatRoom.vue?vue&type=script&lang=js");
56585 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ChatRoom_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 
56586
56587/***/ }),
56588
56589/***/ "./resources/js/components/ChatRoomList.vue?vue&type=script&lang=js":
56590/*!**************************************************************************!*\
56591  !*** ./resources/js/components/ChatRoomList.vue?vue&type=script&lang=js ***!
56592  \**************************************************************************/
56593/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
56594
56595"use strict";
56596__webpack_require__.r(__webpack_exports__);
56597/* harmony export */ __webpack_require__.d(__webpack_exports__, {
56598/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
56599/* harmony export */ });
56600/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ChatRoomList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChatRoomList.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ChatRoomList.vue?vue&type=script&lang=js");
56601 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ChatRoomList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 
56602
56603/***/ }),
56604
56605/***/ "./resources/js/components/ChatRoomSetting.vue?vue&type=script&lang=js":
56606/*!*****************************************************************************!*\
56607  !*** ./resources/js/components/ChatRoomSetting.vue?vue&type=script&lang=js ***!
56608  \*****************************************************************************/
56609/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
56610
56611"use strict";
56612__webpack_require__.r(__webpack_exports__);
56613/* harmony export */ __webpack_require__.d(__webpack_exports__, {
56614/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
56615/* harmony export */ });
56616/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ChatRoomSetting_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChatRoomSetting.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ChatRoomSetting.vue?vue&type=script&lang=js");
56617 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ChatRoomSetting_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 
56618
56619/***/ }),
56620
56621/***/ "./resources/js/components/ChatSelectUserModal.vue?vue&type=script&lang=js":
56622/*!*********************************************************************************!*\
56623  !*** ./resources/js/components/ChatSelectUserModal.vue?vue&type=script&lang=js ***!
56624  \*********************************************************************************/
56625/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
56626
56627"use strict";
56628__webpack_require__.r(__webpack_exports__);
56629/* harmony export */ __webpack_require__.d(__webpack_exports__, {
56630/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
56631/* harmony export */ });
56632/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ChatSelectUserModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChatSelectUserModal.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ChatSelectUserModal.vue?vue&type=script&lang=js");
56633 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ChatSelectUserModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 
56634
56635/***/ }),
56636
56637/***/ "./resources/js/components/ChatZoominModal.vue?vue&type=script&lang=js":
56638/*!*****************************************************************************!*\
56639  !*** ./resources/js/components/ChatZoominModal.vue?vue&type=script&lang=js ***!
56640  \*****************************************************************************/
56641/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
56642
56643"use strict";
56644__webpack_require__.r(__webpack_exports__);
56645/* harmony export */ __webpack_require__.d(__webpack_exports__, {
56646/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
56647/* harmony export */ });
56648/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ChatZoominModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChatZoominModal.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ChatZoominModal.vue?vue&type=script&lang=js");
56649 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ChatZoominModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 
56650
56651/***/ }),
56652
56653/***/ "./resources/js/components/CollectList.vue?vue&type=script&lang=js":
56654/*!*************************************************************************!*\
56655  !*** ./resources/js/components/CollectList.vue?vue&type=script&lang=js ***!
56656  \*************************************************************************/
56657/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
56658
56659"use strict";
56660__webpack_require__.r(__webpack_exports__);
56661/* harmony export */ __webpack_require__.d(__webpack_exports__, {
56662/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
56663/* harmony export */ });
56664/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CollectList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CollectList.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/CollectList.vue?vue&type=script&lang=js");
56665 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CollectList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 
56666
56667/***/ }),
56668
56669/***/ "./resources/js/components/CompleteModal.vue?vue&type=script&lang=js":
56670/*!***************************************************************************!*\
56671  !*** ./resources/js/components/CompleteModal.vue?vue&type=script&lang=js ***!
56672  \***************************************************************************/
56673/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
56674
56675"use strict";
56676__webpack_require__.r(__webpack_exports__);
56677/* harmony export */ __webpack_require__.d(__webpack_exports__, {
56678/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
56679/* harmony export */ });
56680/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CompleteModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CompleteModal.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/CompleteModal.vue?vue&type=script&lang=js");
56681 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CompleteModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 
56682
56683/***/ }),
56684
56685/***/ "./resources/js/components/CopyUrlButton.vue?vue&type=script&lang=js":
56686/*!***************************************************************************!*\
56687  !*** ./resources/js/components/CopyUrlButton.vue?vue&type=script&lang=js ***!
56688  \***************************************************************************/
56689/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
56690
56691"use strict";
56692__webpack_require__.r(__webpack_exports__);
56693/* harmony export */ __webpack_require__.d(__webpack_exports__, {
56694/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
56695/* harmony export */ });
56696/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CopyUrlButton_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CopyUrlButton.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/CopyUrlButton.vue?vue&type=script&lang=js");
56697 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CopyUrlButton_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 
56698
56699/***/ }),
56700
56701/***/ "./resources/js/components/Coupon.vue?vue&type=script&lang=js":
56702/*!********************************************************************!*\
56703  !*** ./resources/js/components/Coupon.vue?vue&type=script&lang=js ***!
56704  \********************************************************************/
56705/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
56706
56707"use strict";
56708__webpack_require__.r(__webpack_exports__);
56709/* harmony export */ __webpack_require__.d(__webpack_exports__, {
56710/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
56711/* harmony export */ });
56712/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Coupon_vue_vue_type_sc
56712ript_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Coupon.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/Coupon.vue?vue&type=script&lang=js");
56713 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Coupon_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 
56714
56715/***/ }),
56716
56717/***/ "./resources/js/components/CouponList.vue?vue&type=script&lang=js":
56718/*!************************************************************************!*\
56719  !*** ./resources/js/components/CouponList.vue?vue&type=script&lang=js ***!
56720  \************************************************************************/
56721/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
56722
56723"use strict";
56724__webpack_require__.r(__webpack_exports__);
56725/* harmony export */ __webpack_require__.d(__webpack_exports__, {
56726/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
56727/* harmony export */ });
56728/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CouponList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CouponList.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/CouponList.vue?vue&type=script&lang=js");
56729 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CouponList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 
56730
56731/***/ }),
56732
56733/***/ "./resources/js/components/NewUser.vue?vue&type=script&lang=js":
56734/*!*********************************************************************!*\
56735  !*** ./resources/js/components/NewUser.vue?vue&type=script&lang=js ***!
56736  \*********************************************************************/
56737/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
56738
56739"use strict";
56740__webpack_require__.r(__webpack_exports__);
56741/* harmony export */ __webpack_require__.d(__webpack_exports__, {
56742/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
56743/* harmony export */ });
56744/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_NewUser_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewUser.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/NewUser.vue?vue&type=script&lang=js");
56745 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_NewUser_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 
56746
56747/***/ }),
56748
56749/***/ "./resources/js/components/Post.vue?vue&type=script&lang=js":
56750/*!******************************************************************!*\
56751  !*** ./resources/js/components/Post.vue?vue&type=script&lang=js ***!
56752  \******************************************************************/
56753/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
56754
56755"use strict";
56756__webpack_require__.r(__webpack_exports__);
56757/* harmony export */ __webpack_require__.d(__webpack_exports__, {
56758/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
56759/* harmony export */ });
56760/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Post_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Post.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/Post.vue?vue&type=script&lang=js");
56761 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Post_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 
56762
56763/***/ }),
56764
56765/***/ "./resources/js/components/PostComment.vue?vue&type=script&lang=js":
56766/*!*************************************************************************!*\
56767  !*** ./resources/js/components/PostComment.vue?vue&type=script&lang=js ***!
56768  \*************************************************************************/
56769/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
56770
56771"use strict";
56772__webpack_require__.r(__webpack_exports__);
56773/* harmony export */ __webpack_require__.d(__webpack_exports__, {
56774/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
56775/* harmony export */ });
56776/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PostComment_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PostComment.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/PostComment.vue?vue&type=script&lang=js");
56777 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PostComment_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 
56778
56779/***/ }),
56780
56781/***/ "./resources/js/components/PostCommentList.vue?vue&type=script&lang=js":
56782/*!*****************************************************************************!*\
56783  !*** ./resources/js/components/PostCommentList.vue?vue&type=script&lang=js ***!
56784  \*****************************************************************************/
56785/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
56786
56787"use strict";
56788__webpack_require__.r(__webpack_exports__);
56789/* harmony export */ __webpack_require__.d(__webpack_exports__, {
56790/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
56791/* harmony export */ });
56792/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PostCommentList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PostCommentList.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/PostCommentList.vue?vue&type=script&lang=js");
56793 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PostCommentList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 
56794
56795/***/ }),
56796
56797/***/ "./resources/js/components/PostList.vue?vue&type=script&lang=js":
56798/*!**********************************************************************!*\
56799  !*** ./resources/js/components/PostList.vue?vue&type=script&lang=js ***!
56800  \**********************************************************************/
56801/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
56802
56803"use strict";
56804__webpack_require__.r(__webpack_exports__);
56805/* harmony export */ __webpack_require__.d(__webpack_exports__, {
56806/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
56807/* harmony export */ });
56808/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PostList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PostList.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/PostList.vue?vue&type=script&lang=js");
56809 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PostList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 
56810
56811/***/ }),
56812
56813/***/ "./resources/js/components/PostReplyList.vue?vue&type=script&lang=js":
56814/*!***************************************************************************!*\
56815  !*** ./resources/js/components/PostReplyList.vue?vue&type=script&lang=js ***!
56816  \***************************************************************************/
56817/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
56818
56819"use strict";
56820__webpack_require__.r(__webpack_exports__);
56821/* harmony export */ __webpack_require__.d(__webpack_exports__, {
56822/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
56823/* harmony export */ });
56824/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PostReplyList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PostReplyList.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/PostReplyList.vue?vue&type=script&lang=js");
56825 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PostReplyList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 
56826
56827/***/ }),
56828
56829/***/ "./resources/js/components/ProfileEditModal.vue?vue&type=script&lang=js":
56830/*!******************************************************************************!*\
56831  !*** ./resources/js/components/ProfileEditModal.vue?vue&type=script&lang=js ***!
56832  \******************************************************************************/
56833/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
56834
56835"use strict";
56836__webpack_require__.r(__webpack_exports__);
56837/* harmony export */ __webpack_require__.d(__webpack_exports__, {
56838/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
56839/* harmony export */ });
56840/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ProfileEditModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileEditModal.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ProfileEditModal.vue?vue&type=script&lang=js");
56841 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ProfileEditModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 
56842
56843/***/ }),
56844
56845/***/ "./resources/js/components/ReportDetailModal.vue?vue&type=script&lang=js":
56846/*!*******************************************************************************!*\
56847  !*** ./resources/js/components/ReportDetailModal.vue?vue&type=script&lang=js ***!
56848  \*******************************************************************************/
56849/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
56850
56851"use strict";
56852__webpack_require__.r(__webpack_exports__);
56853/* harmony export */ __webpack_require__.d(__webpack_exports__, {
56854/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
56855/* harmony export */ });
56856/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ReportDetailModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReportDetailModal.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ReportDetailModal.vue?vue&type=script&lang=js");
56857 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ReportDetailModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 
56858
56859/***/ }),
56860
56861/***/ "./resources/js/components/ReportModal.vue?vue&type=script&lang=js":
56862/*!*************************************************************************!*\
56863  !*** ./resources/js/components/ReportModal.vue?vue&type=script&lang=js ***!
56864  \*************************************************************************/
56865/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
56866
56867"use strict";
56868__webpack_require__.r(__webpack_exports__);
56869/* harmony export */ __webpack_require__.d(__webpack_exports__, {
56870/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
56871/* harmony export */ });
56872/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ReportModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReportModal.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ReportModal.vue?vue&type=script&lang=js");
56873 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ReportModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 
56874
56875/***/ }),
56876
56877/***/ "./resources/js/components/SocialCompleteModal.vue?vue&type=script&lang=js":
56878/*!*********************************************************************************!*\
56879  !*** ./resources/js/components/SocialCompleteModal.vue?vue&type=script&lang=js ***!
56880  \*********************************************************************************/
56881/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
56882
56883"use strict";
56884__webpack_require__.r(__webpack_exports__);
56885/* harmony export */ __webpack_require__.d(__webpack_exports__, {
56886/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
56887/* harmony export */ });
56888/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialCompleteModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialCompleteModal.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialCompleteModal.vue?vue&type=script&lang=js");
56889 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialCompleteModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 
56890
56891/***/ }),
56892
56893/***/ "./resources/js/components/SocialConfirmModal.vue?vue&type=script&lang=js":
56894/*!********************************************************************************!*\
56895  !*** ./resources/js/components/SocialConfirmModal.vue?vue&type=script&lang=js ***!
56896  \********************************************************************************/
56897/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
56898
56899"use strict";
56900__webpack_require__.r(__webpack_exports__);
56901/* harmony export */ __webpack_require__.d(__webpack_exports__, {
56902/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
56903/* harmony export */ });
56904/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialConfirmModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialConfirmModal.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialConfirmModal.vue?vue&type=script&lang=js");
56905 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialConfirmModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 
56906
56907/***/ }),
56908
56909/***/ "./resources/js/components/SocialContent.vue?vue&type=script&lang=js":
56910/*!***************************************************************************!*\
56911  !*** ./resources/js/components/SocialContent.vue?vue&type=script&lang=js ***!
56912  \***************************************************************************/
56913/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
56914
56915"use strict";
56916__webpack_require__.r(__webpack_exports__);
56917/* harmony export */ __webpack_require__.d(__webpack_exports__, {
56918/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
56919/* harmony export */ });
56920/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialContent_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialContent.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialContent.vue?vue&type=script&lang=js");
56921 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialContent_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 
56922
56923/***/ }),
56924
56925/***/ "./resources/js/components/SocialContentInput.vue?vue&type=script&lang=js":
56926/*!********************************************************************************!*\
56927  !*** ./resources/js/components/SocialContentInput.vue?vue&type=script&lang=js ***!
56928  \********************************************************************************/
56929/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
56930
56931"use strict";
56932__webpack_require__.r(__webpack_exports__);
56933/* harmony export */ __webpack_require__.d(__webpack_exports__, {
56934/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
56935/* harmony export */ });
56936/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialContentInput_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialContentInput.vue?vue&type=script&lang=js */ "
56936./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialContentInput.vue?vue&type=script&lang=js");
56937 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialContentInput_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 
56938
56939/***/ }),
56940
56941/***/ "./resources/js/components/SocialControlModal.vue?vue&type=script&lang=js":
56942/*!********************************************************************************!*\
56943  !*** ./resources/js/components/SocialControlModal.vue?vue&type=script&lang=js ***!
56944  \********************************************************************************/
56945/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
56946
56947"use strict";
56948__webpack_require__.r(__webpack_exports__);
56949/* harmony export */ __webpack_require__.d(__webpack_exports__, {
56950/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
56951/* harmony export */ });
56952/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialControlModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialControlModal.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialControlModal.vue?vue&type=script&lang=js");
56953 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialControlModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 
56954
56955/***/ }),
56956
56957/***/ "./resources/js/components/SocialFileInput.vue?vue&type=script&lang=js":
56958/*!*****************************************************************************!*\
56959  !*** ./resources/js/components/SocialFileInput.vue?vue&type=script&lang=js ***!
56960  \*****************************************************************************/
56961/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
56962
56963"use strict";
56964__webpack_require__.r(__webpack_exports__);
56965/* harmony export */ __webpack_require__.d(__webpack_exports__, {
56966/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
56967/* harmony export */ });
56968/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialFileInput_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialFileInput.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialFileInput.vue?vue&type=script&lang=js");
56969 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialFileInput_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 
56970
56971/***/ }),
56972
56973/***/ "./resources/js/components/SocialFirstModal.vue?vue&type=script&lang=js":
56974/*!******************************************************************************!*\
56975  !*** ./resources/js/components/SocialFirstModal.vue?vue&type=script&lang=js ***!
56976  \******************************************************************************/
56977/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
56978
56979"use strict";
56980__webpack_require__.r(__webpack_exports__);
56981/* harmony export */ __webpack_require__.d(__webpack_exports__, {
56982/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
56983/* harmony export */ });
56984/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialFirstModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialFirstModal.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialFirstModal.vue?vue&type=script&lang=js");
56985 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialFirstModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 
56986
56987/***/ }),
56988
56989/***/ "./resources/js/components/SocialMessagePage.vue?vue&type=script&lang=js":
56990/*!*******************************************************************************!*\
56991  !*** ./resources/js/components/SocialMessagePage.vue?vue&type=script&lang=js ***!
56992  \*******************************************************************************/
56993/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
56994
56995"use strict";
56996__webpack_require__.r(__webpack_exports__);
56997/* harmony export */ __webpack_require__.d(__webpack_exports__, {
56998/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
56999/* harmony export */ });
57000/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialMessagePage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialMessagePage.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialMessagePage.vue?vue&type=script&lang=js");
57001 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialMessagePage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 
57002
57003/***/ }),
57004
57005/***/ "./resources/js/components/SocialNavbar.vue?vue&type=script&lang=js":
57006/*!**************************************************************************!*\
57007  !*** ./resources/js/components/SocialNavbar.vue?vue&type=script&lang=js ***!
57008  \**************************************************************************/
57009/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57010
57011"use strict";
57012__webpack_require__.r(__webpack_exports__);
57013/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57014/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
57015/* harmony export */ });
57016/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialNavbar_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialNavbar.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialNavbar.vue?vue&type=script&lang=js");
57017 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialNavbar_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 
57018
57019/***/ }),
57020
57021/***/ "./resources/js/components/SocialNotification.vue?vue&type=script&lang=js":
57022/*!********************************************************************************!*\
57023  !*** ./resources/js/components/SocialNotification.vue?vue&type=script&lang=js ***!
57024  \********************************************************************************/
57025/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57026
57027"use strict";
57028__webpack_require__.r(__webpack_exports__);
57029/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57030/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
57031/* harmony export */ });
57032/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialNotification_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialNotification.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialNotification.vue?vue&type=script&lang=js");
57033 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialNotification_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 
57034
57035/***/ }),
57036
57037/***/ "./resources/js/components/SocialNotificationModal.vue?vue&type=script&lang=js":
57038/*!*************************************************************************************!*\
57039  !*** ./resources/js/components/SocialNotificationModal.vue?vue&type=script&lang=js ***!
57040  \*************************************************************************************/
57041/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57042
57043"use strict";
57044__webpack_require__.r(__webpack_exports__);
57045/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57046/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
57047/* harmony export */ });
57048/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialNotificationModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialNotificationModal.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialNotificationModal.vue?vue&type=script&lang=js");
57049 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialNotificationModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 
57050
57051/***/ }),
57052
57053/***/ "./resources/js/components/SocialPage.vue?vue&type=script&lang=js":
57054/*!************************************************************************!*\
57055  !*** ./resources/js/components/SocialPage.vue?vue&type=script&lang=js ***!
57056  \************************************************************************/
57057/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57058
57059"use strict";
57060__webpack_require__.r(__webpack_exports__);
57061/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57062/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
57063/* harmony export */ });
57064/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialPage.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPage.vue?vue&type=script&lang=js");
57065 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 
57066
57067/***/ }),
57068
57069/***/ "./resources/js/components/SocialPlaceModal.vue?vue&type=script&lang=js":
57070/*!******************************************************************************!*\
57071  !*** ./resources/js/components/SocialPlaceModal.vue?vue&type=script&lang=js ***!
57072  \******************************************************************************/
57073/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57074
57075"use strict";
57076__webpack_require__.r(__webpack_exports__);
57077/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57078/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
57079/* harmony export */ });
57080/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPlaceModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialPlaceModal.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPlaceModal.vue?vue&type=script&lang=js");
57081 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPlaceModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 
57082
57083/***/ }),
57084
57085/***/ "./resources/js/components/SocialPlacePage.vue?vue&type=script&lang=js":
57086/*!*****************************************************************************!*\
57087  !*** ./resources/js/components/SocialPlacePage.vue?vue&type=script&lang=js ***!
57088  \*****************************************************************************/
57089/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57090
57091"use strict";
57092__webpack_require__.r(__webpack_exports__);
57093/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57094/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
57095/* harmony export */ });
57096/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPlacePage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialPlacePage.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPlacePage.vue?vue&type=script&lang=js");
57097 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPlacePage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 
57098
57099/***/ }),
57100
57101/***/ "./resources/js/components/SocialPost.vue?vue&type=script&lang=js":
57102/*!************************************************************************!*\
57103  !*** ./resources/js/components/SocialPost.vue?vue&type=script&lang=js ***!
57104  \************************************************************************/
57105/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57106
57107"use strict";
57108__webpack_require__.r(__webpack_expo
57108rts__);
57109/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57110/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
57111/* harmony export */ });
57112/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPost_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialPost.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPost.vue?vue&type=script&lang=js");
57113 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPost_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 
57114
57115/***/ }),
57116
57117/***/ "./resources/js/components/SocialPostComment.vue?vue&type=script&lang=js":
57118/*!*******************************************************************************!*\
57119  !*** ./resources/js/components/SocialPostComment.vue?vue&type=script&lang=js ***!
57120  \*******************************************************************************/
57121/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57122
57123"use strict";
57124__webpack_require__.r(__webpack_exports__);
57125/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57126/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
57127/* harmony export */ });
57128/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPostComment_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialPostComment.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostComment.vue?vue&type=script&lang=js");
57129 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPostComment_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 
57130
57131/***/ }),
57132
57133/***/ "./resources/js/components/SocialPostCommentList.vue?vue&type=script&lang=js":
57134/*!***********************************************************************************!*\
57135  !*** ./resources/js/components/SocialPostCommentList.vue?vue&type=script&lang=js ***!
57136  \***********************************************************************************/
57137/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57138
57139"use strict";
57140__webpack_require__.r(__webpack_exports__);
57141/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57142/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
57143/* harmony export */ });
57144/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPostCommentList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialPostCommentList.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostCommentList.vue?vue&type=script&lang=js");
57145 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPostCommentList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 
57146
57147/***/ }),
57148
57149/***/ "./resources/js/components/SocialPostEditModal.vue?vue&type=script&lang=js":
57150/*!*********************************************************************************!*\
57151  !*** ./resources/js/components/SocialPostEditModal.vue?vue&type=script&lang=js ***!
57152  \*********************************************************************************/
57153/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57154
57155"use strict";
57156__webpack_require__.r(__webpack_exports__);
57157/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57158/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
57159/* harmony export */ });
57160/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPostEditModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialPostEditModal.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostEditModal.vue?vue&type=script&lang=js");
57161 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPostEditModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 
57162
57163/***/ }),
57164
57165/***/ "./resources/js/components/SocialPostError.vue?vue&type=script&lang=js":
57166/*!*****************************************************************************!*\
57167  !*** ./resources/js/components/SocialPostError.vue?vue&type=script&lang=js ***!
57168  \*****************************************************************************/
57169/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57170
57171"use strict";
57172__webpack_require__.r(__webpack_exports__);
57173/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57174/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
57175/* harmony export */ });
57176/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPostError_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialPostError.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostError.vue?vue&type=script&lang=js");
57177 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPostError_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 
57178
57179/***/ }),
57180
57181/***/ "./resources/js/components/SocialPostList.vue?vue&type=script&lang=js":
57182/*!****************************************************************************!*\
57183  !*** ./resources/js/components/SocialPostList.vue?vue&type=script&lang=js ***!
57184  \****************************************************************************/
57185/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57186
57187"use strict";
57188__webpack_require__.r(__webpack_exports__);
57189/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57190/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
57191/* harmony export */ });
57192/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPostList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialPostList.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostList.vue?vue&type=script&lang=js");
57193 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPostList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 
57194
57195/***/ }),
57196
57197/***/ "./resources/js/components/SocialPostPage.vue?vue&type=script&lang=js":
57198/*!****************************************************************************!*\
57199  !*** ./resources/js/components/SocialPostPage.vue?vue&type=script&lang=js ***!
57200  \****************************************************************************/
57201/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57202
57203"use strict";
57204__webpack_require__.r(__webpack_exports__);
57205/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57206/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
57207/* harmony export */ });
57208/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPostPage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialPostPage.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostPage.vue?vue&type=script&lang=js");
57209 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPostPage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 
57210
57211/***/ }),
57212
57213/***/ "./resources/js/components/SocialPostReplyList.vue?vue&type=script&lang=js":
57214/*!*********************************************************************************!*\
57215  !*** ./resources/js/components/SocialPostReplyList.vue?vue&type=script&lang=js ***!
57216  \*********************************************************************************/
57217/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57218
57219"use strict";
57220__webpack_require__.r(__webpack_exports__);
57221/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57222/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
57223/* harmony export */ });
57224/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPostReplyList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialPostReplyList.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostReplyList.vue?vue&type=script&lang=js");
57225 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPostReplyList_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 
57226
57227/***/ }),
57228
57229/***/ "./resources/js/components/SocialSearchModal.vue?vue&type=script&lang=js":
57230/*!*******************************************************************************!*\
57231  !*** ./resources/js/components/SocialSearchModal.vue?vue&type=script&lang=js ***!
57232  \*******************************************************************************/
57233/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57234
57235"use strict";
57236__webpack_require__.r(__webpack_exports__);
57237/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57238/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
57239/* harmony export */ });
57240/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialSearchModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialSearchModal.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialSearchModal.vue?vue&type=script&lang=js");
57241 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialSearchModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 
57242
57243/***/ }),
57244
57245/***/ "./resources/js/components/SocialSelectUserModal.vue?vue&type=script&lang=js":
57246/*!***********************************************************************************!*\
57247  !*** ./resources/js/components/SocialSelectUserModal.vue?vue&type=script&lang=js ***!
57248  \***********************************************************************************/
57249/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57250
57251"use strict";
57252__webpack_require__.r(__webpack_exports__);
57253/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57254/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
57255/* harmony export */ });
57256/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialSelectUserModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialSelectUserModal.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialSelectUserModal.vue?vue&type=script&lang=js");
57257 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialSelectUserModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 
57258
57259/***/ }),
57260
57261/***/ "./resources/js/components/SocialShareModal.vue?vue&type=script&lang=js":
57262/*!******************************************************************************!*\
57263  !*** ./resources/js/components/SocialShareModal.vue?vue&type=script&lang=js ***!
57264  \******************************************************************************/
57265/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57266
57267"use strict";
57268__webpack_require__.r(__webpack_exports__);
57269/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57270/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
57271/* harmony export */ });
57272/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialShareModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialShareModal.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialShareModal.vue?vue&type=script&lang=js");
57273 /* harmony default export */ const __WEBPAC
57273K_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialShareModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 
57274
57275/***/ }),
57276
57277/***/ "./resources/js/components/SocialTagPage.vue?vue&type=script&lang=js":
57278/*!***************************************************************************!*\
57279  !*** ./resources/js/components/SocialTagPage.vue?vue&type=script&lang=js ***!
57280  \***************************************************************************/
57281/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57282
57283"use strict";
57284__webpack_require__.r(__webpack_exports__);
57285/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57286/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
57287/* harmony export */ });
57288/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialTagPage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialTagPage.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialTagPage.vue?vue&type=script&lang=js");
57289 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialTagPage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 
57290
57291/***/ }),
57292
57293/***/ "./resources/js/components/SocialUpload.vue?vue&type=script&lang=js":
57294/*!**************************************************************************!*\
57295  !*** ./resources/js/components/SocialUpload.vue?vue&type=script&lang=js ***!
57296  \**************************************************************************/
57297/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57298
57299"use strict";
57300__webpack_require__.r(__webpack_exports__);
57301/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57302/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
57303/* harmony export */ });
57304/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialUpload_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialUpload.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialUpload.vue?vue&type=script&lang=js");
57305 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialUpload_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 
57306
57307/***/ }),
57308
57309/***/ "./resources/js/components/SocialUploadFailModal.vue?vue&type=script&lang=js":
57310/*!***********************************************************************************!*\
57311  !*** ./resources/js/components/SocialUploadFailModal.vue?vue&type=script&lang=js ***!
57312  \***********************************************************************************/
57313/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57314
57315"use strict";
57316__webpack_require__.r(__webpack_exports__);
57317/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57318/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
57319/* harmony export */ });
57320/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialUploadFailModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialUploadFailModal.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialUploadFailModal.vue?vue&type=script&lang=js");
57321 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialUploadFailModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 
57322
57323/***/ }),
57324
57325/***/ "./resources/js/components/SocialUploadingModal.vue?vue&type=script&lang=js":
57326/*!**********************************************************************************!*\
57327  !*** ./resources/js/components/SocialUploadingModal.vue?vue&type=script&lang=js ***!
57328  \**********************************************************************************/
57329/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57330
57331"use strict";
57332__webpack_require__.r(__webpack_exports__);
57333/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57334/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
57335/* harmony export */ });
57336/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialUploadingModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialUploadingModal.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialUploadingModal.vue?vue&type=script&lang=js");
57337 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialUploadingModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 
57338
57339/***/ }),
57340
57341/***/ "./resources/js/components/SocialUserModal.vue?vue&type=script&lang=js":
57342/*!*****************************************************************************!*\
57343  !*** ./resources/js/components/SocialUserModal.vue?vue&type=script&lang=js ***!
57344  \*****************************************************************************/
57345/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57346
57347"use strict";
57348__webpack_require__.r(__webpack_exports__);
57349/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57350/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
57351/* harmony export */ });
57352/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialUserModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialUserModal.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialUserModal.vue?vue&type=script&lang=js");
57353 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialUserModal_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 
57354
57355/***/ }),
57356
57357/***/ "./resources/js/components/SocialUserPage.vue?vue&type=script&lang=js":
57358/*!****************************************************************************!*\
57359  !*** ./resources/js/components/SocialUserPage.vue?vue&type=script&lang=js ***!
57360  \****************************************************************************/
57361/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57362
57363"use strict";
57364__webpack_require__.r(__webpack_exports__);
57365/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57366/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
57367/* harmony export */ });
57368/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialUserPage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialUserPage.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialUserPage.vue?vue&type=script&lang=js");
57369 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialUserPage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 
57370
57371/***/ }),
57372
57373/***/ "./resources/js/components/TimeFormat.vue?vue&type=script&lang=js":
57374/*!************************************************************************!*\
57375  !*** ./resources/js/components/TimeFormat.vue?vue&type=script&lang=js ***!
57376  \************************************************************************/
57377/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57378
57379"use strict";
57380__webpack_require__.r(__webpack_exports__);
57381/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57382/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
57383/* harmony export */ });
57384/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TimeFormat_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TimeFormat.vue?vue&type=script&lang=js */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/TimeFormat.vue?vue&type=script&lang=js");
57385 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TimeFormat_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 
57386
57387/***/ }),
57388
57389/***/ "./resources/js/components/ChatMessage.vue?vue&type=template&id=7812acf4":
57390/*!*******************************************************************************!*\
57391  !*** ./resources/js/components/ChatMessage.vue?vue&type=template&id=7812acf4 ***!
57392  \*******************************************************************************/
57393/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57394
57395"use strict";
57396__webpack_require__.r(__webpack_exports__);
57397/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57398/* harmony export */   render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_ChatMessage_vue_vue_type_template_id_7812acf4__WEBPACK_IMPORTED_MODULE_0__.render),
57399/* harmony export */   staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_ChatMessage_vue_vue_type_template_id_7812acf4__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
57400/* harmony export */ });
57401/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_ChatMessage_vue_vue_type_template_id_7812acf4__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChatMessage.vue?vue&type=template&id=7812acf4 */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ChatMessage.vue?vue&type=template&id=7812acf4");
57402
57403
57404/***/ }),
57405
57406/***/ "./resources/js/components/ChatRoom.vue?vue&type=template&id=4926d03e":
57407/*!****************************************************************************!*\
57408  !*** ./resources/js/components/ChatRoom.vue?vue&type=template&id=4926d03e ***!
57409  \****************************************************************************/
57410/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57411
57412"use strict";
57413__webpack_require__.r(__webpack_exports__);
57414/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57415/* harmony export */   render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_ChatRoom_vue_vue_type_template_id_4926d03e__WEBPACK_IMPORTED_MODULE_0__.render),
57416/* harmony export */   staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_ChatRoom_vue_vue_type_template_id_4926d03e__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
57417/* harmony export */ });
57418/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_ChatRoom_vue_vue_type_template_id_4926d03e__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChatRoom.vue?vue&type=template&id=4926d03e */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ChatRoom.vue?vue&type=template&id=4926d03e");
57419
57420
57421/***/ }),
57422
57423/***/ "./resources/js/components/ChatRoomList.vue?vue&type=template&id=36db22fc":
57424/*!********************************************************************************!*\
57425  !*** ./resources/js/components/ChatRoomList.vue?vue&type=template&id=36db22fc ***!
57426  \********************************************************************************/
57427/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57428
57429"use strict";
57430__webpack_require__.r(__webpack_exports__);
57431/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57432/* harmony export */   render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_ChatRoomList_vue_vue_type_template_id_36db22fc__WEBPACK_IMPORTED_MODULE_0__.render),
57433/* harmony export */   staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_ChatRoomList_vue_vue_type_template_id_36db22fc__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
57434/* harmony export */ });
57435/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_ChatRoomList_vue_vue_type_template_id_36db22fc__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChatRoomList.vue?vue&type=template&id=36db22fc */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ChatRoomList.vue?vue&type=template&id=36db22fc");
57436
57437
57438/***/ }),
57439
57440/***/ "./resources/js/components/ChatRoomSetting.vue?vue&type=template&id=c1cfc73c":
57441/*!***********************************************************************************!*\
57442  !*** ./resources/js/components/ChatRoomSetting.vue?vue&type=template&id=c1cfc73c ***!
57443  \***********************************************************************************/
57444/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57445
57446"use strict";
57447__webpack_require__.r(__webpack_exports__);
57448/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57449/* harmony export */   render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_ChatRoomSetting_vue_vue_type_template_id_c1cfc73c__WEBPACK_IMPORTED_MODULE_0__.render),
57450/* harmony export */   staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_ChatRoomSetting_vue_vue_type_template_id_c1cfc73c__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
57451/* harmony export */ });
57452/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_ChatRoomSetting_vue_vue_type_template_id_c1cfc73c__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChatRoomSetting.vue?vue&type=template&id=c1cfc73c */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ChatRoomSetting.vue?vue&type=template&id=c1cfc73c");
57453
57454
57455/***/ }),
57456
57457/***/ "./resources/js/components/ChatSelectUserModal.vue?vue&type=template&id=2cd7071a":
57458/*!***************************************************************************************!*\
57459  !*** ./resources/js/components/ChatSelectUserModal.vue?vue&type=template&id=2cd7071a ***!
57460  \***************************************************************************************/
57461/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57462
57463"use strict";
57464__webpack_require__.r(__webpack_exports__);
57465/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57466/* harmony export */   render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_ChatSelectUserModal_vue_vue_type_template_id_2cd7071a__WEBPACK_IMPORTED_MODULE_0__.render),
57467/* harmony export */   staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_ChatSelectUserModal_vue_vue_type_template_id_2cd7071a__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
57468/* harmony export */ });
57469/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_ChatSelectUserModal_vue_vue_type_template_id_2cd7071a__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChatSelectUserModal.vue?vue&type=template&id=2cd7071a */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ChatSelectUserModal.vue?vue&type=template&id=2cd7071a");
57470
57471
57472/***/ }),
57473
57474/***/ "./resources/js/components/ChatZoominModal.vue?vue&type=template&id=13f548c2":
57475/*!***********************************************************************************!*\
57476  !*** ./resources/js/components/ChatZoominModal.vue?vue&type=template&id=13f548c2 ***!
57477  \***********************************************************************************/
57478/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57479
57480"use strict";
57481__webpack_require__.r(__webpack_exports__);
57482/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57483/* harmony export */   render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_ChatZoominModal_vue_vue_type_template_id_13f548c2__WEBPACK_IMPORTED_MODULE_0__.render),
57484/* harmony export */   staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_ChatZoominModal_vue_vue_type_template_id_13f548c2__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
57485/* harmony export */ });
57486/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_ChatZoominModal_vue_vue_type_template_id_13f548c2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChatZoominModal.vue?vue&type=template&id=13f548c2 */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ChatZoominModal.vue?vue&type=template&id=13f548c2");
57487
57488
57489/***/ }),
57490
57491/***/ "./resources/js/components/CollectList.vue?vue&type=template&id=318b27cd":
57492/*!*******************************************************************************!*\
57493  !*** ./resources/js/components/CollectList.vue?vue&type=template&id=318b27cd ***!
57494  \*******************************************************************************/
57495/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57496
57497"use strict";
57498__webpack_require__.r(__webpack_exports__);
57499/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57500/* harmony export */   render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_CollectList_vue_vue_type_template_id_318b27cd__WEBPACK_IMPORTED_MODULE_0__.render),
57501/* harmony export */   staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_CollectList_vue_vue_type_template_id_318b27cd__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
57502/* harmony export */ });
57503/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_CollectList_vue_vue_type_template_id_318b27cd__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CollectList.vue?vue&type=template&id=318b27cd */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/CollectList.vue?vue&type=template&id=318b27cd");
57504
57505
57506/***/ }),
57507
57508/***/ "./resources/js/components/CompleteModal.vue?vue&type=template&id=7dcd3699":
57509/*!*********************************************************************************!*\
57510  !*** ./resources/js/components/CompleteModal.vue?vue&type=template&id=7dcd3699 ***!
57511  \*********************************************************************************/
57512/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57513
57514"use strict";
57515__webpack_require__.r(__webpack_exports__);
57516/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57517/* harmony export */   render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_CompleteModal_vue_vue_type_template_id_7dcd3699__WEBPACK_IMPORTED_MODULE_0__.render),
57518/* harmony export */   staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_CompleteModal_vue_vue_type_template_id_7dcd3699__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
57519/* harmony export */ });
57520/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_CompleteModal_vue_vue_type_template_id_7dcd3699__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CompleteModal.vue?vue&type=template&id=7dcd3699 */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/CompleteModal.vue?vue&type=template&id=7dcd3699");
57521
57522
57523/***/ }),
57524
57525/***/ "./resources/js/components/CopyUrlButton.vue?vue&type=template&id=0493799e":
57526/*!*********************************************************************************!*\
57527  !*** ./resources/js/components/CopyUrlButton.vue?vue&type=template&id=0493799e ***!
57528  \*********************************************************************************/
57529/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57530
57531"use strict";
57532__webpack_require__.r(__webpack_exports__);
57533/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57534/* harmony export */   render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_CopyUrlButton_vue_vue_type_template_id_0493799e__WEBPACK_IMPORTED_MODULE_0__.render),
57535/* harmony export */   staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_CopyUrlButton_vue_vue_type_template_id_0493799e__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
57536/* harmony export */ });
57537/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_u
57537se_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_CopyUrlButton_vue_vue_type_template_id_0493799e__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CopyUrlButton.vue?vue&type=template&id=0493799e */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/CopyUrlButton.vue?vue&type=template&id=0493799e");
57538
57539
57540/***/ }),
57541
57542/***/ "./resources/js/components/Coupon.vue?vue&type=template&id=c253f95e":
57543/*!**************************************************************************!*\
57544  !*** ./resources/js/components/Coupon.vue?vue&type=template&id=c253f95e ***!
57545  \**************************************************************************/
57546/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57547
57548"use strict";
57549__webpack_require__.r(__webpack_exports__);
57550/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57551/* harmony export */   render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_Coupon_vue_vue_type_template_id_c253f95e__WEBPACK_IMPORTED_MODULE_0__.render),
57552/* harmony export */   staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_Coupon_vue_vue_type_template_id_c253f95e__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
57553/* harmony export */ });
57554/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_Coupon_vue_vue_type_template_id_c253f95e__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Coupon.vue?vue&type=template&id=c253f95e */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/Coupon.vue?vue&type=template&id=c253f95e");
57555
57556
57557/***/ }),
57558
57559/***/ "./resources/js/components/CouponList.vue?vue&type=template&id=2676d6e2":
57560/*!******************************************************************************!*\
57561  !*** ./resources/js/components/CouponList.vue?vue&type=template&id=2676d6e2 ***!
57562  \******************************************************************************/
57563/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57564
57565"use strict";
57566__webpack_require__.r(__webpack_exports__);
57567/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57568/* harmony export */   render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_CouponList_vue_vue_type_template_id_2676d6e2__WEBPACK_IMPORTED_MODULE_0__.render),
57569/* harmony export */   staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_CouponList_vue_vue_type_template_id_2676d6e2__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
57570/* harmony export */ });
57571/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_CouponList_vue_vue_type_template_id_2676d6e2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CouponList.vue?vue&type=template&id=2676d6e2 */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/CouponList.vue?vue&type=template&id=2676d6e2");
57572
57573
57574/***/ }),
57575
57576/***/ "./resources/js/components/NewUser.vue?vue&type=template&id=1283a570":
57577/*!***************************************************************************!*\
57578  !*** ./resources/js/components/NewUser.vue?vue&type=template&id=1283a570 ***!
57579  \***************************************************************************/
57580/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57581
57582"use strict";
57583__webpack_require__.r(__webpack_exports__);
57584/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57585/* harmony export */   render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_NewUser_vue_vue_type_template_id_1283a570__WEBPACK_IMPORTED_MODULE_0__.render),
57586/* harmony export */   staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_NewUser_vue_vue_type_template_id_1283a570__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
57587/* harmony export */ });
57588/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_NewUser_vue_vue_type_template_id_1283a570__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewUser.vue?vue&type=template&id=1283a570 */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/NewUser.vue?vue&type=template&id=1283a570");
57589
57590
57591/***/ }),
57592
57593/***/ "./resources/js/components/Post.vue?vue&type=template&id=5e8280ea":
57594/*!************************************************************************!*\
57595  !*** ./resources/js/components/Post.vue?vue&type=template&id=5e8280ea ***!
57596  \************************************************************************/
57597/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57598
57599"use strict";
57600__webpack_require__.r(__webpack_exports__);
57601/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57602/* harmony export */   render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_Post_vue_vue_type_template_id_5e8280ea__WEBPACK_IMPORTED_MODULE_0__.render),
57603/* harmony export */   staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_Post_vue_vue_type_template_id_5e8280ea__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
57604/* harmony export */ });
57605/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_Post_vue_vue_type_template_id_5e8280ea__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Post.vue?vue&type=template&id=5e8280ea */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/Post.vue?vue&type=template&id=5e8280ea");
57606
57607
57608/***/ }),
57609
57610/***/ "./resources/js/components/PostComment.vue?vue&type=template&id=a82be5f8":
57611/*!*******************************************************************************!*\
57612  !*** ./resources/js/components/PostComment.vue?vue&type=template&id=a82be5f8 ***!
57613  \*******************************************************************************/
57614/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57615
57616"use strict";
57617__webpack_require__.r(__webpack_exports__);
57618/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57619/* harmony export */   render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_PostComment_vue_vue_type_template_id_a82be5f8__WEBPACK_IMPORTED_MODULE_0__.render),
57620/* harmony export */   staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_PostComment_vue_vue_type_template_id_a82be5f8__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
57621/* harmony export */ });
57622/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_PostComment_vue_vue_type_template_id_a82be5f8__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PostComment.vue?vue&type=template&id=a82be5f8 */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/PostComment.vue?vue&type=template&id=a82be5f8");
57623
57624
57625/***/ }),
57626
57627/***/ "./resources/js/components/PostCommentList.vue?vue&type=template&id=4ef2e67c":
57628/*!***********************************************************************************!*\
57629  !*** ./resources/js/components/PostCommentList.vue?vue&type=template&id=4ef2e67c ***!
57630  \***********************************************************************************/
57631/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57632
57633"use strict";
57634__webpack_require__.r(__webpack_exports__);
57635/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57636/* harmony export */   render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_PostCommentList_vue_vue_type_template_id_4ef2e67c__WEBPACK_IMPORTED_MODULE_0__.render),
57637/* harmony export */   staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_PostCommentList_vue_vue_type_template_id_4ef2e67c__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
57638/* harmony export */ });
57639/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_PostCommentList_vue_vue_type_template_id_4ef2e67c__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PostCommentList.vue?vue&type=template&id=4ef2e67c */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/Post
57639CommentList.vue?vue&type=template&id=4ef2e67c");
57640
57641
57642/***/ }),
57643
57644/***/ "./resources/js/components/PostList.vue?vue&type=template&id=4720a3c9":
57645/*!****************************************************************************!*\
57646  !*** ./resources/js/components/PostList.vue?vue&type=template&id=4720a3c9 ***!
57647  \****************************************************************************/
57648/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57649
57650"use strict";
57651__webpack_require__.r(__webpack_exports__);
57652/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57653/* harmony export */   render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_PostList_vue_vue_type_template_id_4720a3c9__WEBPACK_IMPORTED_MODULE_0__.render),
57654/* harmony export */   staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_PostList_vue_vue_type_template_id_4720a3c9__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
57655/* harmony export */ });
57656/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_PostList_vue_vue_type_template_id_4720a3c9__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PostList.vue?vue&type=template&id=4720a3c9 */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/PostList.vue?vue&type=template&id=4720a3c9");
57657
57658
57659/***/ }),
57660
57661/***/ "./resources/js/components/PostReplyList.vue?vue&type=template&id=6c6a54e6":
57662/*!*********************************************************************************!*\
57663  !*** ./resources/js/components/PostReplyList.vue?vue&type=template&id=6c6a54e6 ***!
57664  \*********************************************************************************/
57665/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57666
57667"use strict";
57668__webpack_require__.r(__webpack_exports__);
57669/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57670/* harmony export */   render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_PostReplyList_vue_vue_type_template_id_6c6a54e6__WEBPACK_IMPORTED_MODULE_0__.render),
57671/* harmony export */   staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_PostReplyList_vue_vue_type_template_id_6c6a54e6__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
57672/* harmony export */ });
57673/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_PostReplyList_vue_vue_type_template_id_6c6a54e6__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PostReplyList.vue?vue&type=template&id=6c6a54e6 */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/PostReplyList.vue?vue&type=template&id=6c6a54e6");
57674
57675
57676/***/ }),
57677
57678/***/ "./resources/js/components/ProfileEditModal.vue?vue&type=template&id=1d27ac85&scoped=true":
57679/*!************************************************************************************************!*\
57680  !*** ./resources/js/components/ProfileEditModal.vue?vue&type=template&id=1d27ac85&scoped=true ***!
57681  \************************************************************************************************/
57682/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57683
57684"use strict";
57685__webpack_require__.r(__webpack_exports__);
57686/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57687/* harmony export */   render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_ProfileEditModal_vue_vue_type_template_id_1d27ac85_scoped_true__WEBPACK_IMPORTED_MODULE_0__.render),
57688/* harmony export */   staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_ProfileEditModal_vue_vue_type_template_id_1d27ac85_scoped_true__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
57689/* harmony export */ });
57690/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_ProfileEditModal_vue_vue_type_template_id_1d27ac85_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileEditModal.vue?vue&type=template&id=1d27ac85&scoped=true */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ProfileEditModal.vue?vue&type=template&id=1d27ac85&scoped=true");
57691
57692
57693/***/ }),
57694
57695/***/ "./resources/js/components/ReportDetailModal.vue?vue&type=template&id=4c0c502d":
57696/*!*************************************************************************************!*\
57697  !*** ./resources/js/components/ReportDetailModal.vue?vue&type=template&id=4c0c502d ***!
57698  \*************************************************************************************/
57699/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57700
57701"use strict";
57702__webpack_require__.r(__webpack_exports__);
57703/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57704/* harmony export */   render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_ReportDetailModal_vue_vue_type_template_id_4c0c502d__WEBPACK_IMPORTED_MODULE_0__.render),
57705/* harmony export */   staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_ReportDetailModal_vue_vue_type_template_id_4c0c502d__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
57706/* harmony export */ });
57707/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_ReportDetailModal_vue_vue_type_template_id_4c0c502d__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReportDetailModal.vue?vue&type=template&id=4c0c502d */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ReportDetailModal.vue?vue&type=template&id=4c0c502d");
57708
57709
57710/***/ }),
57711
57712/***/ "./resources/js/components/ReportModal.vue?vue&type=template&id=9bdf8784":
57713/*!*******************************************************************************!*\
57714  !*** ./resources/js/components/ReportModal.vue?vue&type=template&id=9bdf8784 ***!
57715  \*******************************************************************************/
57716/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57717
57718"use strict";
57719__webpack_require__.r(__webpack_exports__);
57720/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57721/* harmony export */   render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_ReportModal_vue_vue_type_template_id_9bdf8784__WEBPACK_IMPORTED_MODULE_0__.render),
57722/* harmony export */   staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_ReportModal_vue_vue_type_template_id_9bdf8784__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
57723/* harmony export */ });
57724/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_ReportModal_vue_vue_type_template_id_9bdf8784__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReportModal.vue?vue&type=template&id=9bdf8784 */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ReportModal.vue?vue&type=template&id=9bdf8784");
57725
57726
57727/***/ }),
57728
57729/***/ "./resources/js/components/SocialCompleteModal.vue?vue&type=template&id=3235c8ec":
57730/*!***************************************************************************************!*\
57731  !*** ./resources/js/components/SocialCompleteModal.vue?vue&type=template&id=3235c8ec ***!
57732  \***************************************************************************************/
57733/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57734
57735"use strict";
57736__webpack_require__.r(__webpack_exports__);
57737/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57738/* harmony export */   render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialCompleteModal_vue_vue_type_template_id_3235c8ec__WEBPACK_IMPORTED_MODULE_0__.render),
57739/* harmony export */   staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialCompleteModal_vue_vue_type_template_id_3235c8ec__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
57740/* harmony export */ });
57741/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialCompleteModal_vue_vue_type_template_id_3235c8ec__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialCompleteModal.vue?vue&type=template&id=3235c8ec */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialCompleteModal.vue?vue&type=template&id=3235c8ec");
57742
57743
57744/***/ }),
57745
57746/***/ "./resources/js/components/SocialConfirmModal.vue?vue&type=template&id=6b7b7885":
57747/*!**************************************************************************************!*\
57748  !*** ./resources/js/components/SocialConfirmModal.vue?vue&type=template&id=6b7b7885 ***!
57749  \**************************************************************************************/
57750/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57751
57752"use strict";
57753__webpack_require__.r(__webpack_exports__);
57754/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57755/* harmony export */   render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialConfirmModal_vue_vue_type_template_id_6b7b7885__WEBPACK_IMPORTED_MODULE_0__.render),
57756/* harmony export */   staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialConfirmModal_vue_vue_type_template_id_6b7b7885__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
57757/* harmony export */ });
57758/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialConfirmModal_vue_vue_type_template_id_6b7b7885__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialConfirmModal.vue?vue&type=template&id=6b7b7885 */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialConfirmModal.vue?vue&type=template&id=6b7b7885");
57759
57760
57761/***/ }),
57762
57763/***/ "./resources/js/components/SocialContent.vue?vue&type=template&id=49d905f1":
57764/*!*********************************************************************************!*\
57765  !*** ./resources/js/components/SocialContent.vue?vue&type=template&id=49d905f1 ***!
57766  \*********************************************************************************/
57767/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57768
57769"use strict";
57770__webpack_require__.r(__webpack_exports__);
57771/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57772/* harmony export */   render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialContent_vue_vue_type_template_id_49d905f1__WEBPACK_IMPORTED_MODULE_0__.render),
57773/* harmony export */   staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialContent_vue_vue_type_template_id_49d905f1__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
57774/* harmony export */ });
57775/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialContent_vue_vue_type_template_id_49d905f1__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialContent.vue?vue&type=template&id=49d905f1 */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialContent.vue?vue&type=template&id=49d905f1");
57776
57777
57778/***/ }),
57779
57780/***/ "./resources/js/components/SocialContentInput.vue?vue&type=template&id=d28fdcee":
57781/*!**************************************************************************************!*\
57782  !*** ./resources/js/components/SocialContentInput.vue?vue&type=template&id=d28fdcee ***!
57783  \**************************************************************************************/
57784/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57785
57786"use strict";
57787__webpack_require__.r(__webpack_exports__);
57788/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57789/* harmony export */   render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialContentInput_vue_vue_type_template_id_d28fdcee__WEBPACK_IMPORTED_MODULE_0__.render),
57790/* harmony export */   staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialContentInput_vue_vue_type_template_id_d28fdcee__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
57791/* harmony export */ });
57792/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialContentInput_vue_vue_type_template_id_d28fdcee__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialContentInput.vue?vue&type=template&id=d28fdcee */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialContentInput.vue?vue&type=template&id=d28fdcee");
57793
57794
57795/***/ }),
57796
57797/***/ "./resources/js/components/SocialControlModal.vue?vue&type=template&id=08ed1a88":
57798/*!**************************************************************************************!*\
57799  !*** ./resources/js/components/SocialControlModal.vue?vue&type=template&id=08ed1a88 ***!
57800  \**************************************************************************************/
57801/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57802
57803"use strict";
57804__webpack_require__.r(__webpack_exports__);
57805/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57806/* harmony export */   render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialControlModal_vue_vue_type_template_id_08ed1a88__WEBPACK_IMPORTED_MODULE_0__.render),
57807/* harmony export */   staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialControlModal_vue_vue_type_template_id_08ed1a88__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
57808/* harmony export */ });
57809/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialControlModal_vue_vue_type_template_id_08ed1a88__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialControlModal.vue?vue&type=template&id=08ed1a88 */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialControlModal.vue?vue&type=template&id=08ed1a88");
57810
57811
57812/***/ }),
57813
57814/***/ "./resources/js/components/SocialFileInput.vue?vue&type=template&id=6e6352b4":
57815/*!***********************************************************************************!*\
57816  !*** ./resources/js/components/SocialFileInput.vue?vue&type=template&id=6e6352b4 ***!
57817  \***********************************************************************************/
57818/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57819
57820"use strict";
57821__webpack_require__.r(__webpack_exports__);
57822/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57823/* harmony export */   render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialFileInput_vue_vue_type_template_id_6e6352b4__WEBPACK_IMPORTED_MODULE_0__.render),
57824/* harmony export */   staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialFileInput_vue_vue_type_template_id_6e6352b4__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
57825/* harmony export */ });
57826/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialFileInput_vue_vue_type_template_id_6e6352b4__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialFileInput.vue?vue&type=template&id=6e6352b4 */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialFileInput.vue?vue&type=template&id=6e6352b4");
57827
57828
57829/***/ }),
57830
57831/***/ "./resources/js/components/SocialFirstModal.vue?vue&type=template&id=f244bad6":
57832/*!************************************************************************************!*\
57833  !*** ./resources/js/components/SocialFirstModal.vue?vue&type=template&id=f244bad6 ***!
57834  \************************************************************************************/
57835/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57836
57837"use strict";
57838__webpack_require__.r(__webpack_exports__);
57839/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57840/* harmony export */   render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialFirstModal_vue_vue_type_template_id_f244bad6__WEBPACK_IMPORTED_MODULE_0__.render),
57841/* harmony export */   staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialFirstModal_vue_vue_type_template_id_f244bad6__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
57842/* harmony export */ });
57843/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialFirstModal_vue_vue_type_template_id_f244bad6__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialFirstModal.vue?vue&type=template&id=f244bad6 */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialFirstModal.vue?vue&type=template&id=f244bad6");
57844
57845
57846/***/ }),
57847
57848/***/ "./resources/js/components/SocialMessagePage.vue?vue&type=template&id=0578f62e":
57849/*!*************************************************************************************!*\
57850  !*** ./resources/js/components/SocialMessagePage.vue?vue&type=template&id=0578f62e ***!
57851  \*************************************************************************************/
57852/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57853
57854"use strict";
57855__webpack_require__.r(__webpack_exports__);
57856/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57857/* harmony export */   render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialMessagePage_vue_vue_type_template_id_0578f62e__WEBPACK_IMPORTED_MODULE_0__.render),
57858/* harmony export */   staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialMessagePage_vue_vue_type_template_id_0578f62e__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
57859/* harmony export */ });
57860/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialMessagePage_vue_vue_type_template_id_0578f62e__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialMessagePage.vue?vue&type=template&id=0578f62e */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialMessagePage.vue?vue&type=template&id=0578f62e");
57861
57862
57863/***/ }),
57864
57865/***/ "./resources/js/components/SocialNavbar.vue?vue&type=template&id=06f35748":
57866/*!********************************************************************************!*\
57867  !*** ./resources/js/components/SocialNavbar.vue?vue&type=template&id=06f35748 ***!
57868  \********************************************************************************/
57869/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57870
57871"use strict";
57872__webpack_require__.r(__webpack_exports__);
57873/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57874/* harmony export */   render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialNavbar_vue_vue_type_template_id_06f35748__WEBPACK_IMPORTED_MODULE_0__.render),
57875/* harmony export */   staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialNavbar_vue_vue_type_template_id_06f35748__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
57876/* harmony export */ });
57877/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialNavbar_vue_vue_type_template_id_06f35748__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialNavbar.vue?vue&type=template&id=06f35748 */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialNavbar.vue?vue&type=template&id=06f35748");
57878
57879
57880/***/ }),
57881
57882/***/ "./resources/js/components/SocialNotification.vue?vue&type=template&id=12bbe6a3":
57883/*!**************************************************************************************!*\
57884  !*** ./resources/js/components/SocialNotification.vue?vue&type=template&id=12bbe6a3 ***!
57885  \**************************************************************************************/
57886/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57887
57888"use strict";
57889__webpack_require__.r(__webpack_exports__);
57890/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57891/* harmony export */   render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialNotification_vue_vue_type_template_id_12bbe
578916a3__WEBPACK_IMPORTED_MODULE_0__.render),
57892/* harmony export */   staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialNotification_vue_vue_type_template_id_12bbe6a3__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
57893/* harmony export */ });
57894/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialNotification_vue_vue_type_template_id_12bbe6a3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialNotification.vue?vue&type=template&id=12bbe6a3 */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialNotification.vue?vue&type=template&id=12bbe6a3");
57895
57896
57897/***/ }),
57898
57899/***/ "./resources/js/components/SocialNotificationModal.vue?vue&type=template&id=d8136d0c":
57900/*!*******************************************************************************************!*\
57901  !*** ./resources/js/components/SocialNotificationModal.vue?vue&type=template&id=d8136d0c ***!
57902  \*******************************************************************************************/
57903/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57904
57905"use strict";
57906__webpack_require__.r(__webpack_exports__);
57907/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57908/* harmony export */   render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialNotificationModal_vue_vue_type_template_id_d8136d0c__WEBPACK_IMPORTED_MODULE_0__.render),
57909/* harmony export */   staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialNotificationModal_vue_vue_type_template_id_d8136d0c__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
57910/* harmony export */ });
57911/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialNotificationModal_vue_vue_type_template_id_d8136d0c__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialNotificationModal.vue?vue&type=template&id=d8136d0c */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialNotificationModal.vue?vue&type=template&id=d8136d0c");
57912
57913
57914/***/ }),
57915
57916/***/ "./resources/js/components/SocialPage.vue?vue&type=template&id=674a2372":
57917/*!******************************************************************************!*\
57918  !*** ./resources/js/components/SocialPage.vue?vue&type=template&id=674a2372 ***!
57919  \******************************************************************************/
57920/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57921
57922"use strict";
57923__webpack_require__.r(__webpack_exports__);
57924/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57925/* harmony export */   render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPage_vue_vue_type_template_id_674a2372__WEBPACK_IMPORTED_MODULE_0__.render),
57926/* harmony export */   staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPage_vue_vue_type_template_id_674a2372__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
57927/* harmony export */ });
57928/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPage_vue_vue_type_template_id_674a2372__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialPage.vue?vue&type=template&id=674a2372 */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPage.vue?vue&type=template&id=674a2372");
57929
57930
57931/***/ }),
57932
57933/***/ "./resources/js/components/SocialPlaceModal.vue?vue&type=template&id=03abce1e":
57934/*!************************************************************************************!*\
57935  !*** ./resources/js/components/SocialPlaceModal.vue?vue&type=template&id=03abce1e ***!
57936  \************************************************************************************/
57937/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57938
57939"use strict";
57940__webpack_require__.r(__webpack_exports__);
57941/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57942/* harmony export */   render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPlaceModal_vue_vue_type_template_id_03abce1e__WEBPACK_IMPORTED_MODULE_0__.render),
57943/* harmony export */   staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPlaceModal_vue_vue_type_template_id_03abce1e__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
57944/* harmony export */ });
57945/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPlaceModal_vue_vue_type_template_id_03abce1e__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialPlaceModal.vue?vue&type=template&id=03abce1e */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPlaceModal.vue?vue&type=template&id=03abce1e");
57946
57947
57948/***/ }),
57949
57950/***/ "./resources/js/components/SocialPlacePage.vue?vue&type=template&id=8901b1a4":
57951/*!***********************************************************************************!*\
57952  !*** ./resources/js/components/SocialPlacePage.vue?vue&type=template&id=8901b1a4 ***!
57953  \***********************************************************************************/
57954/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57955
57956"use strict";
57957__webpack_require__.r(__webpack_exports__);
57958/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57959/* harmony export */   render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPlacePage_vue_vue_type_template_id_8901b1a4__WEBPACK_IMPORTED_MODULE_0__.render),
57960/* harmony export */   staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPlacePage_vue_vue_type_template_id_8901b1a4__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
57961/* harmony export */ });
57962/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPlacePage_vue_vue_type_template_id_8901b1a4__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialPlacePage.vue?vue&type=template&id=8901b1a4 */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPlacePage.vue?vue&type=template&id=8901b1a4");
57963
57964
57965/***/ }),
57966
57967/***/ "./resources/js/components/SocialPost.vue?vue&type=template&id=73809850":
57968/*!******************************************************************************!*\
57969  !*** ./resources/js/components/SocialPost.vue?vue&type=template&id=73809850 ***!
57970  \******************************************************************************/
57971/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57972
57973"use strict";
57974__webpack_require__.r(__webpack_exports__);
57975/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57976/* harmony export */   render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPost_vue_vue_type_template_id_73809850__WEBPACK_IMPORTED_MODULE_0__.render),
57977/* harmony export */   staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPost_vue_vue_type_template_id_73809850__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
57978/* harmony export */ });
57979/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPost_vue_vue_type_template_id_73809850__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialPost.vue?vue&type=template&id=73809850 */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPost.vue?vue&type=template&id=73809850");
57980
57981
57982/***/ }),
57983
57984/***/ "./resources/js/components/SocialPostComment.vue?vue&type=template&id=63e91817":
57985/*!*************************************************************************************!*\
57986  !*** ./resources/js/components/SocialPostComment.vue?vue&type=template&id=63e91817 ***!
57987  \*************************************************************************************/
57988/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57989
57990"use strict";
57991__webpack_require__.r(__webpack_exports__);
57992/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57993/* harmony export */   render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPostComment_vue_vue_type_template_id_63e91817__WEBPACK_IMPORTED_MODULE_0__.render),
57994/* harmony export */   staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPostComment_vue_vue_type_template_id_63e91817__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
57995/* harmony export */ });
57996/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPostComment_vue_vue_type_template_id_63e91817__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialPostComment.vue?vue&type=template&id=63e91817 */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostComment.vue?vue&type=template&id=63e91817");
57997
57998
57999/***/ }),
58000
58001/***/ "./resources/js/components/SocialPostCommentList.vue?vue&type=template&id=1513d655":
58002/*!*****************************************************************************************!*\
58003  !*** ./resources/js/components/SocialPostCommentList.vue?vue&type=template&id=1513d655 ***!
58004  \*****************************************************************************************/
58005/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
58006
58007"use strict";
58008__webpack_require__.r(__webpack_exports__);
58009/* harmony export */ __webpack_require__.d(__webpack_exports__, {
58010/* harmony export */   render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPostCommentList_vue_vue_type_template_id_1513d655__WEBPACK_IMPORTED_MODULE_0__.render),
58011/* harmony export */   staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPostCommentList_vue_vue_type_template_id_1513d655__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
58012/* harmony export */ });
58013/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPostCommentList_vue_vue_type_template_id_1513d655__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialPostCommentList.vue?vue&type=template&id=1513d655 */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostCommentList.vue?vue&type=template&id=1513d655");
58014
58015
58016/***/ }),
58017
58018/***/ "./resources/js/components/SocialPostEditModal.vue?vue&type=template&id=7a44027b":
58019/*!***************************************************************************************!*\
58020  !*** ./resources/js/components/SocialPostEditModal.vue?vue&type=template&id=7a44027b ***!
58021  \***************************************************************************************/
58022/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
58023
58024"use strict";
58025__webpack_require__.r(__webpack_exports__);
58026/* harmony export */ __webpack_require__.d(__webpack_exports__, {
58027/* harmony export */   render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPostEditModal_vue_vue_type_template_id_7a44027b__WEBPACK_IMPORTED_MODULE_0__.render),
58028/* harmony export */   staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPostEditModal_vue_vue_type_template_id_7a44027b__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
58029/* harmony export */ });
58030/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPostEditModal_vue_vue_type_template_id_7a44027b__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialPostEditModal.vue?vue&type=template&id=7a44027b */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostEditModal.vue?vue&type=template&id=7a44027b");
58031
58032
58033/***/ }),
58034
58035/***/ "./resources/js/components/SocialPostError.vue?vue&type=template&id=588b2740":
58036/*!***********************************************************************************!*\
58037  !*** ./resources/js/components/SocialPostError.vue?vue&type=template&id=588b2740 ***!
58038  \***********************************************************************************/
58039/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
58040
58041"use strict";
58042__webpack_require__.r(__webpack_exports__);
58043/* harmony export */ __webpack_require__.d(__webpack_exports__, {
58044/* harmony export */   render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPostError_vue_vue_type_template_id_588b2740__WEBPACK_IMPORTED_MODULE_0__.render),
58045/* harmony export */   staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPostError_vue_vue_type_template_id_588b2740__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
58046/* harmony export */ });
58047/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPostError_vue_vue_type_template_id_588b2740__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialPostError.vue?vue&type=template&id=588b2740 */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostError.vue?vue&type=template&id=588b2740");
58048
58049
58050/***/ }),
58051
58052/***/ "./resources/js/components/SocialPostList.vue?vue&type=template&id=2176acd4":
58053/*!**********************************************************************************!*\
58054  !*** ./resources/js/components/SocialPostList.vue?vue&type=template&id=2176acd4 ***!
58055  \**********************************************************************************/
58056/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
58057
58058"use strict";
58059__webpack_require__.r(__webpack_exports__);
58060/* harmony export */ __webpack_require__.d(__webpack_exports__, {
58061/* harmony export */   render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPostList_vue_vue_type_template_id_2176acd4__WEBPACK_IMPORTED_MODULE_0__.render),
58062/* harmony export */   staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPostList_vue_vue_type_template_id_2176acd4__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
58063/* harmony export */ });
58064/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPostList_vue_vue_type_template_id_2176acd4__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialPostList.vue?vue&type=template&id=2176acd4 */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostList.vue?vue&type=template&id=2176acd4");
58065
58066
58067/***/ }),
58068
58069/***/ "./resources/js/components/SocialPostPage.vue?vue&type=template&id=5b6c09f2":
58070/*!**********************************************************************************!*\
58071  !*** ./resources/js/components/SocialPostPage.vue?vue&type=template&id=5b6c09f2 ***!
58072  \**********************************************************************************/
58073/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
58074
58075"use strict";
58076__webpack_require__.r(__webpack_exports__);
58077/* harmony export */ __webpack_require__.d(__webpack_exports__, {
58078/* harmony export */   render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPostPage_vue_vue_type_template_id_5b6c09f2__WEBPACK_IMPORTED_MODULE_0__.render),
58079/* harmony export */   staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPostPage_vue_vue_type_templa
58079te_id_5b6c09f2__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
58080/* harmony export */ });
58081/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPostPage_vue_vue_type_template_id_5b6c09f2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialPostPage.vue?vue&type=template&id=5b6c09f2 */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostPage.vue?vue&type=template&id=5b6c09f2");
58082
58083
58084/***/ }),
58085
58086/***/ "./resources/js/components/SocialPostReplyList.vue?vue&type=template&id=7e3367e0":
58087/*!***************************************************************************************!*\
58088  !*** ./resources/js/components/SocialPostReplyList.vue?vue&type=template&id=7e3367e0 ***!
58089  \***************************************************************************************/
58090/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
58091
58092"use strict";
58093__webpack_require__.r(__webpack_exports__);
58094/* harmony export */ __webpack_require__.d(__webpack_exports__, {
58095/* harmony export */   render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPostReplyList_vue_vue_type_template_id_7e3367e0__WEBPACK_IMPORTED_MODULE_0__.render),
58096/* harmony export */   staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPostReplyList_vue_vue_type_template_id_7e3367e0__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
58097/* harmony export */ });
58098/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialPostReplyList_vue_vue_type_template_id_7e3367e0__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialPostReplyList.vue?vue&type=template&id=7e3367e0 */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialPostReplyList.vue?vue&type=template&id=7e3367e0");
58099
58100
58101/***/ }),
58102
58103/***/ "./resources/js/components/SocialSearchModal.vue?vue&type=template&id=970b0d46":
58104/*!*************************************************************************************!*\
58105  !*** ./resources/js/components/SocialSearchModal.vue?vue&type=template&id=970b0d46 ***!
58106  \*************************************************************************************/
58107/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
58108
58109"use strict";
58110__webpack_require__.r(__webpack_exports__);
58111/* harmony export */ __webpack_require__.d(__webpack_exports__, {
58112/* harmony export */   render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialSearchModal_vue_vue_type_template_id_970b0d46__WEBPACK_IMPORTED_MODULE_0__.render),
58113/* harmony export */   staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialSearchModal_vue_vue_type_template_id_970b0d46__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
58114/* harmony export */ });
58115/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialSearchModal_vue_vue_type_template_id_970b0d46__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialSearchModal.vue?vue&type=template&id=970b0d46 */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialSearchModal.vue?vue&type=template&id=970b0d46");
58116
58117
58118/***/ }),
58119
58120/***/ "./resources/js/components/SocialSelectUserModal.vue?vue&type=template&id=21ad6efe":
58121/*!*****************************************************************************************!*\
58122  !*** ./resources/js/components/SocialSelectUserModal.vue?vue&type=template&id=21ad6efe ***!
58123  \*****************************************************************************************/
58124/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
58125
58126"use strict";
58127__webpack_require__.r(__webpack_exports__);
58128/* harmony export */ __webpack_require__.d(__webpack_exports__, {
58129/* harmony export */   render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialSelectUserModal_vue_vue_type_template_id_21ad6efe__WEBPACK_IMPORTED_MODULE_0__.render),
58130/* harmony export */   staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialSelectUserModal_vue_vue_type_template_id_21ad6efe__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
58131/* harmony export */ });
58132/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialSelectUserModal_vue_vue_type_template_id_21ad6efe__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialSelectUserModal.vue?vue&type=template&id=21ad6efe */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialSelectUserModal.vue?vue&type=template&id=21ad6efe");
58133
58134
58135/***/ }),
58136
58137/***/ "./resources/js/components/SocialShareModal.vue?vue&type=template&id=aec0eb74":
58138/*!************************************************************************************!*\
58139  !*** ./resources/js/components/SocialShareModal.vue?vue&type=template&id=aec0eb74 ***!
58140  \************************************************************************************/
58141/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
58142
58143"use strict";
58144__webpack_require__.r(__webpack_exports__);
58145/* harmony export */ __webpack_require__.d(__webpack_exports__, {
58146/* harmony export */   render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialShareModal_vue_vue_type_template_id_aec0eb74__WEBPACK_IMPORTED_MODULE_0__.render),
58147/* harmony export */   staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialShareModal_vue_vue_type_template_id_aec0eb74__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
58148/* harmony export */ });
58149/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialShareModal_vue_vue_type_template_id_aec0eb74__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialShareModal.vue?vue&type=template&id=aec0eb74 */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialShareModal.vue?vue&type=template&id=aec0eb74");
58150
58151
58152/***/ }),
58153
58154/***/ "./resources/js/components/SocialTagPage.vue?vue&type=template&id=471d22c1":
58155/*!*********************************************************************************!*\
58156  !*** ./resources/js/components/SocialTagPage.vue?vue&type=template&id=471d22c1 ***!
58157  \*********************************************************************************/
58158/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
58159
58160"use strict";
58161__webpack_require__.r(__webpack_exports__);
58162/* harmony export */ __webpack_require__.d(__webpack_exports__, {
58163/* harmony export */   render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialTagPage_vue_vue_type_template_id_471d22c1__WEBPACK_IMPORTED_MODULE_0__.render),
58164/* harmony export */   staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialTagPage_vue_vue_type_template_id_471d22c1__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
58165/* harmony export */ });
58166/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialTagPage_vue_vue_type_template_id_471d22c1__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialTagPage.vue?vue&type=template&id=471d22c1 */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialTagPage.vue?vue&type=template&id=471d22c1");
58167
58168
58169/***/ }),
58170
58171/***/ "./resources/js/components/SocialUpload.vue?vue&type=template&id=0517e8b9":
58172/*!********************************************************************************!*\
58173  !*** ./resources/js/components/SocialUpload.vue?vue&type=template&id=0517e8b9 ***!
58174  \********************************************************************************/
58175/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
58176
58177"use strict";
58178__webpack_require__.r(__webpack_exports__);
58179/* harmony export */ __webpack_require__.d(__webpack_exports__, {
58180/* harmony export */   render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialUpload_vue_vue_type_template_id_0517e8b9__WEBPACK_IMPORTED_MODULE_0__.render),
58181/* harmony export */   staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialUpload_vue_vue_type_template_id_0517e8b9__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
58182/* harmony export */ });
58183/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialUpload_vue_vue_type_template_id_0517e8b9__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialUpload.vue?vue&type=template&id=0517e8b9 */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialUpload.vue?vue&type=template&id=0517e8b9");
58184
58185
58186/***/ }),
58187
58188/***/ "./resources/js/components/SocialUploadFailModal.vue?vue&type=template&id=43154826":
58189/*!*****************************************************************************************!*\
58190  !*** ./resources/js/components/SocialUploadFailModal.vue?vue&type=template&id=43154826 **
58190*!
58191  \*****************************************************************************************/
58192/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
58193
58194"use strict";
58195__webpack_require__.r(__webpack_exports__);
58196/* harmony export */ __webpack_require__.d(__webpack_exports__, {
58197/* harmony export */   render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialUploadFailModal_vue_vue_type_template_id_43154826__WEBPACK_IMPORTED_MODULE_0__.render),
58198/* harmony export */   staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialUploadFailModal_vue_vue_type_template_id_43154826__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
58199/* harmony export */ });
58200/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialUploadFailModal_vue_vue_type_template_id_43154826__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialUploadFailModal.vue?vue&type=template&id=43154826 */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialUploadFailModal.vue?vue&type=template&id=43154826");
58201
58202
58203/***/ }),
58204
58205/***/ "./resources/js/components/SocialUploadingModal.vue?vue&type=template&id=64a15a24":
58206/*!****************************************************************************************!*\
58207  !*** ./resources/js/components/SocialUploadingModal.vue?vue&type=template&id=64a15a24 ***!
58208  \****************************************************************************************/
58209/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
58210
58211"use strict";
58212__webpack_require__.r(__webpack_exports__);
58213/* harmony export */ __webpack_require__.d(__webpack_exports__, {
58214/* harmony export */   render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialUploadingModal_vue_vue_type_template_id_64a15a24__WEBPACK_IMPORTED_MODULE_0__.render),
58215/* harmony export */   staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialUploadingModal_vue_vue_type_template_id_64a15a24__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
58216/* harmony export */ });
58217/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialUploadingModal_vue_vue_type_template_id_64a15a24__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialUploadingModal.vue?vue&type=template&id=64a15a24 */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialUploadingModal.vue?vue&type=template&id=64a15a24");
58218
58219
58220/***/ }),
58221
58222/***/ "./resources/js/components/SocialUserModal.vue?vue&type=template&id=ff06facc":
58223/*!***********************************************************************************!*\
58224  !*** ./resources/js/components/SocialUserModal.vue?vue&type=template&id=ff06facc ***!
58225  \***********************************************************************************/
58226/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
58227
58228"use strict";
58229__webpack_require__.r(__webpack_exports__);
58230/* harmony export */ __webpack_require__.d(__webpack_exports__, {
58231/* harmony export */   render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialUserModal_vue_vue_type_template_id_ff06facc__WEBPACK_IMPORTED_MODULE_0__.render),
58232/* harmony export */   staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialUserModal_vue_vue_type_template_id_ff06facc__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
58233/* harmony export */ });
58234/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialUserModal_vue_vue_type_template_id_ff06facc__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialUserModal.vue?vue&type=template&id=ff06facc */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialUserModal.vue?vue&type=template&id=ff06facc");
58235
58236
58237/***/ }),
58238
58239/***/ "./resources/js/components/SocialUserPage.vue?vue&type=template&id=7070199c":
58240/*!**********************************************************************************!*\
58241  !*** ./resources/js/components/SocialUserPage.vue?vue&type=template&id=7070199c ***!
58242  \**********************************************************************************/
58243/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
58244
58245"use strict";
58246__webpack_require__.r(__webpack_exports__);
58247/* harmony export */ __webpack_require__.d(__webpack_exports__, {
58248/* harmony export */   render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialUserPage_vue_vue_type_template_id_7070199c__WEBPACK_IMPORTED_MODULE_0__.render),
58249/* harmony export */   staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialUserPage_vue_vue_type_template_id_7070199c__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
58250/* harmony export */ });
58251/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SocialUserPage_vue_vue_type_template_id_7070199c__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialUserPage.vue?vue&type=template&id=7070199c */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/SocialUserPage.vue?vue&type=template&id=7070199c");
58252
58253
58254/***/ }),
58255
58256/***/ "./resources/js/components/TimeFormat.vue?vue&type=template&id=46dba3cf":
58257/*!******************************************************************************!*\
58258  !*** ./resources/js/components/TimeFormat.vue?vue&type=template&id=46dba3cf ***!
58259  \******************************************************************************/
58260/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
58261
58262"use strict";
58263__webpack_require__.r(__webpack_exports__);
58264/* harmony export */ __webpack_require__.d(__webpack_exports__, {
58265/* harmony export */   render: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_TimeFormat_vue_vue_type_template_id_46dba3cf__WEBPACK_IMPORTED_MODULE_0__.render),
58266/* harmony export */   staticRenderFns: () => (/* reexport safe */ _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_TimeFormat_vue_vue_type_template_id_46dba3cf__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
58267/* harmony export */ });
58268/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_use_0_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_2_node_modules_vue_loader_lib_index_js_vue_loader_options_TimeFormat_vue_vue_type_template_id_46dba3cf__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TimeFormat.vue?vue&type=template&id=46dba3cf */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5.use[0]!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/TimeFormat.vue?vue&type=template&id=46dba3cf");
58269
58270
58271/***/ }),
58272
58273/***/ "./resources/js/components/ProfileEditModal.vue?vue&type=style&index=0&id=1d27ac85&scoped=true&lang=css":
58274/*!**************************************************************************************************************!*\
58275  !*** ./resources/js/components/ProfileEditModal.vue?vue&type=style&index=0&id=1d27ac85&scoped=true&lang=css ***!
58276  \**************************************************************************************************************/
58277/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
58278
58279"use strict";
58280__webpack_require__.r(__webpack_exports__);
58281/* harmony import */ var _node_modules_style_loader_dist_cjs_js_node_modules_css_loader_dist_cjs_js_clonedRuleSet_8_use_1_node_modules_vue_loader_lib_loaders_stylePostLo
58281ader_js_node_modules_postcss_loader_dist_cjs_js_clonedRuleSet_8_use_2_node_modules_vue_loader_lib_index_js_vue_loader_options_ProfileEditModal_vue_vue_type_style_index_0_id_1d27ac85_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/style-loader/dist/cjs.js!../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-8.use[1]!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-8.use[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileEditModal.vue?vue&type=style&index=0&id=1d27ac85&scoped=true&lang=css */ "./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-8.use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-8.use[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/components/ProfileEditModal.vue?vue&type=style&index=0&id=1d27ac85&scoped=true&lang=css");
58282
58283
58284/***/ }),
58285
vendor: 3,357 bytes, lines 58286-58396
58286/***/ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js":
58287/*!********************************************************************!*\
58288  !*** ./node_modules/vue-loader/lib/runtime/componentNormalizer.js ***!
58289  \********************************************************************/
58290/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
58291
58292"use strict";
58293__webpack_require__.r(__webpack_exports__);
58294/* harmony export */ __webpack_require__.d(__webpack_exports__, {
58295/* harmony export */   "default": () => (/* binding */ normalizeComponent)
58296/* harmony export */ });
58297/* globals __VUE_SSR_CONTEXT__ */
58298
58299// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).
58300// This module is a runtime utility for cleaner component module output and will
58301// be included in the final webpack user bundle.
58302
58303function normalizeComponent(
58304  scriptExports,
58305  render,
58306  staticRenderFns,
58307  functionalTemplate,
58308  injectStyles,
58309  scopeId,
58310  moduleIdentifier /* server only */,
58311  shadowMode /* vue-cli only */
58312) {
58313  // Vue.extend constructor export interop
58314  var options =
58315    typeof scriptExports === 'function' ? scriptExports.options : scriptExports
58316
58317  // render functions
58318  if (render) {
58319    options.render = render
58320    options.staticRenderFns = staticRenderFns
58321    options._compiled = true
58322  }
58323
58324  // functional template
58325  if (functionalTemplate) {
58326    options.functional = true
58327  }
58328
58329  // scopedId
58330  if (scopeId) {
58331    options._scopeId = 'data-v-' + scopeId
58332  }
58333
58334  var hook
58335  if (moduleIdentifier) {
58336    // server build
58337    hook = function (context) {
58338      // 2.3 injection
58339      context =
58340        context || // cached call
58341        (this.$vnode && this.$vnode.ssrContext) || // stateful
58342        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
58343      // 2.2 with runInNewContext: true
58344      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
58345        context = __VUE_SSR_CONTEXT__
58346      }
58347      // inject component styles
58348      if (injectStyles) {
58349        injectStyles.call(this, context)
58350      }
58351      // register component module identifier for async chunk inferrence
58352      if (context && context._registeredComponents) {
58353        context._registeredComponents.add(moduleIdentifier)
58354      }
58355    }
58356    // used by ssr in case component is cached and beforeCreate
58357    // never gets called
58358    options._ssrRegister = hook
58359  } else if (injectStyles) {
58360    hook = shadowMode
58361      ? function () {
58362          injectStyles.call(
58363            this,
58364            (options.functional ? this.parent : this).$root.$options.shadowRoot
58365          )
58366        }
58367      : injectStyles
58368  }
58369
58370  if (hook) {
58371    if (options.functional) {
58372      // for template-only hot-reload because in that case the render fn doesn't
58373      // go through the normalizer
58374      options._injectStyles = hook
58375      // register for functional component in vue file
58376      var originalRender = options.render
58377      options.render = function renderWithStyleInjection(h, context) {
58378        hook.call(context)
58379        return originalRender(h, context)
58380      }
58381    } else {
58382      // inject component registration as beforeCreate hook
58383      var existing = options.beforeCreate
58384      options.beforeCreate = existing ? [].concat(existing, hook) : [hook]
58385    }
58386  }
58387
58388  return {
58389    exports: scriptExports,
58390    options: options
58391  }
58392}
58393
58394
58395/***/ }),
58396
vendor: 83,571 bytes, lines 58397-61576
58397/***/ "./node_modules/vue-router/dist/vue-router.esm.js":
58398/*!********************************************************!*\
58399  !*** ./node_modules/vue-router/dist/vue-router.esm.js ***!
58400  \********************************************************/
58401/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
58402
58403"use strict";
58404__webpack_require__.r(__webpack_exports__);
58405/* harmony export */ __webpack_require__.d(__webpack_exports__, {
58406/* harmony export */   NavigationFailureType: () => (/* binding */ NavigationFailureType),
58407/* harmony export */   RouterLink: () => (/* binding */ Link),
58408/* harmony export */   RouterView: () => (/* binding */ View),
58409/* harmony export */   START_LOCATION: () => (/* binding */ START),
58410/* harmony export */   "default": () => (/* binding */ VueRouter$1),
58411/* harmony export */   isNavigationFailure: () => (/* binding */ isNavigationFailure),
58412/* harmony export */   version: () => (/* binding */ version)
58413/* harmony export */ });
58414/*!
58415  * vue-router v3.6.5
58416  * (c) 2022 Evan You
58417  * @license MIT
58418  */
58419/*  */
58420
58421function assert (condition, message) {
58422  if (!condition) {
58423    throw new Error(("[vue-router] " + message))
58424  }
58425}
58426
58427function warn (condition, message) {
58428  if (!condition) {
58429    typeof console !== 'undefined' && console.warn(("[vue-router] " + message));
58430  }
58431}
58432
58433function extend (a, b) {
58434  for (var key in b) {
58435    a[key] = b[key];
58436  }
58437  return a
58438}
58439
58440/*  */
58441
58442var encodeReserveRE = /[!'()*]/g;
58443var encodeReserveReplacer = function (c) { return '%' + c.charCodeAt(0).toString(16); };
58444var commaRE = /%2C/g;
58445
58446// fixed encodeURIComponent which is more conformant to RFC3986:
58447// - escapes [!'()*]
58448// - preserve commas
58449var encode = function (str) { return encodeURIComponent(str)
58450    .replace(encodeReserveRE, encodeReserveReplacer)
58451    .replace(commaRE, ','); };
58452
58453function decode (str) {
58454  try {
58455    return decodeURIComponent(str)
58456  } catch (err) {
58457    if (true) {
58458      warn(false, ("Error decoding \"" + str + "\". Leaving it intact."));
58459    }
58460  }
58461  return str
58462}
58463
58464function resolveQuery (
58465  query,
58466  extraQuery,
58467  _parseQuery
58468) {
58469  if ( extraQuery === void 0 ) extraQuery = {};
58470
58471  var parse = _parseQuery || parseQuery;
58472  var parsedQuery;
58473  try {
58474    parsedQuery = parse(query || '');
58475  } catch (e) {
58476     true && warn(false, e.message);
58477    parsedQuery = {};
58478  }
58479  for (var key in extraQuery) {
58480    var value = extraQuery[key];
58481    parsedQuery[key] = Array.isArray(value)
58482      ? value.map(castQueryParamValue)
58483      : castQueryParamValue(value);
58484  }
58485  return parsedQuery
58486}
58487
58488var castQueryParamValue = function (value) { return (value == null || typeof value === 'object' ? value : String(value)); };
58489
58490function parseQuery (query) {
58491  var res = {};
58492
58493  query = query.trim().replace(/^(\?|#|&)/, '');
58494
58495  if (!query) {
58496    return res
58497  }
58498
58499  query.split('&').forEach(function (param) {
58500    var parts = param.replace(/\+/g, ' ').split('=');
58501    var key = decode(parts.shift());
58502    var val = parts.length > 0 ? decode(parts.join('=')) : null;
58503
58504    if (res[key] === undefined) {
58505      res[key] = val;
58506    } else if (Array.isArray(res[key])) {
58507      res[key].push(val);
58508    } else {
58509      res[key] = [res[key], val];
58510    }
58511  });
58512
58513  return res
58514}
58515
58516function stringifyQuery (obj) {
58517  var res = obj
58518    ? Object.keys(obj)
58519      .map(function (key) {
58520        var val = obj[key];
58521
58522        if (val === undefined) {
58523          return ''
58524        }
58525
58526        if (val === null) {
58527          return encode(key)
58528        }
58529
58530        if (Array.isArray(val)) {
58531          var result = [];
58532          val.forEach(function (val2) {
58533            if (val2 === undefined) {
58534              return
58535            }
58536            if (val2 === null) {
58537              result.push(encode(key));
58538            } else {
58539              result.push(encode(key) + '=' + encode(val2));
58540            }
58541          });
58542          return result.join('&')
58543        }
58544
58545        return encode(key) + '=' + encode(val)
58546      })
58547      .filter(function (x) { return x.length > 0; })
58548      .join('&')
58549    : null;
58550  return res ? ("?" + res) : ''
58551}
58552
58553/*  */
58554
58555var trailingSlashRE = /\/?$/;
58556
58557function createRoute (
58558  record,
58559  location,
58560  redirectedFrom,
58561  router
58562) {
58563  var stringifyQuery = router && router.options.stringifyQuery;
58564
58565  var query = location.query || {};
58566  try {
58567    query = clone(query);
58568  } catch (e) {}
58569
58570  var route = {
58571    name: location.name || (record && record.name),
58572    meta: (record && record.meta) || {},
58573    path: location.path || '/',
58574    hash: location.hash || '',
58575    query: query,
58576    params: location.params || {},
58577    fullPath: getFullPath(location, stringifyQuery),
58578    matched: record ? formatMatch(record) : []
58579  };
58580  if (redirectedFrom) {
58581    route.redirectedFrom = getFullPath(redirectedFrom, stringifyQuery);
58582  }
58583  return Object.freeze(route)
58584}
58585
58586function clone (value) {
58587  if (Array.isArray(value)) {
58588    return value.map(clone)
58589  } else if (value && typeof value === 'object') {
58590    var res = {};
58591    for (var key in value) {
58592      res[key] = clone(value[key]);
58593    }
58594    return res
58595  } else {
58596    return value
58597  }
58598}
58599
58600// the starting route that represents the initial state
58601var START = createRoute(null, {
58602  path: '/'
58603});
58604
58605function formatMatch (record) {
58606  var res = [];
58607  while (record) {
58608    res.unshift(record);
58609    record = record.parent;
58610  }
58611  return res
58612}
58613
58614function getFullPath (
58615  ref,
58616  _stringifyQuery
58617) {
58618  var path = ref.path;
58619  var query = ref.query; if ( query === void 0 ) query = {};
58620  var hash = ref.hash; if ( hash === void 0 ) hash = '';
58621
58622  var stringify = _stringifyQuery || stringifyQuery;
58623  return (path || '/') + stringify(query) + hash
58624}
58625
58626function isSameRoute (a, b, onlyPath) {
58627  if (b === START) {
58628    return a === b
58629  } else if (!b) {
58630    return false
58631  } else if (a.path && b.path) {
58632    return a.path.replace(trailingSlashRE, '') === b.path.replace(trailingSlashRE, '') && (onlyPath ||
58633      a.hash === b.hash &&
58634      isObjectEqual(a.query, b.query))
58635  } else if (a.name && b.name) {
58636    return (
58637      a.name === b.name &&
58638      (onlyPath || (
58639        a.hash === b.hash &&
58640      isObjectEqual(a.query, b.query) &&
58641      isObjectEqual(a.params, b.params))
58642      )
58643    )
58644  } else {
58645    return false
58646  }
58647}
58648
58649function isObjectEqual (a, b) {
58650  if ( a === void 0 ) a = {};
58651  if ( b === void 0 ) b = {};
58652
58653  // handle null value #1566
58654  if (!a || !b) { return a === b }
58655  var aKeys = Object.keys(a).sort();
58656  var bKeys = Object.keys(b).sort();
58657  if (aKeys.length !== bKeys.length) {
58658    return false
58659  }
58660  return aKeys.every(function (key, i) {
58661    var aVal = a[key];
58662    var bKey = bKeys[i];
58663    if (bKey !== key) { return false }
58664    var bVal = b[key];
58665    // query values can be null and undefined
58666    if (aVal == null || bVal == null) { return aVal === bVal }
58667    // check nested equality
58668    if (typeof aVal === 'object' && typeof bVal === 'object') {
58669      return isObjectEqual(aVal, bVal)
58670    }
58671    return String(aVal) === String(bVal)
58672  })
58673}
58674
58675function isIncludedRoute (current, target) {
58676  return (
58677    current.path.replace(trailingSlashRE, '/').indexOf(
58678      target.path.replace(trailingSlashRE, '/')
58679    ) === 0 &&
58680    (!target.hash || current.hash === target.hash) &&
58681    queryIncludes(current.query, target.query)
58682  )
58683}
58684
58685function queryIncludes (current, target) {
58686  for (var key in target) {
58687    if (!(key in current)) {
58688      return false
58689    }
58690  }
58691  return true
58692}
58693
58694function handleRouteEntered (route) {
58695  for (var i = 0; i < route.matched.length; i++) {
58696    var record = route.matched[i];
58697    for (var name in record.instances) {
58698      var instance = record.instances[name];
58699      var cbs = record.enteredCbs[name];
58700      if (!instance || !cbs) { continue }
58701      delete record.enteredCbs[name];
58702      for (var i$1 = 0; i$1 < cbs.length; i$1++) {
58703        if (!instance._isBeingDestroyed) { cbs[i$1](instance); }
58704      }
58705    }
58706  }
58707}
58708
58709var View = {
58710  name: 'RouterView',
58711  functional: true,
58712  props: {
58713    name: {
58714      type: String,
58715      default: 'default'
58716    }
58717  },
58718  render: function render (_, ref) {
58719    var props = ref.props;
58720    var children = ref.children;
58721    var parent = ref.parent;
58722    var data = ref.data;
58723
58724    // used by devtools to display a router-view badge
58725    data.routerView = true;
58726
58727    // directly use parent context's createElement() function
58728    // so that components rendered by router-view can resolve named slots
58729    var h = parent.$createElement;
58730    var name = props.name;
58731    var route = parent.$route;
58732    var cache = parent._routerViewCache || (parent._routerViewCache = {});
58733
58734    // determine current view depth, also check to see if the tree
58735    // has been toggled inactive but kept-alive.
58736    var depth = 0;
58737    var inactive = false;
58738    while (parent && parent._routerRoot !== parent) {
58739      var vnodeData = parent.$vnode ? parent.$vnode.data : {};
58740      if (vnodeData.routerView) {
58741        depth++;
58742      }
58743      if (vnodeData.keepAlive && parent._directInactive && parent._inactive) {
58744        inactive = true;
58745      }
58746      parent = parent.$parent;
58747    }
58748    data.routerViewDepth = depth;
58749
58750    // render previous view if the tree is inactive and kept-alive
58751    if (inactive) {
58752      var cachedData = cache[name];
58753      var cachedComponent = cachedData && cachedData.component;
58754      if (cachedComponent) {
58755        // #2301
58756        // pass props
58757        if (cachedData.configProps) {
58758          fillPropsinData(cachedComponent, data, cachedData.route, cachedData.configProps);
58759        }
58760        return h(cachedComponent, data, children)
58761      } else {
58762        // render previous empty view
58763        return h()
58764      }
58765    }
58766
58767    var matched = route.matched[depth];
58768    var component = matched && matched.components[name];
58769
58770    // render empty node if no matched route or no config component
58771    if (!matched || !component) {
58772      cache[name] = null;
58773      return h()
58774    }
58775
58776    // cache component
58777    cache[name] = { component: component };
58778
58779    // attach instance registration hook
58780    // this will be called in the instance's injected lifecycle hooks
58781    data.registerRouteInstance = function (vm, val) {
58782      // val could be undefined for unregistration
58783      var current = matched.instances[name];
58784      if (
58785        (val && current !== vm) ||
58786        (!val && current === vm)
58787      ) {
58788        matched.instances[name] = val;
58789      }
58790    }
58791
58792    // also register instance in prepatch hook
58793    // in case the same component instance is reused across different routes
58794    ;(data.hook || (data.hook = {})).prepatch = function (_, vnode) {
58795      matched.instances[name] = vnode.componentInstance;
58796    };
58797
58798    // register instance in init hook
58799    // in case kept-alive component be actived when routes changed
58800    data.hook.init = function (vnode) {
58801      if (vnode.data.keepAlive &&
58802        vnode.componentInstance &&
58803        vnode.componentInstance !== matched.instances[name]
58804      ) {
58805        matched.instances[name] = vnode.componentInstance;
58806      }
58807
58808      // if the route transition has already been confirmed then we weren't
58809      // able to call the cbs during confirmation as the component was not
58810      // registered yet, so we call it here.
58811      handleRouteEntered(route);
58812    };
58813
58814    var configProps = matched.props && matched.props[name];
58815    // save route and configProps in cache
58816    if (configProps) {
58817      extend(cache[name], {
58818        route: route,
58819        configProps: configProps
58820      });
58821      fillPropsinData(component, data, route, configProps);
58822    }
58823
58824    return h(component, data, children)
58825  }
58826};
58827
58828function fillPropsinData (component, data, route, configProps) {
58829  // resolve props
58830  var propsToPass = data.props = resolveProps(route, configProps);
58831  if (propsToPass) {
58832    // clone to prevent mutation
58833    propsToPass = data.props = extend({}, propsToPass);
58834    // pass non-declared props as attrs
58835    var attrs = data.attrs = data.attrs || {};
58836    for (var key in propsToPass) {
58837      if (!component.props || !(key in component.props)) {
58838        attrs[key] = propsToPass[key];
58839        delete propsToPass[key];
58840      }
58841    }
58842  }
58843}
58844
58845function resolveProps (route, config) {
58846  switch (typeof config) {
58847    case 'undefined':
58848      return
58849    case 'object':
58850      return config
58851    case 'function':
58852      return config(route)
58853    case 'boolean':
58854      return config ? route.params : undefined
58855    default:
58856      if (true) {
58857        warn(
58858          false,
58859          "props in \"" + (route.path) + "\" is a " + (typeof config) + ", " +
58860          "expecting an object, function or boolean."
58861        );
58862      }
58863  }
58864}
58865
58866/*  */
58867
58868function resolvePath (
58869  relative,
58870  base,
58871  append
58872) {
58873  var firstChar = relative.charAt(0);
58874  if (firstChar === '/') {
58875    return relative
58876  }
58877
58878  if (firstChar === '?' || firstChar === '#') {
58879    return base + relative
58880  }
58881
58882  var stack = base.split('/');
58883
58884  // remove trailing segment if:
58885  // - not appending
58886  // - appending to trailing slash (last segment is empty)
58887  if (!append || !stack[stack.length - 1]) {
58888    stack.pop();
58889  }
58890
58891  // resolve relative path
58892  var segments = relative.replace(/^\//, '').split('/');
58893  for (var i = 0; i < segments.length; i++) {
58894    var segment = segments[i];
58895    if (segment === '..') {
58896      stack.pop();
58897    } else if (segment !== '.') {
58898      stack.push(segment);
58899    }
58900  }
58901
58902  // ensure leading slash
58903  if (stack[0] !== '') {
58904    stack.unshift('');
58905  }
58906
58907  return stack.join('/')
58908}
58909
58910function parsePath (path) {
58911  var hash = '';
58912  var query = '';
58913
58914  var hashIndex = path.indexOf('#');
58915  if (hashIndex >= 0) {
58916    hash = path.slice(hashIndex);
58917    path = path.slice(0, hashIndex);
58918  }
58919
58920  var queryIndex = path.indexOf('?');
58921  if (queryIndex >= 0) {
58922    query = path.slice(queryIndex + 1);
58923    path = path.slice(0, queryIndex);
58924  }
58925
58926  return {
58927    path: path,
58928    query: query,
58929    hash: hash
58930  }
58931}
58932
58933function cleanPath (path) {
58934  return path.replace(/\/(?:\s*\/)+/g, '/')
58935}
58936
58937var isarray = Array.isArray || function (arr) {
58938  return Object.prototype.toString.call(arr) == '[object Array]';
58939};
58940
58941/**
58942 * Expose `pathToRegexp`.
58943 */
58944var pathToRegexp_1 = pathToRegexp;
58945var parse_1 = parse;
58946var compile_1 = compile;
58947var tokensToFunction_1 = tokensToFunction;
58948var tokensToRegExp_1 = tokensToRegExp;
58949
58950/**
58951 * The main path matching regexp utility.
58952 *
58953 * @type {RegExp}
58954 */
58955var PATH_REGEXP = new RegExp([
58956  // Match escaped characters that would otherwise appear in future matches.
58957  // This allows the user to escape special characters that won't transform.
58958  '(\\\\.)',
58959  // Match Express-style parameters and un-named parameters with a prefix
58960  // and optional suffixes. Matches appear as:
58961  //
58962  // "/:test(\\d+)?" => ["/", "test", "\d+", undefined, "?", undefined]
58963  // "/route(\\d+)"  => [undefined, undefined, undefined, "\d+", undefined, undefined]
58964  // "/*"            => ["/", undefined, undefined, undefined, undefined, "*"]
58965  '([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))'
58966].join('|'), 'g');
58967
58968/**
58969 * Parse a string for the raw tokens.
58970 *
58971 * @param  {string}  str
58972 * @param  {Object=} options
58973 * @return {!Array}
58974 */
58975function parse (str, options) {
58976  var tokens = [];
58977  var key = 0;
58978  var index = 0;
58979  var path = '';
58980  var defaultDelimiter = options && options.delimiter || '/';
58981  var res;
58982
58983  while ((res = PATH_REGEXP.exec(str)) != null) {
58984    var m = res[0];
58985    var escaped = res[1];
58986    var offset = res.index;
58987    path += str.slice(index, offset);
58988    index = offset + m.length;
58989
58990    // Ignore already escaped sequences.
58991    if (escaped) {
58992      path += escaped[1];
58993      continue
58994    }
58995
58996    var next = str[index];
58997    var prefix = res[2];
58998    var name = res[3];
58999    var capture = res[4];
59000    var group = res[5];
59001    var modifier = res[6];
59002    var asterisk = res[7];
59003
59004    // Push the current path onto the tokens.
59005    if (path) {
59006      tokens.push(path);
59007      path = '';
59008    }
59009
59010    var partial = prefix != null && next != null && next !== prefix;
59011    var repeat = modifier === '+' || modifier === '*';
59012    var optional = modifier === '?' || modifier === '*';
59013    var delimiter = res[2] || defaultDelimiter;
59014    var pattern = capture || group;
59015
59016    tokens.push({
59017      name: name || key++,
59018      prefix: prefix || '',
59019      delimiter: delimiter,
59020      optional: optional,
59021      repeat: repeat,
59022      partial: partial,
59023      asterisk: !!asterisk,
59024      pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')
59025    });
59026  }
59027
59028  // Match any characters still remaining.
59029  if (index < str.length) {
59030    path += str.substr(index);
59031  }
59032
59033  // If the path exists, push it onto the end.
59034  if (path) {
59035    tokens.push(path);
59036  }
59037
59038  return tokens
59039}
59040
59041/**
59042 * Compile a string to a template function for the path.
59043 *
59044 * @param  {string}             str
59045 * @param  {Object=}            options
59046 * @return {!function(Object=, Object=)}
59047 */
59048function compile (str, options) {
59049  return tokensToFunction(parse(str, options), options)
59050}
59051
59052/**
59053 * Prettier encoding of URI path segments.
59054 *
59055 * @param  {string}
59056 * @return {string}
59057 */
59058function encodeURIComponentPretty (str) {
59059  return encodeURI(str).replace(/[\/?#]/g, function (c) {
59060    return '%' + c.charCodeAt(0).toString(16).toUpperCase()
59061  })
59062}
59063
59064/**
59065 * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.
59066 *
59067 * @param  {string}
59068 * @return {string}
59069 */
59070function encodeAsterisk (str) {
59071  return encodeURI(str).replace(/[?#]/g, function (c) {
59072    return '%' + c.charCodeAt(0).toString(16).toUpperCase()
59073  })
59074}
59075
59076/**
59077 * Expose a method for transforming tokens into the path function.
59078 */
59079function tokensToFunction (tokens, options) {
59080  // Compile all the tokens into regexps.
59081  var matches = new Array(tokens.length);
59082
59083  // Compile all the patterns before compilation.
59084  for (var i = 0; i < tokens.length; i++) {
59085    if (typeof tokens[i] === 'object') {
59086      matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options));
59087    }
59088  }
59089
59090  return function (obj, opts) {
59091    var path = '';
59092    var data = obj || {};
59093    var options = opts || {};
59094    var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent;
59095
59096    for (var i = 0; i < tokens.length; i++) {
59097      var token = tokens[i];
59098
59099      if (typeof token === 'string') {
59100        path += token;
59101
59102        continue
59103      }
59104
59105      var value = data[token.name];
59106      var segment;
59107
59108      if (value == null) {
59109        if (token.optional) {
59110          // Prepend partial segment prefixes.
59111          if (token.partial) {
59112            path += token.prefix;
59113          }
59114
59115          continue
59116        } else {
59117          throw new TypeError('Expected "' + token.name + '" to be defined')
59118        }
59119      }
59120
59121      if (isarray(value)) {
59122        if (!token.repeat) {
59123          throw new TypeError('Expected "' + token.name + '" to not repeat, but received `' + JSON.stringify(value) + '`')
59124        }
59125
59126        if (value.length === 0) {
59127          if (token.optional) {
59128            continue
59129          } else {
59130            throw new TypeError('Expected "' + token.name + '" to not be empty')
59131          }
59132        }
59133
59134        for (var j = 0; j < value.length; j++) {
59135          segment = encode(value[j]);
59136
59137          if (!matches[i].test(segment)) {
59138            throw new TypeError('Expected all "' + token.name + '" to match "' + token.pattern + '", but received `' + JSON.stringify(segment) + '`')
59139          }
59140
59141          path += (j === 0 ? token.prefix : token.delimiter) + segment;
59142        }
59143
59144        continue
59145      }
59146
59147      segment = token.asterisk ? encodeAsterisk(value) : encode(value);
59148
59149      if (!matches[i].test(segment)) {
59150        throw new TypeError('Expected "' + token.name + '" to match "' + token.pattern + '", but received "' + segment + '"')
59151      }
59152
59153      path += token.prefix + segment;
59154    }
59155
59156    return path
59157  }
59158}
59159
59160/**
59161 * Escape a regular expression string.
59162 *
59163 * @param  {string} str
59164 * @return {string}
59165 */
59166function escapeString (str) {
59167  return str.replace(/([.+*?=^!:${}()[\]|\/\\])/g, '\\$1')
59168}
59169
59170/**
59171 * Escape the capturing group by escaping special characters and meaning.
59172 *
59173 * @param  {string} group
59174 * @return {string}
59175 */
59176function escapeGroup (group) {
59177  return group.replace(/([=!:$\/()])/g, '\\$1')
59178}
59179
59180/**
59181 * Attach the keys as a property of the regexp.
59182 *
59183 * @param  {!RegExp} re
59184 * @param  {Array}   keys
59185 * @return {!RegExp}
59186 */
59187function attachKeys (re, keys) {
59188  re.keys = keys;
59189  return re
59190}
59191
59192/**
59193 * Get the flags for a regexp from the options.
59194 *
59195 * @param  {Object} options
59196 * @return {string}
59197 */
59198function flags (options) {
59199  return options && options.sensitive ? '' : 'i'
59200}
59201
59202/**
59203 * Pull out keys from a regexp.
59204 *
59205 * @param  {!RegExp} path
59206 * @param  {!Array}  keys
59207 * @return {!RegExp}
59208 */
59209function regexpToRegexp (path, keys) {
59210  // Use a negative lookahead to match only capturing groups.
59211  var groups = path.source.match(/\((?!\?)/g);
59212
59213  if (groups) {
59214    for (var i = 0; i < groups.length; i++) {
59215      keys.push({
59216        name: i,
59217        prefix: null,
59218        delimiter: null,
59219        optional: false,
59220        repeat: false,
59221        partial: false,
59222        asterisk: false,
59223        pattern: null
59224      });
59225    }
59226  }
59227
59228  return attachKeys(path, keys)
59229}
59230
59231/**
59232 * Transform an array into a regexp.
59233 *
59234 * @param  {!Array}  path
59235 * @param  {Array}   keys
59236 * @param  {!Object} options
59237 * @return {!RegExp}
59238 */
59239function arrayToRegexp (path, keys, options) {
59240  var parts = [];
59241
59242  for (var i = 0; i < path.length; i++) {
59243    parts.push(pathToRegexp(path[i], keys, options).source);
59244  }
59245
59246  var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options));
59247
59248  return attachKeys(regexp, keys)
59249}
59250
59251/**
59252 * Create a path regexp from string input.
59253 *
59254 * @param  {string}  path
59255 * @param  {!Array}  keys
59256 * @param  {!Object} options
59257 * @return {!RegExp}
59258 */
59259function stringToRegexp (path, keys, options) {
59260  return tokensToRegExp(parse(path, options), keys, options)
59261}
59262
59263/**
59264 * Expose a function for taking tokens and returning a RegExp.
59265 *
59266 * @param  {!Array}          tokens
59267 * @param  {(Array|Object)=} keys
59268 * @param  {Object=}         options
59269 * @return {!RegExp}
59270 */
59271function tokensToRegExp (tokens, keys, options) {
59272  if (!isarray(keys)) {
59273    options = /** @type {!Object} */ (keys || options);
59274    keys = [];
59275  }
59276
59277  options = options || {};
59278
59279  var strict = options.strict;
59280  var end = options.end !== false;
59281  var route = '';
59282
59283  // Iterate over the tokens and create our regexp string.
59284  for (var i = 0; i < tokens.length; i++) {
59285    var token = tokens[i];
59286
59287    if (typeof token === 'string') {
59288      route += escapeString(token);
59289    } else {
59290      var prefix = escapeString(token.prefix);
59291      var capture = '(?:' + token.pattern + ')';
59292
59293      keys.push(token);
59294
59295      if (token.repeat) {
59296        capture += '(?:' + prefix + capture + ')*';
59297      }
59298
59299      if (token.optional) {
59300        if (!token.partial) {
59301          capture = '(?:' + prefix + '(' + capture + '))?';
59302        } else {
59303          capture = prefix + '(' + capture + ')?';
59304        }
59305      } else {
59306        capture = prefix + '(' + capture + ')';
59307      }
59308
59309      route += capture;
59310    }
59311  }
59312
59313  var delimiter = escapeString(options.delimiter || '/');
59314  var endsWithDelimiter = route.slice(-delimiter.length) === delimiter;
59315
59316  // In non-strict mode we allow a slash at the end of match. If the path to
59317  // match already ends with a slash, we remove it for consistency. The slash
59318  // is valid at the end of a path match, not in the middle. This is important
59319  // in non-ending mode, where "/test/" shouldn't match "/test//route".
59320  if (!strict) {
59321    route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?';
59322  }
59323
59324  if (end) {
59325    route += '$';
59326  } else {
59327    // In non-ending mode, we need the capturing groups to match as much as
59328    // possible by using a positive lookahead to the end or next path segment.
59329    route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)';
59330  }
59331
59332  return attachKeys(new RegExp('^' + route, flags(options)), keys)
59333}
59334
59335/**
59336 * Normalize the given path string, returning a regular expression.
59337 *
59338 * An empty array can be passed in for the keys, which will hold the
59339 * placeholder key descriptions. For example, using `/user/:id`, `keys` will
59340 * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.
59341 *
59342 * @param  {(string|RegExp|Array)} path
59343 * @param  {(Array|Object)=}       keys
59344 * @param  {Object=}               options
59345 * @return {!RegExp}
59346 */
59347function pathToRegexp (path, keys, options) {
59348  if (!isarray(keys)) {
59349    options = /** @type {!Object} */ (keys || options);
59350    keys = [];
59351  }
59352
59353  options = options || {};
59354
59355  if (path instanceof RegExp) {
59356    return regexpToRegexp(path, /** @type {!Array} */ (keys))
59357  }
59358
59359  if (isarray(path)) {
59360    return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)
59361  }
59362
59363  return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)
59364}
59365pathToRegexp_1.parse = parse_1;
59366pathToRegexp_1.compile = compile_1;
59367pathToRegexp_1.tokensToFunction = tokensToFunction_1;
59368pathToRegexp_1.tokensToRegExp = tokensToRegExp_1;
59369
59370/*  */
59371
59372// $flow-disable-line
59373var regexpCompileCache = Object.create(null);
59374
59375function fillParams (
59376  path,
59377  params,
59378  routeMsg
59379) {
59380  params = params || {};
59381  try {
59382    var filler =
59383      regexpCompileCache[path] ||
59384      (regexpCompileCache[path] = pathToRegexp_1.compile(path));
59385
59386    // Fix #2505 resolving asterisk routes { name: 'not-found', params: { pathMatch: '/not-found' }}
59387    // and fix #3106 so that you can work with location descriptor object having params.pathMatch equal to empty string
59388    if (typeof params.pathMatch === 'string') { params[0] = params.pathMatch; }
59389
59390    return filler(params, { pretty: true })
59391  } catch (e) {
59392    if (true) {
59393      // Fix #3072 no warn if `pathMatch` is string
59394      warn(typeof params.pathMatch === 'string', ("missing param for " + routeMsg + ": " + (e.message)));
59395    }
59396    return ''
59397  } finally {
59398    // delete the 0 if it was added
59399    delete params[0];
59400  }
59401}
59402
59403/*  */
59404
59405function normalizeLocation (
59406  raw,
59407  current,
59408  append,
59409  router
59410) {
59411  var next = typeof raw === 'string' ? { path: raw } : raw;
59412  // named target
59413  if (next._normalized) {
59414    return next
59415  } else if (next.name) {
59416    next = extend({}, raw);
59417    var params = next.params;
59418    if (params && typeof params === 'object') {
59419      next.params = extend({}, params);
59420    }
59421    return next
59422  }
59423
59424  // relative params
59425  if (!next.path && next.params && current) {
59426    next = extend({}, next);
59427    next._normalized = true;
59428    var params$1 = extend(extend({}, current.params), next.params);
59429    if (current.name) {
59430      next.name = current.name;
59431      next.params = params$1;
59432    } else if (current.matched.length) {
59433      var rawPath = current.matched[current.matched.length - 1].path;
59434      next.path = fillParams(rawPath, params$1, ("path " + (current.path)));
59435    } else if (true) {
59436      warn(false, "relative params navigation requires a current route.");
59437    }
59438    return next
59439  }
59440
59441  var parsedPath = parsePath(next.path || '');
59442  var basePath = (current && current.path) || '/';
59443  var path = parsedPath.path
59444    ? resolvePath(parsedPath.path, basePath, append || next.append)
59445    : basePath;
59446
59447  var query = resolveQuery(
59448    parsedPath.query,
59449    next.query,
59450    router && router.options.parseQuery
59451  );
59452
59453  var hash = next.hash || parsedPath.hash;
59454  if (hash && hash.charAt(0) !== '#') {
59455    hash = "#" + hash;
59456  }
59457
59458  return {
59459    _normalized: true,
59460    path: path,
59461    query: query,
59462    hash: hash
59463  }
59464}
59465
59466/*  */
59467
59468// work around weird flow bug
59469var toTypes = [String, Object];
59470var eventTypes = [String, Array];
59471
59472var noop = function () {};
59473
59474var warnedCustomSlot;
59475var warnedTagProp;
59476var warnedEventProp;
59477
59478var Link = {
59479  name: 'RouterLink',
59480  props: {
59481    to: {
59482      type: toTypes,
59483      required: true
59484    },
59485    tag: {
59486      type: String,
59487      default: 'a'
59488    },
59489    custom: Boolean,
59490    exact: Boolean,
59491    exactPath: Boolean,
59492    append: Boolean,
59493    replace: Boolean,
59494    activeClass: String,
59495    exactActiveClass: String,
59496    ariaCurrentValue: {
59497      type: String,
59498      default: 'page'
59499    },
59500    event: {
59501      type: eventTypes,
59502      default: 'click'
59503    }
59504  },
59505  render: function render (h) {
59506    var this$1$1 = this;
59507
59508    var router = this.$router;
59509    var current = this.$route;
59510    var ref = router.resolve(
59511      this.to,
59512      current,
59513      this.append
59514    );
59515    var location = ref.location;
59516    var route = ref.route;
59517    var href = ref.href;
59518
59519    var classes = {};
59520    var globalActiveClass = router.options.linkActiveClass;
59521    var globalExactActiveClass = router.options.linkExactActiveClass;
59522    // Support global empty active class
59523    var activeClassFallback =
59524      globalActiveClass == null ? 'router-link-active' : globalActiveClass;
59525    var exactActiveClassFallback =
59526      globalExactActiveClass == null
59527        ? 'router-link-exact-active'
59528        : globalExactActiveClass;
59529    var activeClass =
59530      this.activeClass == null ? activeClassFallback : this.activeClass;
59531    var exactActiveClass =
59532      this.exactActiveClass == null
59533        ? exactActiveClassFallback
59534        : this.exactActiveClass;
59535
59536    var compareTarget = route.redirectedFrom
59537      ? createRoute(null, normalizeLocation(route.redirectedFrom), null, router)
59538      : route;
59539
59540    classes[exactActiveClass] = isSameRoute(current, compareTarget, this.exactPath);
59541    classes[activeClass] = this.exact || this.exactPath
59542      ? classes[exactActiveClass]
59543      : isIncludedRoute(current, compareTarget);
59544
59545    var ariaCurrentValue = classes[exactActiveClass] ? this.ariaCurrentValue : null;
59546
59547    var handler = function (e) {
59548      if (guardEvent(e)) {
59549        if (this$1$1.replace) {
59550          router.replace(location, noop);
59551        } else {
59552          router.push(location, noop);
59553        }
59554      }
59555    };
59556
59557    var on = { click: guardEvent };
59558    if (Array.isArray(this.event)) {
59559      this.event.forEach(function (e) {
59560        on[e] = handler;
59561      });
59562    } else {
59563      on[this.event] = handler;
59564    }
59565
59566    var data = { class: classes };
59567
59568    var scopedSlot =
59569      !this.$scopedSlots.$hasNormal &&
59570      this.$scopedSlots.default &&
59571      this.$scopedSlots.default({
59572        href: href,
59573        route: route,
59574        navigate: handler,
59575        isActive: classes[activeClass],
59576        isExactActive: classes[exactActiveClass]
59577      });
59578
59579    if (scopedSlot) {
59580      if ( true && !this.custom) {
59581        !warnedCustomSlot && warn(false, 'In Vue Router 4, the v-slot API will by default wrap its content with an <a> element. Use the custom prop to remove this warning:\n<router-link v-slot="{ navigate, href }" custom></router-link>\n');
59582        warnedCustomSlot = true;
59583      }
59584      if (scopedSlot.length === 1) {
59585        return scopedSlot[0]
59586      } else if (scopedSlot.length > 1 || !scopedSlot.length) {
59587        if (true) {
59588          warn(
59589            false,
59590            ("<router-link> with to=\"" + (this.to) + "\" is trying to use a scoped slot but it didn't provide exactly one child. Wrapping the content with a span element.")
59591          );
59592        }
59593        return scopedSlot.length === 0 ? h() : h('span', {}, scopedSlot)
59594      }
59595    }
59596
59597    if (true) {
59598      if ('tag' in this.$options.propsData && !warnedTagProp) {
59599        warn(
59600          false,
59601          "<router-link>'s tag prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link."
59602        );
59603        warnedTagProp = true;
59604      }
59605      if ('event' in this.$options.propsData && !warnedEventProp) {
59606        warn(
59607          false,
59608          "<router-link>'s event prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link."
59609        );
59610        warnedEventProp = true;
59611      }
59612    }
59613
59614    if (this.tag === 'a') {
59615      data.on = on;
59616      data.attrs = { href: href, 'aria-current': ariaCurrentValue };
59617    } else {
59618      // find the first <a> child and apply listener and href
59619      var a = findAnchor(this.$slots.default);
59620      if (a) {
59621        // in case the <a> is a static node
59622        a.isStatic = false;
59623        var aData = (a.data = extend({}, a.data));
59624        aData.on = aData.on || {};
59625        // transform existing events in both objects into arrays so we can push later
59626        for (var event in aData.on) {
59627          var handler$1 = aData.on[event];
59628          if (event in on) {
59629            aData.on[event] = Array.isArray(handler$1) ? handler$1 : [handler$1];
59630          }
59631        }
59632        // append new listeners for router-link
59633        for (var event$1 in on) {
59634          if (event$1 in aData.on) {
59635            // on[event] is always a function
59636            aData.on[event$1].push(on[event$1]);
59637          } else {
59638            aData.on[event$1] = handler;
59639          }
59640        }
59641
59642        var aAttrs = (a.data.attrs = extend({}, a.data.attrs));
59643        aAttrs.href = href;
59644        aAttrs['aria-current'] = ariaCurrentValue;
59645      } else {
59646        // doesn't have <a> child, apply listener to self
59647        data.on = on;
59648      }
59649    }
59650
59651    return h(this.tag, data, this.$slots.default)
59652  }
59653};
59654
59655function guardEvent (e) {
59656  // don't redirect with control keys
59657  if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) { return }
59658  // don't redirect when preventDefault called
59659  if (e.defaultPrevented) { return }
59660  // don't redirect on right click
59661  if (e.button !== undefined && e.button !== 0) { return }
59662  // don't redirect if `target="_blank"`
59663  if (e.currentTarget && e.currentTarget.getAttribute) {
59664    var target = e.currentTarget.getAttribute('target');
59665    if (/\b_blank\b/i.test(target)) { return }
59666  }
59667  // this may be a Weex event which doesn't have this method
59668  if (e.preventDefault) {
59669    e.preventDefault();
59670  }
59671  return true
59672}
59673
59674function findAnchor (children) {
59675  if (children) {
59676    var child;
59677    for (var i = 0; i < children.length; i++) {
59678      child = children[i];
59679      if (child.tag === 'a') {
59680        return child
59681      }
59682      if (child.children && (child = findAnchor(child.children))) {
59683        return child
59684      }
59685    }
59686  }
59687}
59688
59689var _Vue;
59690
59691function install (Vue) {
59692  if (install.installed && _Vue === Vue) { return }
59693  install.installed = true;
59694
59695  _Vue = Vue;
59696
59697  var isDef = function (v) { return v !== undefined; };
59698
59699  var registerInstance = function (vm, callVal) {
59700    var i = vm.$options._parentVnode;
59701    if (isDef(i) && isDef(i = i.data) && isDef(i = i.registerRouteInstance)) {
59702      i(vm, callVal);
59703    }
59704  };
59705
59706  Vue.mixin({
59707    beforeCreate: function beforeCreate () {
59708      if (isDef(this.$options.router)) {
59709        this._routerRoot = this;
59710        this._router = this.$options.router;
59711        this._router.init(this);
59712        Vue.util.defineReactive(this, '_route', this._router.history.current);
59713      } else {
59714        this._routerRoot = (this.$parent && this.$parent._routerRoot) || this;
59715      }
59716      registerInstance(this, this);
59717    },
59718    destroyed: function destroyed () {
59719      registerInstance(this);
59720    }
59721  });
59722
59723  Object.defineProperty(Vue.prototype, '$router', {
59724    get: function get () { return this._routerRoot._router }
59725  });
59726
59727  Object.defineProperty(Vue.prototype, '$route', {
59728    get: function get () { return this._routerRoot._route }
59729  });
59730
59731  Vue.component('RouterView', View);
59732  Vue.component('RouterLink', Link);
59733
59734  var strats = Vue.config.optionMergeStrategies;
59735  // use the same hook merging strategy for route hooks
59736  strats.beforeRouteEnter = strats.beforeRouteLeave = strats.beforeRouteUpdate = strats.created;
59737}
59738
59739/*  */
59740
59741var inBrowser = typeof window !== 'undefined';
59742
59743/*  */
59744
59745function createRouteMap (
59746  routes,
59747  oldPathList,
59748  oldPathMap,
59749  oldNameMap,
59750  parentRoute
59751) {
59752  // the path list is used to control path matching priority
59753  var pathList = oldPathList || [];
59754  // $flow-disable-line
59755  var pathMap = oldPathMap || Object.create(null);
59756  // $flow-disable-line
59757  var nameMap = oldNameMap || Object.create(null);
59758
59759  routes.forEach(function (route) {
59760    addRouteRecord(pathList, pathMap, nameMap, route, parentRoute);
59761  });
59762
59763  // ensure wildcard routes are always at the end
59764  for (var i = 0, l = pathList.length; i < l; i++) {
59765    if (pathList[i] === '*') {
59766      pathList.push(pathList.splice(i, 1)[0]);
59767      l--;
59768      i--;
59769    }
59770  }
59771
59772  if (true) {
59773    // warn if routes do not include leading slashes
59774    var found = pathList
59775    // check for missing leading slash
59776      .filter(function (path) { return path && path.charAt(0) !== '*' && path.charAt(0) !== '/'; });
59777
59778    if (found.length > 0) {
59779      var pathNames = found.map(function (path) { return ("- " + path); }).join('\n');
59780      warn(false, ("Non-nested routes must include a leading slash character. Fix the following routes: \n" + pathNames));
59781    }
59782  }
59783
59784  return {
59785    pathList: pathList,
59786    pathMap: pathMap,
59787    nameMap: nameMap
59788  }
59789}
59790
59791function addRouteRecord (
59792  pathList,
59793  pathMap,
59794  nameMap,
59795  route,
59796  parent,
59797  matchAs
59798) {
59799  var path = route.path;
59800  var name = route.name;
59801  if (true) {
59802    assert(path != null, "\"path\" is required in a route configuration.");
59803    assert(
59804      typeof route.component !== 'string',
59805      "route config \"component\" for path: " + (String(
59806        path || name
59807      )) + " cannot be a " + "string id. Use an actual component instead."
59808    );
59809
59810    warn(
59811      // eslint-disable-next-line no-control-regex
59812      !/[^\u0000-\u007F]+/.test(path),
59813      "Route with path \"" + path + "\" contains unencoded characters, make sure " +
59814        "your path is correctly encoded before passing it to the router. Use " +
59815        "encodeURI to encode static segments of your path."
59816    );
59817  }
59818
59819  var pathToRegexpOptions =
59820    route.pathToRegexpOptions || {};
59821  var normalizedPath = normalizePath(path, parent, pathToRegexpOptions.strict);
59822
59823  if (typeof route.caseSensitive === 'boolean') {
59824    pathToRegexpOptions.sensitive = route.caseSensitive;
59825  }
59826
59827  var record = {
59828    path: normalizedPath,
59829    regex: compileRouteRegex(normalizedPath, pathToRegexpOptions),
59830    components: route.components || { default: route.component },
59831    alias: route.alias
59832      ? typeof route.alias === 'string'
59833        ? [route.alias]
59834        : route.alias
59835      : [],
59836    instances: {},
59837    enteredCbs: {},
59838    name: name,
59839    parent: parent,
59840    matchAs: matchAs,
59841    redirect: route.redirect,
59842    beforeEnter: route.beforeEnter,
59843    meta: route.meta || {},
59844    props:
59845      route.props == null
59846        ? {}
59847        : route.components
59848          ? route.props
59849          : { default: route.props }
59850  };
59851
59852  if (route.children) {
59853    // Warn if route is named, does not redirect and has a default child route.
59854    // If users navigate to this route by name, the default child will
59855    // not be rendered (GH Issue #629)
59856    if (true) {
59857      if (
59858        route.name &&
59859        !route.redirect &&
59860        route.children.some(function (child) { return /^\/?$/.test(child.path); })
59861      ) {
59862        warn(
59863          false,
59864          "Named Route '" + (route.name) + "' has a default child route. " +
59865            "When navigating to this named route (:to=\"{name: '" + (route.name) + "'}\"), " +
59866            "the default child route will not be rendered. Remove the name from " +
59867            "this route and use the name of the default child route for named " +
59868            "links instead."
59869        );
59870      }
59871    }
59872    route.children.forEach(function (child) {
59873      var childMatchAs = matchAs
59874        ? cleanPath((matchAs + "/" + (child.path)))
59875        : undefined;
59876      addRouteRecord(pathList, pathMap, nameMap, child, record, childMatchAs);
59877    });
59878  }
59879
59880  if (!pathMap[record.path]) {
59881    pathList.push(record.path);
59882    pathMap[record.path] = record;
59883  }
59884
59885  if (route.alias !== undefined) {
59886    var aliases = Array.isArray(route.alias) ? route.alias : [route.alias];
59887    for (var i = 0; i < aliases.length; ++i) {
59888      var alias = aliases[i];
59889      if ( true && alias === path) {
59890        warn(
59891          false,
59892          ("Found an alias with the same value as the path: \"" + path + "\". You have to remove that alias. It will be ignored in development.")
59893        );
59894        // skip in dev to make it work
59895        continue
59896      }
59897
59898      var aliasRoute = {
59899        path: alias,
59900        children: route.children
59901      };
59902      addRouteRecord(
59903        pathList,
59904        pathMap,
59905        nameMap,
59906        aliasRoute,
59907        parent,
59908        record.path || '/' // matchAs
59909      );
59910    }
59911  }
59912
59913  if (name) {
59914    if (!nameMap[name]) {
59915      nameMap[name] = record;
59916    } else if ( true && !matchAs) {
59917      warn(
59918        false,
59919        "Duplicate named routes definition: " +
59920          "{ name: \"" + name + "\", path: \"" + (record.path) + "\" }"
59921      );
59922    }
59923  }
59924}
59925
59926function compileRouteRegex (
59927  path,
59928  pathToRegexpOptions
59929) {
59930  var regex = pathToRegexp_1(path, [], pathToRegexpOptions);
59931  if (true) {
59932    var keys = Object.create(null);
59933    regex.keys.forEach(function (key) {
59934      warn(
59935        !keys[key.name],
59936        ("Duplicate param keys in route with path: \"" + path + "\"")
59937      );
59938      keys[key.name] = true;
59939    });
59940  }
59941  return regex
59942}
59943
59944function normalizePath (
59945  path,
59946  parent,
59947  strict
59948) {
59949  if (!strict) { path = path.replace(/\/$/, ''); }
59950  if (path[0] === '/') { return path }
59951  if (parent == null) { return path }
59952  return cleanPath(((parent.path) + "/" + path))
59953}
59954
59955/*  */
59956
59957
59958
59959function createMatcher (
59960  routes,
59961  router
59962) {
59963  var ref = createRouteMap(routes);
59964  var pathList = ref.pathList;
59965  var pathMap = ref.pathMap;
59966  var nameMap = ref.nameMap;
59967
59968  function addRoutes (routes) {
59969    createRouteMap(routes, pathList, pathMap, nameMap);
59970  }
59971
59972  function addRoute (parentOrRoute, route) {
59973    var parent = (typeof parentOrRoute !== 'object') ? nameMap[parentOrRoute] : undefined;
59974    // $flow-disable-line
59975    createRouteMap([route || parentOrRoute], pathList, pathMap, nameMap, parent);
59976
59977    // add aliases of parent
59978    if (parent && parent.alias.length) {
59979      createRouteMap(
59980        // $flow-disable-line route is defined if parent is
59981        parent.alias.map(function (alias) { return ({ path: alias, children: [route] }); }),
59982        pathList,
59983        pathMap,
59984        nameMap,
59985        parent
59986      );
59987    }
59988  }
59989
59990  function getRoutes () {
59991    return pathList.map(function (path) { return pathMap[path]; })
59992  }
59993
59994  function match (
59995    raw,
59996    currentRoute,
59997    redirectedFrom
59998  ) {
59999    var location = normalizeLocation(raw, currentRoute, false, router);
60000    var name = location.name;
60001
60002    if (name) {
60003      var record = nameMap[name];
60004      if (true) {
60005        warn(record, ("Route with name '" + name + "' does not exist"));
60006      }
60007      if (!record) { return _createRoute(null, location) }
60008      var paramNames = record.regex.keys
60009        .filter(function (key) { return !key.optional; })
60010        .map(function (key) { return key.name; });
60011
60012      if (typeof location.params !== 'object') {
60013        location.params = {};
60014      }
60015
60016      if (currentRoute && typeof currentRoute.params === 'object') {
60017        for (var key in currentRoute.params) {
60018          if (!(key in location.params) && paramNames.indexOf(key) > -1) {
60019            location.params[key] = currentRoute.params[key];
60020          }
60021        }
60022      }
60023
60024      location.path = fillParams(record.path, location.params, ("named route \"" + name + "\""));
60025      return _createRoute(record, location, redirectedFrom)
60026    } else if (location.path) {
60027      location.params = {};
60028      for (var i = 0; i < pathList.length; i++) {
60029        var path = pathList[i];
60030        var record$1 = pathMap[path];
60031        if (matchRoute(record$1.regex, location.path, location.params)) {
60032          return _createRoute(record$1, location, redirectedFrom)
60033        }
60034      }
60035    }
60036    // no match
60037    return _createRoute(null, location)
60038  }
60039
60040  function redirect (
60041    record,
60042    location
60043  ) {
60044    var originalRedirect = record.redirect;
60045    var redirect = typeof originalRedirect === 'function'
60046      ? originalRedirect(createRoute(record, location, null, router))
60047      : originalRedirect;
60048
60049    if (typeof redirect === 'string') {
60050      redirect = { path: redirect };
60051    }
60052
60053    if (!redirect || typeof redirect !== 'object') {
60054      if (true) {
60055        warn(
60056          false, ("invalid redirect option: " + (JSON.stringify(redirect)))
60057        );
60058      }
60059      return _createRoute(null, location)
60060    }
60061
60062    var re = redirect;
60063    var name = re.name;
60064    var path = re.path;
60065    var query = location.query;
60066    var hash = location.hash;
60067    var params = location.params;
60068    query = re.hasOwnProperty('query') ? re.query : query;
60069    hash = re.hasOwnProperty('hash') ? re.hash : hash;
60070    params = re.hasOwnProperty('params') ? re.params : params;
60071
60072    if (name) {
60073      // resolved named direct
60074      var targetRecord = nameMap[name];
60075      if (true) {
60076        assert(targetRecord, ("redirect failed: named route \"" + name + "\" not found."));
60077      }
60078      return match({
60079        _normalized: true,
60080        name: name,
60081        query: query,
60082        hash: hash,
60083        params: params
60084      }, undefined, location)
60085    } else if (path) {
60086      // 1. resolve relative redirect
60087      var rawPath = resolveRecordPath(path, record);
60088      // 2. resolve params
60089      var resolvedPath = fillParams(rawPath, params, ("redirect route with path \"" + rawPath + "\""));
60090      // 3. rematch with existing query and hash
60091      return match({
60092        _normalized: true,
60093        path: resolvedPath,
60094        query: query,
60095        hash: hash
60096      }, undefined, location)
60097    } else {
60098      if (true) {
60099        warn(false, ("invalid redirect option: " + (JSON.stringify(redirect))));
60100      }
60101      return _createRoute(null, location)
60102    }
60103  }
60104
60105  function alias (
60106    record,
60107    location,
60108    matchAs
60109  ) {
60110    var aliasedPath = fillParams(matchAs, location.params, ("aliased route with path \"" + matchAs + "\""));
60111    var aliasedMatch = match({
60112      _normalized: true,
60113      path: aliasedPath
60114    });
60115    if (aliasedMatch) {
60116      var matched = aliasedMatch.matched;
60117      var aliasedRecord = matched[matched.length - 1];
60118      location.params = aliasedMatch.params;
60119      return _createRoute(aliasedRecord, location)
60120    }
60121    return _createRoute(null, location)
60122  }
60123
60124  function _createRoute (
60125    record,
60126    location,
60127    redirectedFrom
60128  ) {
60129    if (record && record.redirect) {
60130      return redirect(record, redirectedFrom || location)
60131    }
60132    if (record && record.matchAs) {
60133      return alias(record, location, record.matchAs)
60134    }
60135    return createRoute(record, location, redirectedFrom, router)
60136  }
60137
60138  return {
60139    match: match,
60140    addRoute: addRoute,
60141    getRoutes: getRoutes,
60142    addRoutes: addRoutes
60143  }
60144}
60145
60146function matchRoute (
60147  regex,
60148  path,
60149  params
60150) {
60151  var m = path.match(regex);
60152
60153  if (!m) {
60154    return false
60155  } else if (!params) {
60156    return true
60157  }
60158
60159  for (var i = 1, len = m.length; i < len; ++i) {
60160    var key = regex.keys[i - 1];
60161    if (key) {
60162      // Fix #1994: using * with props: true generates a param named 0
60163      params[key.name || 'pathMatch'] = typeof m[i] === 'string' ? decode(m[i]) : m[i];
60164    }
60165  }
60166
60167  return true
60168}
60169
60170function resolveRecordPath (path, record) {
60171  return resolvePath(path, record.parent ? record.parent.path : '/', true)
60172}
60173
60174/*  */
60175
60176// use User Timing api (if present) for more accurate key precision
60177var Time =
60178  inBrowser && window.performance && window.performance.now
60179    ? window.performance
60180    : Date;
60181
60182function genStateKey () {
60183  return Time.now().toFixed(3)
60184}
60185
60186var _key = genStateKey();
60187
60188function getStateKey () {
60189  return _key
60190}
60191
60192function setStateKey (key) {
60193  return (_key = key)
60194}
60195
60196/*  */
60197
60198var positionStore = Object.create(null);
60199
60200function setupScroll () {
60201  // Prevent browser scroll behavior on History popstate
60202  if ('scrollRestoration' in window.history) {
60203    window.history.scrollRestoration = 'manual';
60204  }
60205  // Fix for #1585 for Firefox
60206  // Fix for #2195 Add optional third attribute to workaround a bug in safari https://bugs.webkit.org/show_bug.cgi?id=182678
60207  // Fix for #2774 Support for apps loaded from Windows file shares not mapped to network drives: replaced location.origin with
60208  // window.location.protocol + '//' + window.location.host
60209  // location.host contains the port and location.hostname doesn't
60210  var protocolAndPath = window.location.protocol + '//' + window.location.host;
60211  var absolutePath = window.location.href.replace(protocolAndPath, '');
60212  // preserve existing history state as it could be overriden by the user
60213  var stateCopy = extend({}, window.history.state);
60214  stateCopy.key = getStateKey();
60215  window.history.replaceState(stateCopy, '', absolutePath);
60216  window.addEventListener('popstate', handlePopState);
60217  return function () {
60218    window.removeEventListener('popstate', handlePopState);
60219  }
60220}
60221
60222function handleScroll (
60223  router,
60224  to,
60225  from,
60226  isPop
60227) {
60228  if (!router.app) {
60229    return
60230  }
60231
60232  var behavior = router.options.scrollBehavior;
60233  if (!behavior) {
60234    return
60235  }
60236
60237  if (true) {
60238    assert(typeof behavior === 'function', "scrollBehavior must be a function");
60239  }
60240
60241  // wait until re-render finishes before scrolling
60242  router.app.$nextTick(function () {
60243    var position = getScrollPosition();
60244    var shouldScroll = behavior.call(
60245      router,
60246      to,
60247      from,
60248      isPop ? position : null
60249    );
60250
60251    if (!shouldScroll) {
60252      return
60253    }
60254
60255    if (typeof shouldScroll.then === 'function') {
60256      shouldScroll
60257        .then(function (shouldScroll) {
60258          scrollToPosition((shouldScroll), position);
60259        })
60260        .catch(function (err) {
60261          if (true) {
60262            assert(false, err.toString());
60263          }
60264        });
60265    } else {
60266      scrollToPosition(shouldScroll, position);
60267    }
60268  });
60269}
60270
60271function saveScrollPosition () {
60272  var key = getStateKey();
60273  if (key) {
60274    positionStore[key] = {
60275      x: window.pageXOffset,
60276      y: window.pageYOffset
60277    };
60278  }
60279}
60280
60281function handlePopState (e) {
60282  saveScrollPosition();
60283  if (e.state && e.state.key) {
60284    setStateKey(e.state.key);
60285  }
60286}
60287
60288function getScrollPosition () {
60289  var key = getStateKey();
60290  if (key) {
60291    return positionStore[key]
60292  }
60293}
60294
60295function getElementPosition (el, offset) {
60296  var docEl = document.documentElement;
60297  var docRect = docEl.getBoundingClientRect();
60298  var elRect = el.getBoundingClientRect();
60299  return {
60300    x: elRect.left - docRect.left - offset.x,
60301    y: elRect.top - docRect.top - offset.y
60302  }
60303}
60304
60305function isValidPosition (obj) {
60306  return isNumber(obj.x) || isNumber(obj.y)
60307}
60308
60309function normalizePosition (obj) {
60310  return {
60311    x: isNumber(obj.x) ? obj.x : window.pageXOffset,
60312    y: isNumber(obj.y) ? obj.y : window.pageYOffset
60313  }
60314}
60315
60316function normalizeOffset (obj) {
60317  return {
60318    x: isNumber(obj.x) ? obj.x : 0,
60319    y: isNumber(obj.y) ? obj.y : 0
60320  }
60321}
60322
60323function isNumber (v) {
60324  return typeof v === 'number'
60325}
60326
60327var hashStartsWithNumberRE = /^#\d/;
60328
60329function scrollToPosition (shouldScroll, position) {
60330  var isObject = typeof shouldScroll === 'object';
60331  if (isObject && typeof shouldScroll.selector === 'string') {
60332    // getElementById would still fail if the selector contains a more complicated query like #main[data-attr]
60333    // but at the same time, it doesn't make much sense to select an element with an id and an extra selector
60334    var el = hashStartsWithNumberRE.test(shouldScroll.selector) // $flow-disable-line
60335      ? document.getElementById(shouldScroll.selector.slice(1)) // $flow-disable-line
60336      : document.querySelector(shouldScroll.selector);
60337
60338    if (el) {
60339      var offset =
60340        shouldScroll.offset && typeof shouldScroll.offset === 'object'
60341          ? shouldScroll.offset
60342          : {};
60343      offset = normalizeOffset(offset);
60344      position = getElementPosition(el, offset);
60345    } else if (isValidPosition(shouldScroll)) {
60346      position = normalizePosition(shouldScroll);
60347    }
60348  } else if (isObject && isValidPosition(shouldScroll)) {
60349    position = normalizePosition(shouldScroll);
60350  }
60351
60352  if (position) {
60353    // $flow-disable-line
60354    if ('scrollBehavior' in document.documentElement.style) {
60355      window.scrollTo({
60356        left: position.x,
60357        top: position.y,
60358        // $flow-disable-line
60359        behavior: shouldScroll.behavior
60360      });
60361    } else {
60362      window.scrollTo(position.x, position.y);
60363    }
60364  }
60365}
60366
60367/*  */
60368
60369var supportsPushState =
60370  inBrowser &&
60371  (function () {
60372    var ua = window.navigator.userAgent;
60373
60374    if (
60375      (ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) &&
60376      ua.indexOf('Mobile Safari') !== -1 &&
60377      ua.indexOf('Chrome') === -1 &&
60378      ua.indexOf('Windows Phone') === -1
60379    ) {
60380      return false
60381    }
60382
60383    return window.history && typeof window.history.pushState === 'function'
60384  })();
60385
60386function pushState (url, replace) {
60387  saveScrollPosition();
60388  // try...catch the pushState call to get around Safari
60389  // DOM Exception 18 where it limits to 100 pushState calls
60390  var history = window.history;
60391  try {
60392    if (replace) {
60393      // preserve existing history state as it could be overriden by the user
60394      var stateCopy = extend({}, history.state);
60395      stateCopy.key = getStateKey();
60396      history.replaceState(stateCopy, '', url);
60397    } else {
60398      history.pushState({ key: setStateKey(genStateKey()) }, '', url);
60399    }
60400  } catch (e) {
60401    window.location[replace ? 'replace' : 'assign'](url);
60402  }
60403}
60404
60405function replaceState (url) {
60406  pushState(url, true);
60407}
60408
60409// When changing thing, also edit router.d.ts
60410var NavigationFailureType = {
60411  redirected: 2,
60412  aborted: 4,
60413  cancelled: 8,
60414  duplicated: 16
60415};
60416
60417function createNavigationRedirectedError (from, to) {
60418  return createRouterError(
60419    from,
60420    to,
60421    NavigationFailureType.redirected,
60422    ("Redirected when going from \"" + (from.fullPath) + "\" to \"" + (stringifyRoute(
60423      to
60424    )) + "\" via a navigation guard.")
60425  )
60426}
60427
60428function createNavigationDuplicatedError (from, to) {
60429  var error = createRouterError(
60430    from,
60431    to,
60432    NavigationFailureType.duplicated,
60433    ("Avoided redundant navigation to current location: \"" + (from.fullPath) + "\".")
60434  );
60435  // backwards compatible with the first introduction of Errors
60436  error.name = 'NavigationDuplicated';
60437  return error
60438}
60439
60440function createNavigationCancelledError (from, to) {
60441  return createRouterError(
60442    from,
60443    to,
60444    NavigationFailureType.cancelled,
60445    ("Navigation cancelled from \"" + (from.fullPath) + "\" to \"" + (to.fullPath) + "\" with a new navigation.")
60446  )
60447}
60448
60449function createNavigationAbortedError (from, to) {
60450  return createRouterError(
60451    from,
60452    to,
60453    NavigationFailureType.aborted,
60454    ("Navigation aborted from \"" + (from.fullPath) + "\" to \"" + (to.fullPath) + "\" via a navigation guard.")
60455  )
60456}
60457
60458function createRouterError (from, to, type, message) {
60459  var error = new Error(message);
60460  error._isRouter = true;
60461  error.from = from;
60462  error.to = to;
60463  error.type = type;
60464
60465  return error
60466}
60467
60468var propertiesToLog = ['params', 'query', 'hash'];
60469
60470function stringifyRoute (to) {
60471  if (typeof to === 'string') { return to }
60472  if ('path' in to) { return to.path }
60473  var location = {};
60474  propertiesToLog.forEach(function (key) {
60475    if (key in to) { location[key] = to[key]; }
60476  });
60477  return JSON.stringify(location, null, 2)
60478}
60479
60480function isError (err) {
60481  return Object.prototype.toString.call(err).indexOf('Error') > -1
60482}
60483
60484function isNavigationFailure (err, errorType) {
60485  return (
60486    isError(err) &&
60487    err._isRouter &&
60488    (errorType == null || err.type === errorType)
60489  )
60490}
60491
60492/*  */
60493
60494function runQueue (queue, fn, cb) {
60495  var step = function (index) {
60496    if (index >= queue.length) {
60497      cb();
60498    } else {
60499      if (queue[index]) {
60500        fn(queue[index], function () {
60501          step(index + 1);
60502        });
60503      } else {
60504        step(index + 1);
60505      }
60506    }
60507  };
60508  step(0);
60509}
60510
60511/*  */
60512
60513function resolveAsyncComponents (matched) {
60514  return function (to, from, next) {
60515    var hasAsync = false;
60516    var pending = 0;
60517    var error = null;
60518
60519    flatMapComponents(matched, function (def, _, match, key) {
60520      // if it's a function and doesn't have cid attached,
60521      // assume it's an async component resolve function.
60522      // we are not using Vue's default async resolving mechanism because
60523      // we want to halt the navigation until the incoming component has been
60524      // resolved.
60525      if (typeof def === 'function' && def.cid === undefined) {
60526        hasAsync = true;
60527        pending++;
60528
60529        var resolve = once(function (resolvedDef) {
60530          if (isESModule(resolvedDef)) {
60531            resolvedDef = resolvedDef.default;
60532          }
60533          // save resolved on async factory in case it's used elsewhere
60534          def.resolved = typeof resolvedDef === 'function'
60535            ? resolvedDef
60536            : _Vue.extend(resolvedDef);
60537          match.components[key] = resolvedDef;
60538          pending--;
60539          if (pending <= 0) {
60540            next();
60541          }
60542        });
60543
60544        var reject = once(function (reason) {
60545          var msg = "Failed to resolve async component " + key + ": " + reason;
60546           true && warn(false, msg);
60547          if (!error) {
60548            error = isError(reason)
60549              ? reason
60550              : new Error(msg);
60551            next(error);
60552          }
60553        });
60554
60555        var res;
60556        try {
60557          res = def(resolve, reject);
60558        } catch (e) {
60559          reject(e);
60560        }
60561        if (res) {
60562          if (typeof res.then === 'function') {
60563            res.then(resolve, reject);
60564          } else {
60565            // new syntax in Vue 2.3
60566            var comp = res.component;
60567            if (comp && typeof comp.then === 'function') {
60568              comp.then(resolve, reject);
60569            }
60570          }
60571        }
60572      }
60573    });
60574
60575    if (!hasAsync) { next(); }
60576  }
60577}
60578
60579function flatMapComponents (
60580  matched,
60581  fn
60582) {
60583  return flatten(matched.map(function (m) {
60584    return Object.keys(m.components).map(function (key) { return fn(
60585      m.components[key],
60586      m.instances[key],
60587      m, key
60588    ); })
60589  }))
60590}
60591
60592function flatten (arr) {
60593  return Array.prototype.concat.apply([], arr)
60594}
60595
60596var hasSymbol =
60597  typeof Symbol === 'function' &&
60598  typeof Symbol.toStringTag === 'symbol';
60599
60600function isESModule (obj) {
60601  return obj.__esModule || (hasSymbol && obj[Symbol.toStringTag] === 'Module')
60602}
60603
60604// in Webpack 2, require.ensure now also returns a Promise
60605// so the resolve/reject functions may get called an extra time
60606// if the user uses an arrow function shorthand that happens to
60607// return that Promise.
60608function once (fn) {
60609  var called = false;
60610  return function () {
60611    var args = [], len = arguments.length;
60612    while ( len-- ) args[ len ] = arguments[ len ];
60613
60614    if (called) { return }
60615    called = true;
60616    return fn.apply(this, args)
60617  }
60618}
60619
60620/*  */
60621
60622var History = function History (router, base) {
60623  this.router = router;
60624  this.base = normalizeBase(base);
60625  // start with a route object that stands for "nowhere"
60626  this.current = START;
60627  this.pending = null;
60628  this.ready = false;
60629  this.readyCbs = [];
60630  this.readyErrorCbs = [];
60631  this.errorCbs = [];
60632  this.listeners = [];
60633};
60634
60635History.prototype.listen = function listen (cb) {
60636  this.cb = cb;
60637};
60638
60639History.prototype.onReady = function onReady (cb, errorCb) {
60640  if (this.ready) {
60641    cb();
60642  } else {
60643    this.readyCbs.push(cb);
60644    if (errorCb) {
60645      this.readyErrorCbs.push(errorCb);
60646    }
60647  }
60648};
60649
60650History.prototype.onError = function onError (errorCb) {
60651  this.errorCbs.push(errorCb);
60652};
60653
60654History.prototype.transitionTo = function transitionTo (
60655  location,
60656  onComplete,
60657  onAbort
60658) {
60659    var this$1$1 = this;
60660
60661  var route;
60662  // catch redirect option https://github.com/vuejs/vue-router/issues/3201
60663  try {
60664    route = this.router.match(location, this.current);
60665  } catch (e) {
60666    this.errorCbs.forEach(function (cb) {
60667      cb(e);
60668    });
60669    // Exception should still be thrown
60670    throw e
60671  }
60672  var prev = this.current;
60673  this.confirmTransition(
60674    route,
60675    function () {
60676      this$1$1.updateRoute(route);
60677      onComplete && onComplete(route);
60678      this$1$1.ensureURL();
60679      this$1$1.router.afterHooks.forEach(function (hook) {
60680        hook && hook(route, prev);
60681      });
60682
60683      // fire ready cbs once
60684      if (!this$1$1.ready) {
60685        this$1$1.ready = true;
60686        this$1$1.readyCbs.forEach(function (cb) {
60687          cb(route);
60688        });
60689      }
60690    },
60691    function (err) {
60692      if (onAbort) {
60693        onAbort(err);
60694      }
60695      if (err && !this$1$1.ready) {
60696        // Initial redirection should not mark the history as ready yet
60697        // because it's triggered by the redirection instead
60698        // https://github.com/vuejs/vue-router/issues/3225
60699        // https://github.com/vuejs/vue-router/issues/3331
60700        if (!isNavigationFailure(err, NavigationFailureType.redirected) || prev !== START) {
60701          this$1$1.ready = true;
60702          this$1$1.readyErrorCbs.forEach(function (cb) {
60703            cb(err);
60704          });
60705        }
60706      }
60707    }
60708  );
60709};
60710
60711History.prototype.confirmTransition = function confirmTransition (route, onComplete, onAbort) {
60712    var this$1$1 = this;
60713
60714  var current = this.current;
60715  this.pending = route;
60716  var abort = function (err) {
60717    // changed after adding errors with
60718    // https://github.com/vuejs/vue-router/pull/3047 before that change,
60719    // redirect and aborted navigation would produce an err == null
60720    if (!isNavigationFailure(err) && isError(err)) {
60721      if (this$1$1.errorCbs.length) {
60722        this$1$1.errorCbs.forEach(function (cb) {
60723          cb(err);
60724        });
60725      } else {
60726        if (true) {
60727          warn(false, 'uncaught error during route navigation:');
60728        }
60729        console.error(err);
60730      }
60731    }
60732    onAbort && onAbort(err);
60733  };
60734  var lastRouteIndex = route.matched.length - 1;
60735  var lastCurrentIndex = current.matched.length - 1;
60736  if (
60737    isSameRoute(route, current) &&
60738    // in the case the route map has been dynamically appended to
60739    lastRouteIndex === lastCurrentIndex &&
60740    route.matched[lastRouteIndex] === current.matched[lastCurrentIndex]
60741  ) {
60742    this.ensureURL();
60743    if (route.hash) {
60744      handleScroll(this.router, current, route, false);
60745    }
60746    return abort(createNavigationDuplicatedError(current, route))
60747  }
60748
60749  var ref = resolveQueue(
60750    this.current.matched,
60751    route.matched
60752  );
60753    var updated = ref.updated;
60754    var deactivated = ref.deactivated;
60755    var activated = ref.activated;
60756
60757  var queue = [].concat(
60758    // in-component leave guards
60759    extractLeaveGuards(deactivated),
60760    // global before hooks
60761    this.router.beforeHooks,
60762    // in-component update hooks
60763    extractUpdateHooks(updated),
60764    // in-config enter guards
60765    activated.map(function (m) { return m.beforeEnter; }),
60766    // async components
60767    resolveAsyncComponents(activated)
60768  );
60769
60770  var iterator = function (hook, next) {
60771    if (this$1$1.pending !== route) {
60772      return abort(createNavigationCancelledError(current, route))
60773    }
60774    try {
60775      hook(route, current, function (to) {
60776        if (to === false) {
60777          // next(false) -> abort navigation, ensure current URL
60778          this$1$1.ensureURL(true);
60779          abort(createNavigationAbortedError(current, route));
60780        } else if (isError(to)) {
60781          this$1$1.ensureURL(true);
60782          abort(to);
60783        } else if (
60784          typeof to === 'string' ||
60785          (typeof to === 'object' &&
60786            (typeof to.path === 'string' || typeof to.name === 'string'))
60787        ) {
60788          // next('/') or next({ path: '/' }) -> redirect
60789          abort(createNavigationRedirectedError(current, route));
60790          if (typeof to === 'object' && to.replace) {
60791            this$1$1.replace(to);
60792          } else {
60793            this$1$1.push(to);
60794          }
60795        } else {
60796          // confirm transition and pass on the value
60797          next(to);
60798        }
60799      });
60800    } catch (e) {
60801      abort(e);
60802    }
60803  };
60804
60805  runQueue(queue, iterator, function () {
60806    // wait until async components are resolved before
60807    // extracting in-component enter guards
60808    var enterGuards = extractEnterGuards(activated);
60809    var queue = enterGuards.concat(this$1$1.router.resolveHooks);
60810    runQueue(queue, iterator, function () {
60811      if (this$1$1.pending !== route) {
60812        return abort(createNavigationCancelledError(current, route))
60813      }
60814      this$1$1.pending = null;
60815      onComplete(route);
60816      if (this$1$1.router.app) {
60817        this$1$1.router.app.$nextTick(function () {
60818          handleRouteEntered(route);
60819        });
60820      }
60821    });
60822  });
60823};
60824
60825History.prototype.updateRoute = function updateRoute (route) {
60826  this.current = route;
60827  this.cb && this.cb(route);
60828};
60829
60830History.prototype.setupListeners = function setupListeners () {
60831  // Default implementation is empty
60832};
60833
60834History.prototype.teardown = function teardown () {
60835  // clean up event listeners
60836  // https://github.com/vuejs/vue-router/issues/2341
60837  this.listeners.forEach(function (cleanupListener) {
60838    cleanupListener();
60839  });
60840  this.listeners = [];
60841
60842  // reset current history route
60843  // https://github.com/vuejs/vue-router/issues/3294
60844  this.current = START;
60845  this.pending = null;
60846};
60847
60848function normalizeBase (base) {
60849  if (!base) {
60850    if (inBrowser) {
60851      // respect <base> tag
60852      var baseEl = document.querySelector('base');
60853      base = (baseEl && baseEl.getAttribute('href')) || '/';
60854      // strip full URL origin
60855      base = base.replace(/^https?:\/\/[^\/]+/, '');
60856    } else {
60857      base = '/';
60858    }
60859  }
60860  // make sure there's the starting slash
60861  if (base.charAt(0) !== '/') {
60862    base = '/' + base;
60863  }
60864  // remove trailing slash
60865  return base.replace(/\/$/, '')
60866}
60867
60868function resolveQueue (
60869  current,
60870  next
60871) {
60872  var i;
60873  var max = Math.max(current.length, next.length);
60874  for (i = 0; i < max; i++) {
60875    if (current[i] !== next[i]) {
60876      break
60877    }
60878  }
60879  return {
60880    updated: next.slice(0, i),
60881    activated: next.slice(i),
60882    deactivated: current.slice(i)
60883  }
60884}
60885
60886function extractGuards (
60887  records,
60888  name,
60889  bind,
60890  reverse
60891) {
60892  var guards = flatMapComponents(records, function (def, instance, match, key) {
60893    var guard = extractGuard(def, name);
60894    if (guard) {
60895      return Array.isArray(guard)
60896        ? guard.map(function (guard) { return bind(guard, instance, match, key); })
60897        : bind(guard, instance, match, key)
60898    }
60899  });
60900  return flatten(reverse ? guards.reverse() : guards)
60901}
60902
60903function extractGuard (
60904  def,
60905  key
60906) {
60907  if (typeof def !== 'function') {
60908    // extend now so that global mixins are applied.
60909    def = _Vue.extend(def);
60910  }
60911  return def.options[key]
60912}
60913
60914function extractLeaveGuards (deactivated) {
60915  return extractGuards(deactivated, 'beforeRouteLeave', bindGuard, true)
60916}
60917
60918function extractUpdateHooks (updated) {
60919  return extractGuards(updated, 'beforeRouteUpdate', bindGuard)
60920}
60921
60922function bindGuard (guard, instance) {
60923  if (instance) {
60924    return function boundRouteGuard () {
60925      return guard.apply(instance, arguments)
60926    }
60927  }
60928}
60929
60930function extractEnterGuards (
60931  activated
60932) {
60933  return extractGuards(
60934    activated,
60935    'beforeRouteEnter',
60936    function (guard, _, match, key) {
60937      return bindEnterGuard(guard, match, key)
60938    }
60939  )
60940}
60941
60942function bindEnterGuard (
60943  guard,
60944  match,
60945  key
60946) {
60947  return function routeEnterGuard (to, from, next) {
60948    return guard(to, from, function (cb) {
60949      if (typeof cb === 'function') {
60950        if (!match.enteredCbs[key]) {
60951          match.enteredCbs[key] = [];
60952        }
60953        match.enteredCbs[key].push(cb);
60954      }
60955      next(cb);
60956    })
60957  }
60958}
60959
60960/*  */
60961
60962var HTML5History = /*@__PURE__*/(function (History) {
60963  function HTML5History (router, base) {
60964    History.call(this, router, base);
60965
60966    this._startLocation = getLocation(this.base);
60967  }
60968
60969  if ( History ) HTML5History.__proto__ = History;
60970  HTML5History.prototype = Object.create( History && History.prototype );
60971  HTML5History.prototype.constructor = HTML5History;
60972
60973  HTML5History.prototype.setupListeners = function setupListeners () {
60974    var this$1$1 = this;
60975
60976    if (this.listeners.length > 0) {
60977      return
60978    }
60979
60980    var router = this.router;
60981    var expectScroll = router.options.scrollBehavior;
60982    var supportsScroll = supportsPushState && expectScroll;
60983
60984    if (supportsScroll) {
60985      this.listeners.push(setupScroll());
60986    }
60987
60988    var handleRoutingEvent = function () {
60989      var current = this$1$1.current;
60990
60991      // Avoiding first `popstate` event dispatched in some browsers but first
60992      // history route not updated since async guard at the same time.
60993      var location = getLocation(this$1$1.base);
60994      if (this$1$1.current === START && location === this$1$1._startLocation) {
60995        return
60996      }
60997
60998      this$1$1.transitionTo(location, function (route) {
60999        if (supportsScroll) {
61000          handleScroll(router, route, current, true);
61001        }
61002      });
61003    };
61004    window.addEventListener('popstate', handleRoutingEvent);
61005    this.listeners.push(function () {
61006      window.removeEventListener('popstate', handleRoutingEvent);
61007    });
61008  };
61009
61010  HTML5History.prototype.go = function go (n) {
61011    window.history.go(n);
61012  };
61013
61014  HTML5History.prototype.push = function push (location, onComplete, onAbort) {
61015    var this$1$1 = this;
61016
61017    var ref = this;
61018    var fromRoute = ref.current;
61019    this.transitionTo(location, function (route) {
61020      pushState(cleanPath(this$1$1.base + route.fullPath));
61021      handleScroll(this$1$1.router, route, fromRoute, false);
61022      onComplete && onComplete(route);
61023    }, onAbort);
61024  };
61025
61026  HTML5History.prototype.replace = function replace (location, onComplete, onAbort) {
61027    var this$1$1 = this;
61028
61029    var ref = this;
61030    var fromRoute = ref.current;
61031    this.transitionTo(location, function (route) {
61032      replaceState(cleanPath(this$1$1.base + route.fullPath));
61033      handleScroll(this$1$1.router, route, fromRoute, false);
61034      onComplete && onComplete(route);
61035    }, onAbort);
61036  };
61037
61038  HTML5History.prototype.ensureURL = function ensureURL (push) {
61039    if (getLocation(this.base) !== this.current.fullPath) {
61040      var current = cleanPath(this.base + this.current.fullPath);
61041      push ? pushState(current) : replaceState(current);
61042    }
61043  };
61044
61045  HTML5History.prototype.getCurrentLocation = function getCurrentLocation () {
61046    return getLocation(this.base)
61047  };
61048
61049  return HTML5History;
61050}(History));
61051
61052function getLocation (base) {
61053  var path = window.location.pathname;
61054  var pathLowerCase = path.toLowerCase();
61055  var baseLowerCase = base.toLowerCase();
61056  // base="/a" shouldn't turn path="/app" into "/a/pp"
61057  // https://github.com/vuejs/vue-router/issues/3555
61058  // so we ensure the trailing slash in the base
61059  if (base && ((pathLowerCase === baseLowerCase) ||
61060    (pathLowerCase.indexOf(cleanPath(baseLowerCase + '/')) === 0))) {
61061    path = path.slice(base.length);
61062  }
61063  return (path || '/') + window.location.search + window.location.hash
61064}
61065
61066/*  */
61067
61068var HashHistory = /*@__PURE__*/(function (History) {
61069  function HashHistory (router, base, fallback) {
61070    History.call(this, router, base);
61071    // check history fallback deeplinking
61072    if (fallback && checkFallback(this.base)) {
61073      return
61074    }
61075    ensureSlash();
61076  }
61077
61078  if ( History ) HashHistory.__proto__ = History;
61079  HashHistory.prototype = Object.create( History && History.prototype );
61080  HashHistory.prototype.constructor = HashHistory;
61081
61082  // this is delayed until the app mounts
61083  // to avoid the hashchange listener being fired too early
61084  HashHistory.prototype.setupListeners = function setupListeners () {
61085    var this$1$1 = this;
61086
61087    if (this.listeners.length > 0) {
61088      return
61089    }
61090
61091    var router = this.router;
61092    var expectScroll = router.options.scrollBehavior;
61093    var supportsScroll = supportsPushState && expectScroll;
61094
61095    if (supportsScroll) {
61096      this.listeners.push(setupScroll());
61097    }
61098
61099    var handleRoutingEvent = function () {
61100      var current = this$1$1.current;
61101      if (!ensureSlash()) {
61102        return
61103      }
61104      this$1$1.transitionTo(getHash(), function (route) {
61105        if (supportsScroll) {
61106          handleScroll(this$1$1.router, route, current, true);
61107        }
61108        if (!supportsPushState) {
61109          replaceHash(route.fullPath);
61110        }
61111      });
61112    };
61113    var eventType = supportsPushState ? 'popstate' : 'hashchange';
61114    window.addEventListener(
61115      eventType,
61116      handleRoutingEvent
61117    );
61118    this.listeners.push(function () {
61119      window.removeEventListener(eventType, handleRoutingEvent);
61120    });
61121  };
61122
61123  HashHistory.prototype.push = function push (location, onComplete, onAbort) {
61124    var this$1$1 = this;
61125
61126    var ref = this;
61127    var fromRoute = ref.current;
61128    this.transitionTo(
61129      location,
61130      function (route) {
61131        pushHash(route.fullPath);
61132        handleScroll(this$1$1.router, route, fromRoute, false);
61133        onComplete && onComplete(route);
61134      },
61135      onAbort
61136    );
61137  };
61138
61139  HashHistory.prototype.replace = function replace (location, onComplete, onAbort) {
61140    var this$1$1 = this;
61141
61142    var ref = this;
61143    var fromRoute = ref.current;
61144    this.transitionTo(
61145      location,
61146      function (route) {
61147        replaceHash(route.fullPath);
61148        handleScroll(this$1$1.router, route, fromRoute, false);
61149        onComplete && onComplete(route);
61150      },
61151      onAbort
61152    );
61153  };
61154
61155  HashHistory.prototype.go = function go (n) {
61156    window.history.go(n);
61157  };
61158
61159  HashHistory.prototype.ensureURL = function ensureURL (push) {
61160    var current = this.current.fullPath;
61161    if (getHash() !== current) {
61162      push ? pushHash(current) : replaceHash(current);
61163    }
61164  };
61165
61166  HashHistory.prototype.getCurrentLocation = function getCurrentLocation () {
61167    return getHash()
61168  };
61169
61170  return HashHistory;
61171}(History));
61172
61173function checkFallback (base) {
61174  var location = getLocation(base);
61175  if (!/^\/#/.test(location)) {
61176    window.location.replace(cleanPath(base + '/#' + location));
61177    return true
61178  }
61179}
61180
61181function ensureSlash () {
61182  var path = getHash();
61183  if (path.charAt(0) === '/') {
61184    return true
61185  }
61186  replaceHash('/' + path);
61187  return false
61188}
61189
61190function getHash () {
61191  // We can't use window.location.hash here because it's not
61192  // consistent across browsers - Firefox will pre-decode it!
61193  var href = window.location.href;
61194  var index = href.indexOf('#');
61195  // empty path
61196  if (index < 0) { return '' }
61197
61198  href = href.slice(index + 1);
61199
61200  return href
61201}
61202
61203function getUrl (path) {
61204  var href = window.location.href;
61205  var i = href.indexOf('#');
61206  var base = i >= 0 ? href.slice(0, i) : href;
61207  return (base + "#" + path)
61208}
61209
61210function pushHash (path) {
61211  if (supportsPushState) {
61212    pushState(getUrl(path));
61213  } else {
61214    window.location.hash = path;
61215  }
61216}
61217
61218function replaceHash (path) {
61219  if (supportsPushState) {
61220    replaceState(getUrl(path));
61221  } else {
61222    window.location.replace(getUrl(path));
61223  }
61224}
61225
61226/*  */
61227
61228var AbstractHistory = /*@__PURE__*/(function (History) {
61229  function AbstractHistory (router, base) {
61230    History.call(this, router, base);
61231    this.stack = [];
61232    this.index = -1;
61233  }
61234
61235  if ( History ) AbstractHistory.__proto__ = History;
61236  AbstractHistory.prototype = Object.create( History && History.prototype );
61237  AbstractHistory.prototype.constructor = AbstractHistory;
61238
61239  AbstractHistory.prototype.push = function push (location, onComplete, onAbort) {
61240    var this$1$1 = this;
61241
61242    this.transitionTo(
61243      location,
61244      function (route) {
61245        this$1$1.stack = this$1$1.stack.slice(0, this$1$1.index + 1).concat(route);
61246        this$1$1.index++;
61247        onComplete && onComplete(route);
61248      },
61249      onAbort
61250    );
61251  };
61252
61253  AbstractHistory.prototype.replace = function replace (location, onComplete, onAbort) {
61254    var this$1$1 = this;
61255
61256    this.transitionTo(
61257      location,
61258      function (route) {
61259        this$1$1.stack = this$1$1.stack.slice(0, this$1$1.index).concat(route);
61260        onComplete && onComplete(route);
61261      },
61262      onAbort
61263    );
61264  };
61265
61266  AbstractHistory.prototype.go = function go (n) {
61267    var this$1$1 = this;
61268
61269    var targetIndex = this.index + n;
61270    if (targetIndex < 0 || targetIndex >= this.stack.length) {
61271      return
61272    }
61273    var route = this.stack[targetIndex];
61274    this.confirmTransition(
61275      route,
61276      function () {
61277        var prev = this$1$1.current;
61278        this$1$1.index = targetIndex;
61279        this$1$1.updateRoute(route);
61280        this$1$1.router.afterHooks.forEach(function (hook) {
61281          hook && hook(route, prev);
61282        });
61283      },
61284      function (err) {
61285        if (isNavigationFailure(err, NavigationFailureType.duplicated)) {
61286          this$1$1.index = targetIndex;
61287        }
61288      }
61289    );
61290  };
61291
61292  AbstractHistory.prototype.getCurrentLocation = function getCurrentLocation () {
61293    var current = this.stack[this.stack.length - 1];
61294    return current ? current.fullPath : '/'
61295  };
61296
61297  AbstractHistory.prototype.ensureURL = function ensureURL () {
61298    // noop
61299  };
61300
61301  return AbstractHistory;
61302}(History));
61303
61304/*  */
61305
61306
61307
61308var VueRouter = function VueRouter (options) {
61309  if ( options === void 0 ) options = {};
61310
61311  if (true) {
61312    warn(this instanceof VueRouter, "Router must be called with the new operator.");
61313  }
61314  this.app = null;
61315  this.apps = [];
61316  this.options = options;
61317  this.beforeHooks = [];
61318  this.resolveHooks = [];
61319  this.afterHooks = [];
61320  this.matcher = createMatcher(options.routes || [], this);
61321
61322  var mode = options.mode || 'hash';
61323  this.fallback =
61324    mode === 'history' && !supportsPushState && options.fallback !== false;
61325  if (this.fallback) {
61326    mode = 'hash';
61327  }
61328  if (!inBrowser) {
61329    mode = 'abstract';
61330  }
61331  this.mode = mode;
61332
61333  switch (mode) {
61334    case 'history':
61335      this.history = new HTML5History(this, options.base);
61336      break
61337    case 'hash':
61338      this.history = new HashHistory(this, options.base, this.fallback);
61339      break
61340    case 'abstract':
61341      this.history = new AbstractHistory(this, options.base);
61342      break
61343    default:
61344      if (true) {
61345        assert(false, ("invalid mode: " + mode));
61346      }
61347  }
61348};
61349
61350var prototypeAccessors = { currentRoute: { configurable: true } };
61351
61352VueRouter.prototype.match = function match (raw, current, redirectedFrom) {
61353  return this.matcher.match(raw, current, redirectedFrom)
61354};
61355
61356prototypeAccessors.currentRoute.get = function () {
61357  return this.history && this.history.current
61358};
61359
61360VueRouter.prototype.init = function init (app /* Vue component instance */) {
61361    var this$1$1 = this;
61362
61363   true &&
61364    assert(
61365      install.installed,
61366      "not installed. Make sure to call `Vue.use(VueRouter)` " +
61367        "before creating root instance."
61368    );
61369
61370  this.apps.push(app);
61371
61372  // set up app destroyed handler
61373  // https://github.com/vuejs/vue-router/issues/2639
61374  app.$once('hook:destroyed', function () {
61375    // clean out app from this.apps array once destroyed
61376    var index = this$1$1.apps.indexOf(app);
61377    if (index > -1) { this$1$1.apps.splice(index, 1); }
61378    // ensure we still have a main app or null if no apps
61379    // we do not release the router so it can be reused
61380    if (this$1$1.app === app) { this$1$1.app = this$1$1.apps[0] || null; }
61381
61382    if (!this$1$1.app) { this$1$1.history.teardown(); }
61383  });
61384
61385  // main app previously initialized
61386  // return as we don't need to set up new history listener
61387  if (this.app) {
61388    return
61389  }
61390
61391  this.app = app;
61392
61393  var history = this.history;
61394
61395  if (history instanceof HTML5History || history instanceof HashHistory) {
61396    var handleInitialScroll = function (routeOrError) {
61397      var from = history.current;
61398      var expectScroll = this$1$1.options.scrollBehavior;
61399      var supportsScroll = supportsPushState && expectScroll;
61400
61401      if (supportsScroll && 'fullPath' in routeOrError) {
61402        handleScroll(this$1$1, routeOrError, from, false);
61403      }
61404    };
61405    var setupListeners = function (routeOrError) {
61406      history.setupListeners();
61407      handleInitialScroll(routeOrError);
61408    };
61409    history.transitionTo(
61410      history.getCurrentLocation(),
61411      setupListeners,
61412      setupListeners
61413    );
61414  }
61415
61416  history.listen(function (route) {
61417    this$1$1.apps.forEach(function (app) {
61418      app._route = route;
61419    });
61420  });
61421};
61422
61423VueRouter.prototype.beforeEach = function beforeEach (fn) {
61424  return registerHook(this.beforeHooks, fn)
61425};
61426
61427VueRouter.prototype.beforeResolve = function beforeResolve (fn) {
61428  return registerHook(this.resolveHooks, fn)
61429};
61430
61431VueRouter.prototype.afterEach = function afterEach (fn) {
61432  return registerHook(this.afterHooks, fn)
61433};
61434
61435VueRouter.prototype.onReady = function onReady (cb, errorCb) {
61436  this.history.onReady(cb, errorCb);
61437};
61438
61439VueRouter.prototype.onError = function onError (errorCb) {
61440  this.history.onError(errorCb);
61441};
61442
61443VueRouter.prototype.push = function push (location, onComplete, onAbort) {
61444    var this$1$1 = this;
61445
61446  // $flow-disable-line
61447  if (!onComplete && !onAbort && typeof Promise !== 'undefined') {
61448    return new Promise(function (resolve, reject) {
61449      this$1$1.history.push(location, resolve, reject);
61450    })
61451  } else {
61452    this.history.push(location, onComplete, onAbort);
61453  }
61454};
61455
61456VueRouter.prototype.replace = function replace (location, onComplete, onAbort) {
61457    var this$1$1 = this;
61458
61459  // $flow-disable-line
61460  if (!onComplete && !onAbort && typeof Promise !== 'undefined') {
61461    return new Promise(function (resolve, reject) {
61462      this$1$1.history.replace(location, resolve, reject);
61463    })
61464  } else {
61465    this.history.replace(location, onComplete, onAbort);
61466  }
61467};
61468
61469VueRouter.prototype.go = function go (n) {
61470  this.history.go(n);
61471};
61472
61473VueRouter.prototype.back = function back () {
61474  this.go(-1);
61475};
61476
61477VueRouter.prototype.forward = function forward () {
61478  this.go(1);
61479};
61480
61481VueRouter.prototype.getMatchedComponents = function getMatchedComponents (to) {
61482  var route = to
61483    ? to.matched
61484      ? to
61485      : this.resolve(to).route
61486    : this.currentRoute;
61487  if (!route) {
61488    return []
61489  }
61490  return [].concat.apply(
61491    [],
61492    route.matched.map(function (m) {
61493      return Object.keys(m.components).map(function (key) {
61494        return m.components[key]
61495      })
61496    })
61497  )
61498};
61499
61500VueRouter.prototype.resolve = function resolve (
61501  to,
61502  current,
61503  append
61504) {
61505  current = current || this.history.current;
61506  var location = normalizeLocation(to, current, append, this);
61507  var route = this.match(location, current);
61508  var fullPath = route.redirectedFrom || route.fullPath;
61509  var base = this.history.base;
61510  var href = createHref(base, fullPath, this.mode);
61511  return {
61512    location: location,
61513    route: route,
61514    href: href,
61515    // for backwards compat
61516    normalizedTo: location,
61517    resolved: route
61518  }
61519};
61520
61521VueRouter.prototype.getRoutes = function getRoutes () {
61522  return this.matcher.getRoutes()
61523};
61524
61525VueRouter.prototype.addRoute = function addRoute (parentOrRoute, route) {
61526  this.matcher.addRoute(parentOrRoute, route);
61527  if (this.history.current !== START) {
61528    this.history.transitionTo(this.history.getCurrentLocation());
61529  }
61530};
61531
61532VueRouter.prototype.addRoutes = function addRoutes (routes) {
61533  if (true) {
61534    warn(false, 'router.addRoutes() is deprecated and has been removed in Vue Router 4. Use router.addRoute() instead.');
61535  }
61536  this.matcher.addRoutes(routes);
61537  if (this.history.current !== START) {
61538    this.history.transitionTo(this.history.getCurrentLocation());
61539  }
61540};
61541
61542Object.defineProperties( VueRouter.prototype, prototypeAccessors );
61543
61544var VueRouter$1 = VueRouter;
61545
61546function registerHook (list, fn) {
61547  list.push(fn);
61548  return function () {
61549    var i = list.indexOf(fn);
61550    if (i > -1) { list.splice(i, 1); }
61551  }
61552}
61553
61554function createHref (base, fullPath, mode) {
61555  var path = mode === 'hash' ? '#' + fullPath : fullPath;
61556  return base ? cleanPath(base + '/' + path) : path
61557}
61558
61559// We cannot remove this as it would be a breaking change
61560VueRouter.install = install;
61561VueRouter.version = '3.6.5';
61562VueRouter.isNavigationFailure = isNavigationFailure;
61563VueRouter.NavigationFailureType = NavigationFailureType;
61564VueRouter.START_LOCATION = START;
61565
61566if (inBrowser && window.Vue) {
61567  window.Vue.use(VueRouter);
61568}
61569
61570var version = '3.6.5';
61571
61572
61573
61574
61575/***/ }),
61576
vendor: 421,282 bytes, lines 61577-73622
61577/***/ "./node_modules/vue/dist/vue.esm.js":
61578/*!******************************************!*\
61579  !*** ./node_modules/vue/dist/vue.esm.js ***!
61580  \******************************************/
61581/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
61582
61583"use strict";
61584__webpack_require__.r(__webpack_exports__);
61585/* harmony export */ __webpack_require__.d(__webpack_exports__, {
61586/* harmony export */   EffectScope: () => (/* binding */ EffectScope),
61587/* harmony export */   computed: () => (/* binding */ computed),
61588/* harmony export */   customRef: () => (/* binding */ customRef),
61589/* harmony export */   "default": () => (/* binding */ Vue),
61590/* harmony export */   defineAsyncComponent: () => (/* binding */ defineAsyncComponent),
61591/* harmony export */   defineComponent: () => (/* binding */ defineComponent),
61592/* harmony export */   del: () => (/* binding */ del),
61593/* harmony export */   effectScope: () => (/* binding */ effectScope),
61594/* harmony export */   getCurrentInstance: () => (/* binding */ getCurrentInstance),
61595/* harmony export */   getCurrentScope: () => (/* binding */ getCurrentScope),
61596/* harmony export */   h: () => (/* binding */ h),
61597/* harmony export */   inject: () => (/* binding */ inject),
61598/* harmony export */   isProxy: () => (/* binding */ isProxy),
61599/* harmony export */   isReactive: () => (/* binding */ isReactive),
61600/* harmony export */   isReadonly: () => (/* binding */ isReadonly),
61601/* harmony export */   isRef: () => (/* binding */ isRef),
61602/* harmony export */   isShallow: () => (/* binding */ isShallow),
61603/* harmony export */   markRaw: () => (/* binding */ markRaw),
61604/* harmony export */   mergeDefaults: () => (/* binding */ mergeDefaults),
61605/* harmony export */   nextTick: () => (/* binding */ nextTick),
61606/* harmony export */   onActivated: () => (/* binding */ onActivated),
61607/* harmony export */   onBeforeMount: () => (/* binding */ onBeforeMount),
61608/* harmony export */   onBeforeUnmount: () => (/* binding */ onBeforeUnmount),
61609/* harmony export */   onBeforeUpdate: () => (/* binding */ onBeforeUpdate),
61610/* harmony export */   onDeactivated: () => (/* binding */ onDeactivated),
61611/* harmony export */   onErrorCaptured: () => (/* binding */ onErrorCaptured),
61612/* harmony export */   onMounted: () => (/* binding */ onMounted),
61613/* harmony export */   onRenderTracked: () => (/* binding */ onRenderTracked),
61614/* harmony export */   onRenderTriggered: () => (/* binding */ onRenderTriggered),
61615/* harmony export */   onScopeDispose: () => (/* binding */ onScopeDispose),
61616/* harmony export */   onServerPrefetch: () => (/* binding */ onServerPrefetch),
61617/* harmony export */   onUnmounted: () => (/* binding */ onUnmounted),
61618/* harmony export */   onUpdated: () => (/* binding */ onUpdated),
61619/* harmony export */   provide: () => (/* binding */ provide),
61620/* harmony export */   proxyRefs: () => (/* binding */ proxyRefs),
61621/* harmony export */   reactive: () => (/* binding */ reactive),
61622/* harmony export */   readonly: () => (/* binding */ readonly),
61623/* harmony export */   ref: () => (/* binding */ ref$1),
61624/* harmony export */   set: () => (/* binding */ set),
61625/* harmony export */   shallowReactive: () => (/* binding */ shallowReactive),
61626/* harmony export */   shallowReadonly: () => (/* binding */ shallowReadonly),
61627/* harmony export */   shallowRef: () => (/* binding */ shallowRef),
61628/* harmony export */   toRaw: () => (/* binding */ toRaw),
61629/* harmony export */   toRef: () => (/* binding */ toRef),
61630/* harmony export */   toRefs: () => (/* binding */ toRefs),
61631/* harmony export */   triggerRef: () => (/* binding */ triggerRef),
61632/* harmony export */   unref: () => (/* binding */ unref),
61633/* harmony export */   useAttrs: () => (/* binding */ useAttrs),
61634/* harmony export */   useCssModule: () => (/* binding */ useCssModule),
61635/* harmony export */   useCssVars: () => (/* binding */ useCssVars),
61636/* harmony export */   useListeners: () => (/* binding */ useListeners),
61637/* harmony export */   useSlots: () => (/* binding */ useSlots),
61638/* harmony export */   version: () => (/* binding */ version),
61639/* harmony export */   watch: () => (/* binding */ watch),
61640/* harmony export */   watchEffect: () => (/* binding */ watchEffect),
61641/* harmony export */   watchPostEffect: () => (/* binding */ watchPostEffect),
61642/* harmony export */   watchSyncEffect: () => (/* binding */ watchSyncEffect)
61643/* harmony export */ });
61644/*!
61645 * Vue.js v2.7.16
61646 * (c) 2014-2023 Evan You
61647 * Released under the MIT License.
61648 */
61649var emptyObject = Object.freeze({});
61650var isArray = Array.isArray;
61651// These helpers produce better VM code in JS engines due to their
61652// explicitness and function inlining.
61653function isUndef(v) {
61654    return v === undefined || v === null;
61655}
61656function isDef(v) {
61657    return v !== undefined && v !== null;
61658}
61659function isTrue(v) {
61660    return v === true;
61661}
61662function isFalse(v) {
61663    return v === false;
61664}
61665/**
61666 * Check if value is primitive.
61667 */
61668function isPrimitive(value) {
61669    return (typeof value === 'string' ||
61670        typeof value === 'number' ||
61671        // $flow-disable-line
61672        typeof value === 'symbol' ||
61673        typeof value === 'boolean');
61674}
61675function isFunction(value) {
61676    return typeof value === 'function';
61677}
61678/**
61679 * Quick object check - this is primarily used to tell
61680 * objects from primitive values when we know the value
61681 * is a JSON-compliant type.
61682 */
61683function isObject(obj) {
61684    return obj !== null && typeof obj === 'object';
61685}
61686/**
61687 * Get the raw type string of a value, e.g., [object Object].
61688 */
61689var _toString = Object.prototype.toString;
61690function toRawType(value) {
61691    return _toString.call(value).slice(8, -1);
61692}
61693/**
61694 * Strict object type check. Only returns true
61695 * for plain JavaScript objects.
61696 */
61697function isPlainObject(obj) {
61698    return _toString.call(obj) === '[object Object]';
61699}
61700function isRegExp(v) {
61701    return _toString.call(v) === '[object RegExp]';
61702}
61703/**
61704 * Check if val is a valid array index.
61705 */
61706function isValidArrayIndex(val) {
61707    var n = parseFloat(String(val));
61708    return n >= 0 && Math.floor(n) === n && isFinite(val);
61709}
61710function isPromise(val) {
61711    return (isDef(val) &&
61712        typeof val.then === 'function' &&
61713        typeof val.catch === 'function');
61714}
61715/**
61716 * Convert a value to a string that is actually rendered.
61717 */
61718function toString(val) {
61719    return val == null
61720        ? ''
61721        : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)
61722            ? JSON.stringify(val, replacer, 2)
61723            : String(val);
61724}
61725function replacer(_key, val) {
61726    // avoid circular deps from v3
61727    if (val && val.__v_isRef) {
61728        return val.value;
61729    }
61730    return val;
61731}
61732/**
61733 * Convert an input value to a number for persistence.
61734 * If the conversion fails, return original string.
61735 */
61736function toNumber(val) {
61737    var n = parseFloat(val);
61738    return isNaN(n) ? val : n;
61739}
61740/**
61741 * Make a map and return a function for checking if a key
61742 * is in that map.
61743 */
61744function makeMap(str, expectsLowerCase) {
61745    var map = Object.create(null);
61746    var list = str.split(',');
61747    for (var i = 0; i < list.length; i++) {
61748        map[list[i]] = true;
61749    }
61750    return expectsLowerCase ? function (val) { return map[val.toLowerCase()]; } : function (val) { return map[val]; };
61751}
61752/**
61753 * Check if a tag is a built-in tag.
61754 */
61755var isBuiltInTag = makeMap('slot,component', true);
61756/**
61757 * Check if an attribute is a reserved attribute.
61758 */
61759var isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');
61760/**
61761 * Remove an item from an array.
61762 */
61763function remove$2(arr, item) {
61764    var len = arr.length;
61765    if (len) {
61766        // fast path for the only / last item
61767        if (item === arr[len - 1]) {
61768            arr.length = len - 1;
61769            return;
61770        }
61771        var index = arr.indexOf(item);
61772        if (index > -1) {
61773            return arr.splice(index, 1);
61774        }
61775    }
61776}
61777/**
61778 * Check whether an object has the property.
61779 */
61780var hasOwnProperty = Object.prototype.hasOwnProperty;
61781function hasOwn(obj, key) {
61782    return hasOwnProperty.call(obj, key);
61783}
61784/**
61785 * Create a cached version of a pure function.
61786 */
61787function cached(fn) {
61788    var cache = Object.create(null);
61789    return function cachedFn(str) {
61790        var hit = cache[str];
61791        return hit || (cache[str] = fn(str));
61792    };
61793}
61794/**
61795 * Camelize a hyphen-delimited string.
61796 */
61797var camelizeRE = /-(\w)/g;
61798var camelize = cached(function (str) {
61799    return str.replace(camelizeRE, function (_, c) { return (c ? c.toUpperCase() : ''); });
61800});
61801/**
61802 * Capitalize a string.
61803 */
61804var capitalize = cached(function (str) {
61805    return str.charAt(0).toUpperCase() + str.slice(1);
61806});
61807/**
61808 * Hyphenate a camelCase string.
61809 */
61810var hyphenateRE = /\B([A-Z])/g;
61811var hyphenate = cached(function (str) {
61812    return str.replace(hyphenateRE, '-$1').toLowerCase();
61813});
61814/**
61815 * Simple bind polyfill for environments that do not support it,
61816 * e.g., PhantomJS 1.x. Technically, we don't need this anymore
61817 * since native bind is now performant enough in most browsers.
61818 * But removing it would mean breaking code that was able to run in
61819 * PhantomJS 1.x, so this must be kept for backward compatibility.
61820 */
61821/* istanbul ignore next */
61822function polyfillBind(fn, ctx) {
61823    function boundFn(a) {
61824        var l = arguments.length;
61825        return l
61826            ? l > 1
61827                ? fn.apply(ctx, arguments)
61828                : fn.call(ctx, a)
61829            : fn.call(ctx);
61830    }
61831    boundFn._length = fn.length;
61832    return boundFn;
61833}
61834function nativeBind(fn, ctx) {
61835    return fn.bind(ctx);
61836}
61837// @ts-expect-error bind cannot be `undefined`
61838var bind$1 = Function.prototype.bind ? nativeBind : polyfillBind;
61839/**
61840 * Convert an Array-like object to a real Array.
61841 */
61842function toArray(list, start) {
61843    start = start || 0;
61844    var i = list.length - start;
61845    var ret = new Array(i);
61846    while (i--) {
61847        ret[i] = list[i + start];
61848    }
61849    return ret;
61850}
61851/**
61852 * Mix properties into target object.
61853 */
61854function extend(to, _from) {
61855    for (var key in _from) {
61856        to[key] = _from[key];
61857    }
61858    return to;
61859}
61860/**
61861 * Merge an Array of Objects into a single Object.
61862 */
61863function toObject(arr) {
61864    var res = {};
61865    for (var i = 0; i < arr.length; i++) {
61866        if (arr[i]) {
61867            extend(res, arr[i]);
61868        }
61869    }
61870    return res;
61871}
61872/* eslint-disable no-unused-vars */
61873/**
61874 * Perform no operation.
61875 * Stubbing args to make Flow happy without leaving useless transpiled code
61876 * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).
61877 */
61878function noop(a, b, c) { }
61879/**
61880 * Always return false.
61881 */
61882var no = function (a, b, c) { return false; };
61883/* eslint-enable no-unused-vars */
61884/**
61885 * Return the same value.
61886 */
61887var identity = function (_) { return _; };
61888/**
61889 * Generate a string containing static keys from compiler modules.
61890 */
61891function genStaticKeys$1(modules) {
61892    return modules
61893        .reduce(function (keys, m) { return keys.concat(m.staticKeys || []); }, [])
61894        .join(',');
61895}
61896/**
61897 * Check if two values are loosely equal - that is,
61898 * if they are plain objects, do they have the same shape?
61899 */
61900function looseEqual(a, b) {
61901    if (a === b)
61902        return true;
61903    var isObjectA = isObject(a);
61904    var isObjectB = isObject(b);
61905    if (isObjectA && isObjectB) {
61906        try {
61907            var isArrayA = Array.isArray(a);
61908            var isArrayB = Array.isArray(b);
61909            if (isArrayA && isArrayB) {
61910                return (a.length === b.length &&
61911                    a.every(function (e, i) {
61912                        return looseEqual(e, b[i]);
61913                    }));
61914            }
61915            else if (a instanceof Date && b instanceof Date) {
61916                return a.getTime() === b.getTime();
61917            }
61918            else if (!isArrayA && !isArrayB) {
61919                var keysA = Object.keys(a);
61920                var keysB = Object.keys(b);
61921                return (keysA.length === keysB.length &&
61922                    keysA.every(function (key) {
61923                        return looseEqual(a[key], b[key]);
61924                    }));
61925            }
61926            else {
61927                /* istanbul ignore next */
61928                return false;
61929            }
61930        }
61931        catch (e) {
61932            /* istanbul ignore next */
61933            return false;
61934        }
61935    }
61936    else if (!isObjectA && !isObjectB) {
61937        return String(a) === String(b);
61938    }
61939    else {
61940        return false;
61941    }
61942}
61943/**
61944 * Return the first index at which a loosely equal value can be
61945 * found in the array (if value is a plain object, the array must
61946 * contain an object of the same shape), or -1 if it is not present.
61947 */
61948function looseIndexOf(arr, val) {
61949    for (var i = 0; i < arr.length; i++) {
61950        if (looseEqual(arr[i], val))
61951            return i;
61952    }
61953    return -1;
61954}
61955/**
61956 * Ensure a function is called only once.
61957 */
61958function once(fn) {
61959    var called = false;
61960    return function () {
61961        if (!called) {
61962            called = true;
61963            fn.apply(this, arguments);
61964        }
61965    };
61966}
61967// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is#polyfill
61968function hasChanged(x, y) {
61969    if (x === y) {
61970        return x === 0 && 1 / x !== 1 / y;
61971    }
61972    else {
61973        return x === x || y === y;
61974    }
61975}
61976
61977var SSR_ATTR = 'data-server-rendered';
61978var ASSET_TYPES = ['component', 'directive', 'filter'];
61979var LIFECYCLE_HOOKS = [
61980    'beforeCreate',
61981    'created',
61982    'beforeMount',
61983    'mounted',
61984    'beforeUpdate',
61985    'updated',
61986    'beforeDestroy',
61987    'destroyed',
61988    'activated',
61989    'deactivated',
61990    'errorCaptured',
61991    'serverPrefetch',
61992    'renderTracked',
61993    'renderTriggered'
61994];
61995
61996var config = {
61997    /**
61998     * Option merge strategies (used in core/util/options)
61999     */
62000    // $flow-disable-line
62001    optionMergeStrategies: Object.create(null),
62002    /**
62003     * Whether to suppress warnings.
62004     */
62005    silent: false,
62006    /**
62007     * Show production mode tip message on boot?
62008     */
62009    productionTip: "development" !== 'production',
62010    /**
62011     * Whether to enable devtools
62012     */
62013    devtools: "development" !== 'production',
62014    /**
62015     * Whether to record perf
62016     */
62017    performance: false,
62018    /**
62019     * Error handler for watcher errors
62020     */
62021    errorHandler: null,
62022    /**
62023     * Warn handler for watcher warns
62024     */
62025    warnHandler: null,
62026    /**
62027     * Ignore certain custom elements
62028     */
62029    ignoredElements: [],
62030    /**
62031     * Custom user key aliases for v-on
62032     */
62033    // $flow-disable-line
62034    keyCodes: Object.create(null),
62035    /**
62036     * Check if a tag is reserved so that it cannot be registered as a
62037     * component. This is platform-dependent and may be overwritten.
62038     */
62039    isReservedTag: no,
62040    /**
62041     * Check if an attribute is reserved so that it cannot be used as a component
62042     * prop. This is platform-dependent and may be overwritten.
62043     */
62044    isReservedAttr: no,
62045    /**
62046     * Check if a tag is an unknown element.
62047     * Platform-dependent.
62048     */
62049    isUnknownElement: no,
62050    /**
62051     * Get the namespace of an element
62052     */
62053    getTagNamespace: noop,
62054    /**
62055     * Parse the real tag name for the specific platform.
62056     */
62057    parsePlatformTagName: identity,
62058    /**
62059     * Check if an attribute must be bound using property, e.g. value
62060     * Platform-dependent.
62061     */
62062    mustUseProp: no,
62063    /**
62064     * Perform updates asynchronously. Intended to be used by Vue Test Utils
62065     * This will significantly reduce performance if set to false.
62066     */
62067    async: true,
62068    /**
62069     * Exposed for legacy reasons
62070     */
62071    _lifecycleHooks: LIFECYCLE_HOOKS
62072};
62073
62074/**
62075 * unicode letters used for parsing html tags, component names and property paths.
62076 * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname
62077 * skipping \u10000-\uEFFFF due to it freezing up PhantomJS
62078 */
62079var unicodeRegExp = /a-zA-Z\u00B7\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u037D\u037F-\u1FFF\u200C-\u200D\u203F-\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD/;
62080/**
62081 * Check if a string starts with $ or _
62082 */
62083function isReserved(str) {
62084    var c = (str + '').charCodeAt(0);
62085    return c === 0x24 || c === 0x5f;
62086}
62087/**
62088 * Define a property.
62089 */
62090function def(obj, key, val, enumerable) {
62091    Object.defineProperty(obj, key, {
62092        value: val,
62093        enumerable: !!enumerable,
62094        writable: true,
62095        configurable: true
62096    });
62097}
62098/**
62099 * Parse simple path.
62100 */
62101var bailRE = new RegExp("[^".concat(unicodeRegExp.source, ".$_\\d]"));
62102function parsePath(path) {
62103    if (bailRE.test(path)) {
62104        return;
62105    }
62106    var segments = path.split('.');
62107    return function (obj) {
62108        for (var i = 0; i < segments.length; i++) {
62109            if (!obj)
62110                return;
62111            obj = obj[segments[i]];
62112        }
62113        return obj;
62114    };
62115}
62116
62117// can we use __proto__?
62118var hasProto = '__proto__' in {};
62119// Browser environment sniffing
62120var inBrowser = typeof window !== 'undefined';
62121var UA = inBrowser && window.navigator.userAgent.toLowerCase();
62122var isIE = UA && /msie|trident/.test(UA);
62123var isIE9 = UA && UA.indexOf('msie 9.0') > 0;
62124var isEdge = UA && UA.indexOf('edge/') > 0;
62125UA && UA.indexOf('android') > 0;
62126var isIOS = UA && /iphone|ipad|ipod|ios/.test(UA);
62127UA && /chrome\/\d+/.test(UA) && !isEdge;
62128UA && /phantomjs/.test(UA);
62129var isFF = UA && UA.match(/firefox\/(\d+)/);
62130// Firefox has a "watch" function on Object.prototype...
62131// @ts-expect-error firebox support
62132var nativeWatch = {}.watch;
62133var supportsPassive = false;
62134if (inBrowser) {
62135    try {
62136        var opts = {};
62137        Object.defineProperty(opts, 'passive', {
62138            get: function () {
62139                /* istanbul ignore next */
62140                supportsPassive = true;
62141            }
62142        }); // https://github.com/facebook/flow/issues/285
62143        window.addEventListener('test-passive', null, opts);
62144    }
62145    catch (e) { }
62146}
62147// this needs to be lazy-evaled because vue may be required before
62148// vue-server-renderer can set VUE_ENV
62149var _isServer;
62150var isServerRendering = function () {
62151    if (_isServer === undefined) {
62152        /* istanbul ignore if */
62153        if (!inBrowser && typeof __webpack_require__.g !== 'undefined') {
62154            // detect presence of vue-server-renderer and avoid
62155            // Webpack shimming the process
62156            _isServer =
62157                __webpack_require__.g['process'] && __webpack_require__.g['process'].env.VUE_ENV === 'server';
62158        }
62159        else {
62160            _isServer = false;
62161        }
62162    }
62163    return _isServer;
62164};
62165// detect devtools
62166var devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;
62167/* istanbul ignore next */
62168function isNative(Ctor) {
62169    return typeof Ctor === 'function' && /native code/.test(Ctor.toString());
62170}
62171var hasSymbol = typeof Symbol !== 'undefined' &&
62172    isNative(Symbol) &&
62173    typeof Reflect !== 'undefined' &&
62174    isNative(Reflect.ownKeys);
62175var _Set; // $flow-disable-line
62176/* istanbul ignore if */ if (typeof Set !== 'undefined' && isNative(Set)) {
62177    // use native Set when available.
62178    _Set = Set;
62179}
62180else {
62181    // a non-standard Set polyfill that only works with primitive keys.
62182    _Set = /** @class */ (function () {
62183        function Set() {
62184            this.set = Object.create(null);
62185        }
62186        Set.prototype.has = function (key) {
62187            return this.set[key] === true;
62188        };
62189        Set.prototype.add = function (key) {
62190            this.set[key] = true;
62191        };
62192        Set.prototype.clear = function () {
62193            this.set = Object.create(null);
62194        };
62195        return Set;
62196    }());
62197}
62198
62199var currentInstance = null;
62200/**
62201 * This is exposed for compatibility with v3 (e.g. some functions in VueUse
62202 * relies on it). Do not use this internally, just use `currentInstance`.
62203 *
62204 * @internal this function needs manual type declaration because it relies
62205 * on previously manually authored types from Vue 2
62206 */
62207function getCurrentInstance() {
62208    return currentInstance && { proxy: currentInstance };
62209}
62210/**
62211 * @internal
62212 */
62213function setCurrentInstance(vm) {
62214    if (vm === void 0) { vm = null; }
62215    if (!vm)
62216        currentInstance && currentInstance._scope.off();
62217    currentInstance = vm;
62218    vm && vm._scope.on();
62219}
62220
62221/**
62222 * @internal
62223 */
62224var VNode = /** @class */ (function () {
62225    function VNode(tag, data, children, text, elm, context, componentOptions, asyncFactory) {
62226        this.tag = tag;
62227        this.data = data;
62228        this.children = children;
62229        this.text = text;
62230        this.elm = elm;
62231        this.ns = undefined;
62232        this.context = context;
62233        this.fnContext = undefined;
62234        this.fnOptions = undefined;
62235        this.fnScopeId = undefined;
62236        this.key = data && data.key;
62237        this.componentOptions = componentOptions;
62238        this.componentInstance = undefined;
62239        this.parent = undefined;
62240        this.raw = false;
62241        this.isStatic = false;
62242        this.isRootInsert = true;
62243        this.isComment = false;
62244        this.isCloned = false;
62245        this.isOnce = false;
62246        this.asyncFactory = asyncFactory;
62247        this.asyncMeta = undefined;
62248        this.isAsyncPlaceholder = false;
62249    }
62250    Object.defineProperty(VNode.prototype, "child", {
62251        // DEPRECATED: alias for componentInstance for backwards compat.
62252        /* istanbul ignore next */
62253        get: function () {
62254            return this.componentInstance;
62255        },
62256        enumerable: false,
62257        configurable: true
62258    });
62259    return VNode;
62260}());
62261var createEmptyVNode = function (text) {
62262    if (text === void 0) { text = ''; }
62263    var node = new VNode();
62264    node.text = text;
62265    node.isComment = true;
62266    return node;
62267};
62268function createTextVNode(val) {
62269    return new VNode(undefined, undefined, undefined, String(val));
62270}
62271// optimized shallow clone
62272// used for static nodes and slot nodes because they may be reused across
62273// multiple renders, cloning them avoids errors when DOM manipulations rely
62274// on their elm reference.
62275function cloneVNode(vnode) {
62276    var cloned = new VNode(vnode.tag, vnode.data, 
62277    // #7975
62278    // clone children array to avoid mutating original in case of cloning
62279    // a child.
62280    vnode.children && vnode.children.slice(), vnode.text, vnode.elm, vnode.context, vnode.componentOptions, vnode.asyncFactory);
62281    cloned.ns = vnode.ns;
62282    cloned.isStatic = vnode.isStatic;
62283    cloned.key = vnode.key;
62284    cloned.isComment = vnode.isComment;
62285    cloned.fnContext = vnode.fnContext;
62286    cloned.fnOptions = vnode.fnOptions;
62287    cloned.fnScopeId = vnode.fnScopeId;
62288    cloned.asyncMeta = vnode.asyncMeta;
62289    cloned.isCloned = true;
62290    return cloned;
62291}
62292
62293/* not type checking this file because flow doesn't play well with Proxy */
62294var initProxy;
62295if (true) {
62296    var allowedGlobals_1 = makeMap('Infinity,undefined,NaN,isFinite,isNaN,' +
62297        'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +
62298        'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,' +
62299        'require' // for Webpack/Browserify
62300    );
62301    var warnNonPresent_1 = function (target, key) {
62302        warn$2("Property or method \"".concat(key, "\" is not defined on the instance but ") +
62303            'referenced during render. Make sure that this property is reactive, ' +
62304            'either in the data option, or for class-based components, by ' +
62305            'initializing the property. ' +
62306            'See: https://v2.vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.', target);
62307    };
62308    var warnReservedPrefix_1 = function (target, key) {
62309        warn$2("Property \"".concat(key, "\" must be accessed with \"$data.").concat(key, "\" because ") +
62310            'properties starting with "$" or "_" are not proxied in the Vue instance to ' +
62311            'prevent conflicts with Vue internals. ' +
62312            'See: https://v2.vuejs.org/v2/api/#data', target);
62313    };
62314    var hasProxy_1 = typeof Proxy !== 'undefined' && isNative(Proxy);
62315    if (hasProxy_1) {
62316        var isBuiltInModifier_1 = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');
62317        config.keyCodes = new Proxy(config.keyCodes, {
62318            set: function (target, key, value) {
62319                if (isBuiltInModifier_1(key)) {
62320                    warn$2("Avoid overwriting built-in modifier in config.keyCodes: .".concat(key));
62321                    return false;
62322                }
62323                else {
62324                    target[key] = value;
62325                    return true;
62326                }
62327            }
62328        });
62329    }
62330    var hasHandler_1 = {
62331        has: function (target, key) {
62332            var has = key in target;
62333            var isAllowed = allowedGlobals_1(key) ||
62334                (typeof key === 'string' &&
62335                    key.charAt(0) === '_' &&
62336                    !(key in target.$data));
62337            if (!has && !isAllowed) {
62338                if (key in target.$data)
62339                    warnReservedPrefix_1(target, key);
62340                else
62341                    warnNonPresent_1(target, key);
62342            }
62343            return has || !isAllowed;
62344        }
62345    };
62346    var getHandler_1 = {
62347        get: function (target, key) {
62348            if (typeof key === 'string' && !(key in target)) {
62349                if (key in target.$data)
62350                    warnReservedPrefix_1(target, key);
62351                else
62352                    warnNonPresent_1(target, key);
62353            }
62354            return target[key];
62355        }
62356    };
62357    initProxy = function initProxy(vm) {
62358        if (hasProxy_1) {
62359            // determine which proxy handler to use
62360            var options = vm.$options;
62361            var handlers = options.render && options.render._withStripped ? getHandler_1 : hasHandler_1;
62362            vm._renderProxy = new Proxy(vm, handlers);
62363        }
62364        else {
62365            vm._renderProxy = vm;
62366        }
62367    };
62368}
62369
62370/******************************************************************************
62371Copyright (c) Microsoft Corporation.
62372
62373Permission to use, copy, modify, and/or distribute this software for any
62374purpose with or without fee is hereby granted.
62375
62376THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
62377REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
62378AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
62379INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
62380LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
62381OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
62382PERFORMANCE OF THIS SOFTWARE.
62383***************************************************************************** */
62384
62385var __assign = function() {
62386    __assign = Object.assign || function __assign(t) {
62387        for (var s, i = 1, n = arguments.length; i < n; i++) {
62388            s = arguments[i];
62389            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
62390        }
62391        return t;
62392    };
62393    return __assign.apply(this, arguments);
62394};
62395
62396typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
62397    var e = new Error(message);
62398    return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
62399};
62400
62401var uid$2 = 0;
62402var pendingCleanupDeps = [];
62403var cleanupDeps = function () {
62404    for (var i = 0; i < pendingCleanupDeps.length; i++) {
62405        var dep = pendingCleanupDeps[i];
62406        dep.subs = dep.subs.filter(function (s) { return s; });
62407        dep._pending = false;
62408    }
62409    pendingCleanupDeps.length = 0;
62410};
62411/**
62412 * A dep is an observable that can have multiple
62413 * directives subscribing to it.
62414 * @internal
62415 */
62416var Dep = /** @class */ (function () {
62417    function Dep() {
62418        // pending subs cleanup
62419        this._pending = false;
62420        this.id = uid$2++;
62421        this.subs = [];
62422    }
62423    Dep.prototype.addSub = function (sub) {
62424        this.subs.push(sub);
62425    };
62426    Dep.prototype.removeSub = function (sub) {
62427        // #12696 deps with massive amount of subscribers are extremely slow to
62428        // clean up in Chromium
62429        // to workaround this, we unset the sub for now, and clear them on
62430        // next scheduler flush.
62431        this.subs[this.subs.indexOf(sub)] = null;
62432        if (!this._pending) {
62433            this._pending = true;
62434            pendingCleanupDeps.push(this);
62435        }
62436    };
62437    Dep.prototype.depend = function (info) {
62438        if (Dep.target) {
62439            Dep.target.addDep(this);
62440            if ( true && info && Dep.target.onTrack) {
62441                Dep.target.onTrack(__assign({ effect: Dep.target }, info));
62442            }
62443        }
62444    };
62445    Dep.prototype.notify = function (info) {
62446        // stabilize the subscriber list first
62447        var subs = this.subs.filter(function (s) { return s; });
62448        if ( true && !config.async) {
62449            // subs aren't sorted in scheduler if not running async
62450            // we need to sort them now to make sure they fire in correct
62451            // order
62452            subs.sort(function (a, b) { return a.id - b.id; });
62453        }
62454        for (var i = 0, l = subs.length; i < l; i++) {
62455            var sub = subs[i];
62456            if ( true && info) {
62457                sub.onTrigger &&
62458                    sub.onTrigger(__assign({ effect: subs[i] }, info));
62459            }
62460            sub.update();
62461        }
62462    };
62463    return Dep;
62464}());
62465// The current target watcher being evaluated.
62466// This is globally unique because only one watcher
62467// can be evaluated at a time.
62468Dep.target = null;
62469var targetStack = [];
62470function pushTarget(target) {
62471    targetStack.push(target);
62472    Dep.target = target;
62473}
62474function popTarget() {
62475    targetStack.pop();
62476    Dep.target = targetStack[targetStack.length - 1];
62477}
62478
62479/*
62480 * not type checking this file because flow doesn't play well with
62481 * dynamically accessing methods on Array prototype
62482 */
62483var arrayProto = Array.prototype;
62484var arrayMethods = Object.create(arrayProto);
62485var methodsToPatch = [
62486    'push',
62487    'pop',
62488    'shift',
62489    'unshift',
62490    'splice',
62491    'sort',
62492    'reverse'
62493];
62494/**
62495 * Intercept mutating methods and emit events
62496 */
62497methodsToPatch.forEach(function (method) {
62498    // cache original method
62499    var original = arrayProto[method];
62500    def(arrayMethods, method, function mutator() {
62501        var args = [];
62502        for (var _i = 0; _i < arguments.length; _i++) {
62503            args[_i] = arguments[_i];
62504        }
62505        var result = original.apply(this, args);
62506        var ob = this.__ob__;
62507        var inserted;
62508        switch (method) {
62509            case 'push':
62510            case 'unshift':
62511                inserted = args;
62512                break;
62513            case 'splice':
62514                inserted = args.slice(2);
62515                break;
62516        }
62517        if (inserted)
62518            ob.observeArray(inserted);
62519        // notify change
62520        if (true) {
62521            ob.dep.notify({
62522                type: "array mutation" /* TriggerOpTypes.ARRAY_MUTATION */,
62523                target: this,
62524                key: method
62525            });
62526        }
62527        else {}
62528        return result;
62529    });
62530});
62531
62532var arrayKeys = Object.getOwnPropertyNames(arrayMethods);
62533var NO_INITIAL_VALUE = {};
62534/**
62535 * In some cases we may want to disable observation inside a component's
62536 * update computation.
62537 */
62538var shouldObserve = true;
62539function toggleObserving(value) {
62540    shouldObserve = value;
62541}
62542// ssr mock dep
62543var mockDep = {
62544    notify: noop,
62545    depend: noop,
62546    addSub: noop,
62547    removeSub: noop
62548};
62549/**
62550 * Observer class that is attached to each observed
62551 * object. Once attached, the observer converts the target
62552 * object's property keys into getter/setters that
62553 * collect dependencies and dispatch updates.
62554 */
62555var Observer = /** @class */ (function () {
62556    function Observer(value, shallow, mock) {
62557        if (shallow === void 0) { shallow = false; }
62558        if (mock === void 0) { mock = false; }
62559        this.value = value;
62560        this.shallow = shallow;
62561        this.mock = mock;
62562        // this.value = value
62563        this.dep = mock ? mockDep : new Dep();
62564        this.vmCount = 0;
62565        def(value, '__ob__', this);
62566        if (isArray(value)) {
62567            if (!mock) {
62568                if (hasProto) {
62569                    value.__proto__ = arrayMethods;
62570                    /* eslint-enable no-proto */
62571                }
62572                else {
62573                    for (var i = 0, l = arrayKeys.length; i < l; i++) {
62574                        var key = arrayKeys[i];
62575                        def(value, key, arrayMethods[key]);
62576                    }
62577                }
62578            }
62579            if (!shallow) {
62580                this.observeArray(value);
62581            }
62582        }
62583        else {
62584            /**
62585             * Walk through all properties and convert them into
62586             * getter/setters. This method should only be called when
62587             * value type is Object.
62588             */
62589            var keys = Object.keys(value);
62590            for (var i = 0; i < keys.length; i++) {
62591                var key = keys[i];
62592                defineReactive(value, key, NO_INITIAL_VALUE, undefined, shallow, mock);
62593            }
62594        }
62595    }
62596    /**
62597     * Observe a list of Array items.
62598     */
62599    Observer.prototype.observeArray = function (value) {
62600        for (var i = 0, l = value.length; i < l; i++) {
62601            observe(value[i], false, this.mock);
62602        }
62603    };
62604    return Observer;
62605}());
62606// helpers
62607/**
62608 * Attempt to create an observer instance for a value,
62609 * returns the new observer if successfully observed,
62610 * or the existing observer if the value already has one.
62611 */
62612function observe(value, shallow, ssrMockReactivity) {
62613    if (value && hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {
62614        return value.__ob__;
62615    }
62616    if (shouldObserve &&
62617        (ssrMockReactivity || !isServerRendering()) &&
62618        (isArray(value) || isPlainObject(value)) &&
62619        Object.isExtensible(value) &&
62620        !value.__v_skip /* ReactiveFlags.SKIP */ &&
62621        !isRef(value) &&
62622        !(value instanceof VNode)) {
62623        return new Observer(value, shallow, ssrMockReactivity);
62624    }
62625}
62626/**
62627 * Define a reactive property on an Object.
62628 */
62629function defineReactive(obj, key, val, customSetter, shallow, mock, observeEvenIfShallow) {
62630    if (observeEvenIfShallow === void 0) { observeEvenIfShallow = false; }
62631    var dep = new Dep();
62632    var property = Object.getOwnPropertyDescriptor(obj, key);
62633    if (property && property.configurable === false) {
62634        return;
62635    }
62636    // cater for pre-defined getter/setters
62637    var getter = property && property.get;
62638    var setter = property && property.set;
62639    if ((!getter || setter) &&
62640        (val === NO_INITIAL_VALUE || arguments.length === 2)) {
62641        val = obj[key];
62642    }
62643    var childOb = shallow ? val && val.__ob__ : observe(val, false, mock);
62644    Object.defineProperty(obj, key, {
62645        enumerable: true,
62646        configurable: true,
62647        get: function reactiveGetter() {
62648            var value = getter ? getter.call(obj) : val;
62649            if (Dep.target) {
62650                if (true) {
62651                    dep.depend({
62652                        target: obj,
62653                        type: "get" /* TrackOpTypes.GET */,
62654                        key: key
62655                    });
62656                }
62657                else {}
62658                if (childOb) {
62659                    childOb.dep.depend();
62660                    if (isArray(value)) {
62661                        dependArray(value);
62662                    }
62663                }
62664            }
62665            return isRef(value) && !shallow ? value.value : value;
62666        },
62667        set: function reactiveSetter(newVal) {
62668            var value = getter ? getter.call(obj) : val;
62669            if (!hasChanged(value, newVal)) {
62670                return;
62671            }
62672            if ( true && customSetter) {
62673                customSetter();
62674            }
62675            if (setter) {
62676                setter.call(obj, newVal);
62677            }
62678            else if (getter) {
62679                // #7981: for accessor properties without setter
62680                return;
62681            }
62682            else if (!shallow && isRef(value) && !isRef(newVal)) {
62683                value.value = newVal;
62684                return;
62685            }
62686            else {
62687                val = newVal;
62688            }
62689            childOb = shallow ? newVal && newVal.__ob__ : observe(newVal, false, mock);
62690            if (true) {
62691                dep.notify({
62692                    type: "set" /* TriggerOpTypes.SET */,
62693                    target: obj,
62694                    key: key,
62695                    newValue: newVal,
62696                    oldValue: value
62697                });
62698            }
62699            else {}
62700        }
62701    });
62702    return dep;
62703}
62704function set(target, key, val) {
62705    if ( true && (isUndef(target) || isPrimitive(target))) {
62706        warn$2("Cannot set reactive property on undefined, null, or primitive value: ".concat(target));
62707    }
62708    if (isReadonly(target)) {
62709         true && warn$2("Set operation on key \"".concat(key, "\" failed: target is readonly."));
62710        return;
62711    }
62712    var ob = target.__ob__;
62713    if (isArray(target) && isValidArrayIndex(key)) {
62714        target.length = Math.max(target.length, key);
62715        target.splice(key, 1, val);
62716        // when mocking for SSR, array methods are not hijacked
62717        if (ob && !ob.shallow && ob.mock) {
62718            observe(val, false, true);
62719        }
62720        return val;
62721    }
62722    if (key in target && !(key in Object.prototype)) {
62723        target[key] = val;
62724        return val;
62725    }
62726    if (target._isVue || (ob && ob.vmCount)) {
62727         true &&
62728            warn$2('Avoid adding reactive properties to a Vue instance or its root $data ' +
62729                'at runtime - declare it upfront in the data option.');
62730        return val;
62731    }
62732    if (!ob) {
62733        target[key] = val;
62734        return val;
62735    }
62736    defineReactive(ob.value, key, val, undefined, ob.shallow, ob.mock);
62737    if (true) {
62738        ob.dep.notify({
62739            type: "add" /* TriggerOpTypes.ADD */,
62740            target: target,
62741            key: key,
62742            newValue: val,
62743            oldValue: undefined
62744        });
62745    }
62746    else {}
62747    return val;
62748}
62749function del(target, key) {
62750    if ( true && (isUndef(target) || isPrimitive(target))) {
62751        warn$2("Cannot delete reactive property on undefined, null, or primitive value: ".concat(target));
62752    }
62753    if (isArray(target) && isValidArrayIndex(key)) {
62754        target.splice(key, 1);
62755        return;
62756    }
62757    var ob = target.__ob__;
62758    if (target._isVue || (ob && ob.vmCount)) {
62759         true &&
62760            warn$2('Avoid deleting properties on a Vue instance or its root $data ' +
62761                '- just set it to null.');
62762        return;
62763    }
62764    if (isReadonly(target)) {
62765         true &&
62766            warn$2("Delete operation on key \"".concat(key, "\" failed: target is readonly."));
62767        return;
62768    }
62769    if (!hasOwn(target, key)) {
62770        return;
62771    }
62772    delete target[key];
62773    if (!ob) {
62774        return;
62775    }
62776    if (true) {
62777        ob.dep.notify({
62778            type: "delete" /* TriggerOpTypes.DELETE */,
62779            target: target,
62780            key: key
62781        });
62782    }
62783    else {}
62784}
62785/**
62786 * Collect dependencies on array elements when the array is touched, since
62787 * we cannot intercept array element access like property getters.
62788 */
62789function dependArray(value) {
62790    for (var e = void 0, i = 0, l = value.length; i < l; i++) {
62791        e = value[i];
62792        if (e && e.__ob__) {
62793            e.__ob__.dep.depend();
62794        }
62795        if (isArray(e)) {
62796            dependArray(e);
62797        }
62798    }
62799}
62800
62801function reactive(target) {
62802    makeReactive(target, false);
62803    return target;
62804}
62805/**
62806 * Return a shallowly-reactive copy of the original object, where only the root
62807 * level properties are reactive. It also does not auto-unwrap refs (even at the
62808 * root level).
62809 */
62810function shallowReactive(target) {
62811    makeReactive(target, true);
62812    def(target, "__v_isShallow" /* ReactiveFlags.IS_SHALLOW */, true);
62813    return target;
62814}
62815function makeReactive(target, shallow) {
62816    // if trying to observe a readonly proxy, return the readonly version.
62817    if (!isReadonly(target)) {
62818        if (true) {
62819            if (isArray(target)) {
62820                warn$2("Avoid using Array as root value for ".concat(shallow ? "shallowReactive()" : "reactive()", " as it cannot be tracked in watch() or watchEffect(). Use ").concat(shallow ? "shallowRef()" : "ref()", " instead. This is a Vue-2-only limitation."));
62821            }
62822            var existingOb = target && target.__ob__;
62823            if (existingOb && existingOb.shallow !== shallow) {
62824                warn$2("Target is already a ".concat(existingOb.shallow ? "" : "non-", "shallow reactive object, and cannot be converted to ").concat(shallow ? "" : "non-", "shallow."));
62825            }
62826        }
62827        var ob = observe(target, shallow, isServerRendering() /* ssr mock reactivity */);
62828        if ( true && !ob) {
62829            if (target == null || isPrimitive(target)) {
62830                warn$2("value cannot be made reactive: ".concat(String(target)));
62831            }
62832            if (isCollectionType(target)) {
62833                warn$2("Vue 2 does not support reactive collection types such as Map or Set.");
62834            }
62835        }
62836    }
62837}
62838function isReactive(value) {
62839    if (isReadonly(value)) {
62840        return isReactive(value["__v_raw" /* ReactiveFlags.RAW */]);
62841    }
62842    return !!(value && value.__ob__);
62843}
62844function isShallow(value) {
62845    return !!(value && value.__v_isShallow);
62846}
62847function isReadonly(value) {
62848    return !!(value && value.__v_isReadonly);
62849}
62850function isProxy(value) {
62851    return isReactive(value) || isReadonly(value);
62852}
62853function toRaw(observed) {
62854    var raw = observed && observed["__v_raw" /* ReactiveFlags.RAW */];
62855    return raw ? toRaw(raw) : observed;
62856}
62857function markRaw(value) {
62858    // non-extensible objects won't be observed anyway
62859    if (Object.isExtensible(value)) {
62860        def(value, "__v_skip" /* ReactiveFlags.SKIP */, true);
62861    }
62862    return value;
62863}
62864/**
62865 * @internal
62866 */
62867function isCollectionType(value) {
62868    var type = toRawType(value);
62869    return (type === 'Map' || type === 'WeakMap' || type === 'Set' || type === 'WeakSet');
62870}
62871
62872/**
62873 * @internal
62874 */
62875var RefFlag = "__v_isRef";
62876function isRef(r) {
62877    return !!(r && r.__v_isRef === true);
62878}
62879function ref$1(value) {
62880    return createRef(value, false);
62881}
62882function shallowRef(value) {
62883    return createRef(value, true);
62884}
62885function createRef(rawValue, shallow) {
62886    if (isRef(rawValue)) {
62887        return rawValue;
62888    }
62889    var ref = {};
62890    def(ref, RefFlag, true);
62891    def(ref, "__v_isShallow" /* ReactiveFlags.IS_SHALLOW */, shallow);
62892    def(ref, 'dep', defineReactive(ref, 'value', rawValue, null, shallow, isServerRendering()));
62893    return ref;
62894}
62895function triggerRef(ref) {
62896    if ( true && !ref.dep) {
62897        warn$2("received object is not a triggerable ref.");
62898    }
62899    if (true) {
62900        ref.dep &&
62901            ref.dep.notify({
62902                type: "set" /* TriggerOpTypes.SET */,
62903                target: ref,
62904                key: 'value'
62905            });
62906    }
62907    else {}
62908}
62909function unref(ref) {
62910    return isRef(ref) ? ref.value : ref;
62911}
62912function proxyRefs(objectWithRefs) {
62913    if (isReactive(objectWithRefs)) {
62914        return objectWithRefs;
62915    }
62916    var proxy = {};
62917    var keys = Object.keys(objectWithRefs);
62918    for (var i = 0; i < keys.length; i++) {
62919        proxyWithRefUnwrap(proxy, objectWithRefs, keys[i]);
62920    }
62921    return proxy;
62922}
62923function proxyWithRefUnwrap(target, source, key) {
62924    Object.defineProperty(target, key, {
62925        enumerable: true,
62926        configurable: true,
62927        get: function () {
62928            var val = source[key];
62929            if (isRef(val)) {
62930                return val.value;
62931            }
62932            else {
62933                var ob = val && val.__ob__;
62934                if (ob)
62935                    ob.dep.depend();
62936                return val;
62937            }
62938        },
62939        set: function (value) {
62940            var oldValue = source[key];
62941            if (isRef(oldValue) && !isRef(value)) {
62942                oldValue.value = value;
62943            }
62944            else {
62945                source[key] = value;
62946            }
62947        }
62948    });
62949}
62950function customRef(factory) {
62951    var dep = new Dep();
62952    var _a = factory(function () {
62953        if (true) {
62954            dep.depend({
62955                target: ref,
62956                type: "get" /* TrackOpTypes.GET */,
62957                key: 'value'
62958            });
62959        }
62960        else {}
62961    }, function () {
62962        if (true) {
62963            dep.notify({
62964                target: ref,
62965                type: "set" /* TriggerOpTypes.SET */,
62966                key: 'value'
62967            });
62968        }
62969        else {}
62970    }), get = _a.get, set = _a.set;
62971    var ref = {
62972        get value() {
62973            return get();
62974        },
62975        set value(newVal) {
62976            set(newVal);
62977        }
62978    };
62979    def(ref, RefFlag, true);
62980    return ref;
62981}
62982function toRefs(object) {
62983    if ( true && !isReactive(object)) {
62984        warn$2("toRefs() expects a reactive object but received a plain one.");
62985    }
62986    var ret = isArray(object) ? new Array(object.length) : {};
62987    for (var key in object) {
62988        ret[key] = toRef(object, key);
62989    }
62990    return ret;
62991}
62992function toRef(object, key, defaultValue) {
62993    var val = object[key];
62994    if (isRef(val)) {
62995        return val;
62996    }
62997    var ref = {
62998        get value() {
62999            var val = object[key];
63000            return val === undefined ? defaultValue : val;
63001        },
63002        set value(newVal) {
63003            object[key] = newVal;
63004        }
63005    };
63006    def(ref, RefFlag, true);
63007    return ref;
63008}
63009
63010var rawToReadonlyFlag = "__v_rawToReadonly";
63011var rawToShallowReadonlyFlag = "__v_rawToShallowReadonly";
63012function readonly(target) {
63013    return createReadonly(target, false);
63014}
63015function createReadonly(target, shallow) {
63016    if (!isPlainObject(target)) {
63017        if (true) {
63018            if (isArray(target)) {
63019                warn$2("Vue 2 does not support readonly arrays.");
63020            }
63021            else if (isCollectionType(target)) {
63022                warn$2("Vue 2 does not support readonly collection types such as Map or Set.");
63023            }
63024            else {
63025                warn$2("value cannot be made readonly: ".concat(typeof target));
63026            }
63027        }
63028        return target;
63029    }
63030    if ( true && !Object.isExtensible(target)) {
63031        warn$2("Vue 2 does not support creating readonly proxy for non-extensible object.");
63032    }
63033    // already a readonly object
63034    if (isReadonly(target)) {
63035        return target;
63036    }
63037    // already has a readonly proxy
63038    var existingFlag = shallow ? rawToShallowReadonlyFlag : rawToReadonlyFlag;
63039    var existingProxy = target[existingFlag];
63040    if (existingProxy) {
63041        return existingProxy;
63042    }
63043    var proxy = Object.create(Object.getPrototypeOf(target));
63044    def(target, existingFlag, proxy);
63045    def(proxy, "__v_isReadonly" /* ReactiveFlags.IS_READONLY */, true);
63046    def(proxy, "__v_raw" /* ReactiveFlags.RAW */, target);
63047    if (isRef(target)) {
63048        def(proxy, RefFlag, true);
63049    }
63050    if (shallow || isShallow(target)) {
63051        def(proxy, "__v_isShallow" /* ReactiveFlags.IS_SHALLOW */, true);
63052    }
63053    var keys = Object.keys(target);
63054    for (var i = 0; i < keys.length; i++) {
63055        defineReadonlyProperty(proxy, target, keys[i], shallow);
63056    }
63057    return proxy;
63058}
63059function defineReadonlyProperty(proxy, target, key, shallow) {
63060    Object.defineProperty(proxy, key, {
63061        enumerable: true,
63062        configurable: true,
63063        get: function () {
63064            var val = target[key];
63065            return shallow || !isPlainObject(val) ? val : readonly(val);
63066        },
63067        set: function () {
63068             true &&
63069                warn$2("Set operation on key \"".concat(key, "\" failed: target is readonly."));
63070        }
63071    });
63072}
63073/**
63074 * Returns a reactive-copy of the original object, where only the root level
63075 * properties are readonly, and does NOT unwrap refs nor recursively convert
63076 * returned properties.
63077 * This is used for creating the props proxy object for stateful components.
63078 */
63079function shallowReadonly(target) {
63080    return createReadonly(target, true);
63081}
63082
63083function computed(getterOrOptions, debugOptions) {
63084    var getter;
63085    var setter;
63086    var onlyGetter = isFunction(getterOrOptions);
63087    if (onlyGetter) {
63088        getter = getterOrOptions;
63089        setter =  true
63090            ? function () {
63091                warn$2('Write operation failed: computed value is readonly');
63092            }
63093            : 0;
63094    }
63095    else {
63096        getter = getterOrOptions.get;
63097        setter = getterOrOptions.set;
63098    }
63099    var watcher = isServerRendering()
63100        ? null
63101        : new Watcher(currentInstance, getter, noop, { lazy: true });
63102    if ( true && watcher && debugOptions) {
63103        watcher.onTrack = debugOptions.onTrack;
63104        watcher.onTrigger = debugOptions.onTrigger;
63105    }
63106    var ref = {
63107        // some libs rely on the presence effect for checking computed refs
63108        // from normal refs, but the implementation doesn't matter
63109        effect: watcher,
63110        get value() {
63111            if (watcher) {
63112                if (watcher.dirty) {
63113                    watcher.evaluate();
63114                }
63115                if (Dep.target) {
63116                    if ( true && Dep.target.onTrack) {
63117                        Dep.target.onTrack({
63118                            effect: Dep.target,
63119                            target: ref,
63120                            type: "get" /* TrackOpTypes.GET */,
63121                            key: 'value'
63122                        });
63123                    }
63124                    watcher.depend();
63125                }
63126                return watcher.value;
63127            }
63128            else {
63129                return getter();
63130            }
63131        },
63132        set value(newVal) {
63133            setter(newVal);
63134        }
63135    };
63136    def(ref, RefFlag, true);
63137    def(ref, "__v_isReadonly" /* ReactiveFlags.IS_READONLY */, onlyGetter);
63138    return ref;
63139}
63140
63141var mark;
63142var measure;
63143if (true) {
63144    var perf_1 = inBrowser && window.performance;
63145    /* istanbul ignore if */
63146    if (perf_1 &&
63147        // @ts-ignore
63148        perf_1.mark &&
63149        // @ts-ignore
63150        perf_1.measure &&
63151        // @ts-ignore
63152        perf_1.clearMarks &&
63153        // @ts-ignore
63154        perf_1.clearMeasures) {
63155        mark = function (tag) { return perf_1.mark(tag); };
63156        measure = function (name, startTag, endTag) {
63157            perf_1.measure(name, startTag, endTag);
63158            perf_1.clearMarks(startTag);
63159            perf_1.clearMarks(endTag);
63160            // perf.clearMeasures(name)
63161        };
63162    }
63163}
63164
63165var normalizeEvent = cached(function (name) {
63166    var passive = name.charAt(0) === '&';
63167    name = passive ? name.slice(1) : name;
63168    var once = name.charAt(0) === '~'; // Prefixed last, checked first
63169    name = once ? name.slice(1) : name;
63170    var capture = name.charAt(0) === '!';
63171    name = capture ? name.slice(1) : name;
63172    return {
63173        name: name,
63174        once: once,
63175        capture: capture,
63176        passive: passive
63177    };
63178});
63179function createFnInvoker(fns, vm) {
63180    function invoker() {
63181        var fns = invoker.fns;
63182        if (isArray(fns)) {
63183            var cloned = fns.slice();
63184            for (var i = 0; i < cloned.length; i++) {
63185                invokeWithErrorHandling(cloned[i], null, arguments, vm, "v-on handler");
63186            }
63187        }
63188        else {
63189            // return handler return value for single handlers
63190            return invokeWithErrorHandling(fns, null, arguments, vm, "v-on handler");
63191        }
63192    }
63193    invoker.fns = fns;
63194    return invoker;
63195}
63196function updateListeners(on, oldOn, add, remove, createOnceHandler, vm) {
63197    var name, cur, old, event;
63198    for (name in on) {
63199        cur = on[name];
63200        old = oldOn[name];
63201        event = normalizeEvent(name);
63202        if (isUndef(cur)) {
63203             true &&
63204                warn$2("Invalid handler for event \"".concat(event.name, "\": got ") + String(cur), vm);
63205        }
63206        else if (isUndef(old)) {
63207            if (isUndef(cur.fns)) {
63208                cur = on[name] = createFnInvoker(cur, vm);
63209            }
63210            if (isTrue(event.once)) {
63211                cur = on[name] = createOnceHandler(event.name, cur, event.capture);
63212            }
63213            add(event.name, cur, event.capture, event.passive, event.params);
63214        }
63215        else if (cur !== old) {
63216            old.fns = cur;
63217            on[name] = old;
63218        }
63219    }
63220    for (name in oldOn) {
63221        if (isUndef(on[name])) {
63222            event = normalizeEvent(name);
63223            remove(event.name, oldOn[name], event.capture);
63224        }
63225    }
63226}
63227
63228function mergeVNodeHook(def, hookKey, hook) {
63229    if (def instanceof VNode) {
63230        def = def.data.hook || (def.data.hook = {});
63231    }
63232    var invoker;
63233    var oldHook = def[hookKey];
63234    function wrappedHook() {
63235        hook.apply(this, arguments);
63236        // important: remove merged hook to ensure it's called only once
63237        // and prevent memory leak
63238        remove$2(invoker.fns, wrappedHook);
63239    }
63240    if (isUndef(oldHook)) {
63241        // no existing hook
63242        invoker = createFnInvoker([wrappedHook]);
63243    }
63244    else {
63245        /* istanbul ignore if */
63246        if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {
63247            // already a merged invoker
63248            invoker = oldHook;
63249            invoker.fns.push(wrappedHook);
63250        }
63251        else {
63252            // existing plain hook
63253            invoker = createFnInvoker([oldHook, wrappedHook]);
63254        }
63255    }
63256    invoker.merged = true;
63257    def[hookKey] = invoker;
63258}
63259
63260function extractPropsFromVNodeData(data, Ctor, tag) {
63261    // we are only extracting raw values here.
63262    // validation and default values are handled in the child
63263    // component itself.
63264    var propOptions = Ctor.options.props;
63265    if (isUndef(propOptions)) {
63266        return;
63267    }
63268    var res = {};
63269    var attrs = data.attrs, props = data.props;
63270    if (isDef(attrs) || isDef(props)) {
63271        for (var key in propOptions) {
63272            var altKey = hyphenate(key);
63273            if (true) {
63274                var keyInLowerCase = key.toLowerCase();
63275                if (key !== keyInLowerCase && attrs && hasOwn(attrs, keyInLowerCase)) {
63276                    tip("Prop \"".concat(keyInLowerCase, "\" is passed to component ") +
63277                        "".concat(formatComponentName(
63278                        // @ts-expect-error tag is string
63279                        tag || Ctor), ", but the declared prop name is") +
63280                        " \"".concat(key, "\". ") +
63281                        "Note that HTML attributes are case-insensitive and camelCased " +
63282                        "props need to use their kebab-case equivalents when using in-DOM " +
63283                        "templates. You should probably use \"".concat(altKey, "\" instead of \"").concat(key, "\"."));
63284                }
63285            }
63286            checkProp(res, props, key, altKey, true) ||
63287                checkProp(res, attrs, key, altKey, false);
63288        }
63289    }
63290    return res;
63291}
63292function checkProp(res, hash, key, altKey, preserve) {
63293    if (isDef(hash)) {
63294        if (hasOwn(hash, key)) {
63295            res[key] = hash[key];
63296            if (!preserve) {
63297                delete hash[key];
63298            }
63299            return true;
63300        }
63301        else if (hasOwn(hash, altKey)) {
63302            res[key] = hash[altKey];
63303            if (!preserve) {
63304                delete hash[altKey];
63305            }
63306            return true;
63307        }
63308    }
63309    return false;
63310}
63311
63312// The template compiler attempts to minimize the need for normalization by
63313// statically analyzing the template at compile time.
63314//
63315// For plain HTML markup, normalization can be completely skipped because the
63316// generated render function is guaranteed to return Array<VNode>. There are
63317// two cases where extra normalization is needed:
63318// 1. When the children contains components - because a functional component
63319// may return an Array instead of a single root. In this case, just a simple
63320// normalization is needed - if any child is an Array, we flatten the whole
63321// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep
63322// because functional components already normalize their own children.
63323function simpleNormalizeChildren(children) {
63324    for (var i = 0; i < children.length; i++) {
63325        if (isArray(children[i])) {
63326            return Array.prototype.concat.apply([], children);
63327        }
63328    }
63329    return children;
63330}
63331// 2. When the children contains constructs that always generated nested Arrays,
63332// e.g. <template>, <slot>, v-for, or when the children is provided by user
63333// with hand-written render functions / JSX. In such cases a full normalization
63334// is needed to cater to all possible types of children values.
63335function normalizeChildren(children) {
63336    return isPrimitive(children)
63337        ? [createTextVNode(children)]
63338        : isArray(children)
63339            ? normalizeArrayChildren(children)
63340            : undefined;
63341}
63342function isTextNode(node) {
63343    return isDef(node) && isDef(node.text) && isFalse(node.isComment);
63344}
63345function normalizeArrayChildren(children, nestedIndex) {
63346    var res = [];
63347    var i, c, lastIndex, last;
63348    for (i = 0; i < children.length; i++) {
63349        c = children[i];
63350        if (isUndef(c) || typeof c === 'boolean')
63351            continue;
63352        lastIndex = res.length - 1;
63353        last = res[lastIndex];
63354        //  nested
63355        if (isArray(c)) {
63356            if (c.length > 0) {
63357                c = normalizeArrayChildren(c, "".concat(nestedIndex || '', "_").concat(i));
63358                // merge adjacent text nodes
63359                if (isTextNode(c[0]) && isTextNode(last)) {
63360                    res[lastIndex] = createTextVNode(last.text + c[0].text);
63361                    c.shift();
63362                }
63363                res.push.apply(res, c);
63364            }
63365        }
63366        else if (isPrimitive(c)) {
63367            if (isTextNode(last)) {
63368                // merge adjacent text nodes
63369                // this is necessary for SSR hydration because text nodes are
63370                // essentially merged when rendered to HTML strings
63371                res[lastIndex] = createTextVNode(last.text + c);
63372            }
63373            else if (c !== '') {
63374                // convert primitive to vnode
63375                res.push(createTextVNode(c));
63376            }
63377        }
63378        else {
63379            if (isTextNode(c) && isTextNode(last)) {
63380                // merge adjacent text nodes
63381                res[lastIndex] = createTextVNode(last.text + c.text);
63382            }
63383            else {
63384                // default key for nested array children (likely generated by v-for)
63385                if (isTrue(children._isVList) &&
63386                    isDef(c.tag) &&
63387                    isUndef(c.key) &&
63388                    isDef(nestedIndex)) {
63389                    c.key = "__vlist".concat(nestedIndex, "_").concat(i, "__");
63390                }
63391                res.push(c);
63392            }
63393        }
63394    }
63395    return res;
63396}
63397
63398var SIMPLE_NORMALIZE = 1;
63399var ALWAYS_NORMALIZE = 2;
63400// wrapper function for providing a more flexible interface
63401// without getting yelled at by flow
63402function createElement$1(context, tag, data, children, normalizationType, alwaysNormalize) {
63403    if (isArray(data) || isPrimitive(data)) {
63404        normalizationType = children;
63405        children = data;
63406        data = undefined;
63407    }
63408    if (isTrue(alwaysNormalize)) {
63409        normalizationType = ALWAYS_NORMALIZE;
63410    }
63411    return _createElement(context, tag, data, children, normalizationType);
63412}
63413function _createElement(context, tag, data, children, normalizationType) {
63414    if (isDef(data) && isDef(data.__ob__)) {
63415         true &&
63416            warn$2("Avoid using observed data object as vnode data: ".concat(JSON.stringify(data), "\n") + 'Always create fresh vnode data objects in each render!', context);
63417        return createEmptyVNode();
63418    }
63419    // object syntax in v-bind
63420    if (isDef(data) && isDef(data.is)) {
63421        tag = data.is;
63422    }
63423    if (!tag) {
63424        // in case of component :is set to falsy value
63425        return createEmptyVNode();
63426    }
63427    // warn against non-primitive key
63428    if ( true && isDef(data) && isDef(data.key) && !isPrimitive(data.key)) {
63429        warn$2('Avoid using non-primitive value as key, ' +
63430            'use string/number value instead.', context);
63431    }
63432    // support single function children as default scoped slot
63433    if (isArray(children) && isFunction(children[0])) {
63434        data = data || {};
63435        data.scopedSlots = { default: children[0] };
63436        children.length = 0;
63437    }
63438    if (normalizationType === ALWAYS_NORMALIZE) {
63439        children = normalizeChildren(children);
63440    }
63441    else if (normalizationType === SIMPLE_NORMALIZE) {
63442        children = simpleNormalizeChildren(children);
63443    }
63444    var vnode, ns;
63445    if (typeof tag === 'string') {
63446        var Ctor = void 0;
63447        ns = (context.$vnode && context.$vnode.ns) || config.getTagNamespace(tag);
63448        if (config.isReservedTag(tag)) {
63449            // platform built-in elements
63450            if ( true &&
63451                isDef(data) &&
63452                isDef(data.nativeOn) &&
63453                data.tag !== 'component') {
63454                warn$2("The .native modifier for v-on is only valid on components but it was used on <".concat(tag, ">."), context);
63455            }
63456            vnode = new VNode(config.parsePlatformTagName(tag), data, children, undefined, undefined, context);
63457        }
63458        else if ((!data || !data.pre) &&
63459            isDef((Ctor = resolveAsset(context.$options, 'components', tag)))) {
63460            // component
63461            vnode = createComponent(Ctor, data, context, children, tag);
63462        }
63463        else {
63464            // unknown or unlisted namespaced elements
63465            // check at runtime because it may get assigned a namespace when its
63466            // parent normalizes children
63467            vnode = new VNode(tag, data, children, undefined, undefined, context);
63468        }
63469    }
63470    else {
63471        // direct component options / constructor
63472        vnode = createComponent(tag, data, context, children);
63473    }
63474    if (isArray(vnode)) {
63475        return vnode;
63476    }
63477    else if (isDef(vnode)) {
63478        if (isDef(ns))
63479            applyNS(vnode, ns);
63480        if (isDef(data))
63481            registerDeepBindings(data);
63482        return vnode;
63483    }
63484    else {
63485        return createEmptyVNode();
63486    }
63487}
63488function applyNS(vnode, ns, force) {
63489    vnode.ns = ns;
63490    if (vnode.tag === 'foreignObject') {
63491        // use default namespace inside foreignObject
63492        ns = undefined;
63493        force = true;
63494    }
63495    if (isDef(vnode.children)) {
63496        for (var i = 0, l = vnode.children.length; i < l; i++) {
63497            var child = vnode.children[i];
63498            if (isDef(child.tag) &&
63499                (isUndef(child.ns) || (isTrue(force) && child.tag !== 'svg'))) {
63500                applyNS(child, ns, force);
63501            }
63502        }
63503    }
63504}
63505// ref #5318
63506// necessary to ensure parent re-render when deep bindings like :style and
63507// :class are used on slot nodes
63508function registerDeepBindings(data) {
63509    if (isObject(data.style)) {
63510        traverse(data.style);
63511    }
63512    if (isObject(data.class)) {
63513        traverse(data.class);
63514    }
63515}
63516
63517/**
63518 * Runtime helper for rendering v-for lists.
63519 */
63520function renderList(val, render) {
63521    var ret = null, i, l, keys, key;
63522    if (isArray(val) || typeof val === 'string') {
63523        ret = new Array(val.length);
63524        for (i = 0, l = val.length; i < l; i++) {
63525            ret[i] = render(val[i], i);
63526        }
63527    }
63528    else if (typeof val === 'number') {
63529        ret = new Array(val);
63530        for (i = 0; i < val; i++) {
63531            ret[i] = render(i + 1, i);
63532        }
63533    }
63534    else if (isObject(val)) {
63535        if (hasSymbol && val[Symbol.iterator]) {
63536            ret = [];
63537            var iterator = val[Symbol.iterator]();
63538            var result = iterator.next();
63539            while (!result.done) {
63540                ret.push(render(result.value, ret.length));
63541                result = iterator.next();
63542            }
63543        }
63544        else {
63545            keys = Object.keys(val);
63546            ret = new Array(keys.length);
63547            for (i = 0, l = keys.length; i < l; i++) {
63548                key = keys[i];
63549                ret[i] = render(val[key], key, i);
63550            }
63551        }
63552    }
63553    if (!isDef(ret)) {
63554        ret = [];
63555    }
63556    ret._isVList = true;
63557    return ret;
63558}
63559
63560/**
63561 * Runtime helper for rendering <slot>
63562 */
63563function renderSlot(name, fallbackRender, props, bindObject) {
63564    var scopedSlotFn = this.$scopedSlots[name];
63565    var nodes;
63566    if (scopedSlotFn) {
63567        // scoped slot
63568        props = props || {};
63569        if (bindObject) {
63570            if ( true && !isObject(bindObject)) {
63571                warn$2('slot v-bind without argument expects an Object', this);
63572            }
63573            props = extend(extend({}, bindObject), props);
63574        }
63575        nodes =
63576            scopedSlotFn(props) ||
63577                (isFunction(fallbackRender) ? fallbackRender() : fallbackRender);
63578    }
63579    else {
63580        nodes =
63581            this.$slots[name] ||
63582                (isFunction(fallbackRender) ? fallbackRender() : fallbackRender);
63583    }
63584    var target = props && props.slot;
63585    if (target) {
63586        return this.$createElement('template', { slot: target }, nodes);
63587    }
63588    else {
63589        return nodes;
63590    }
63591}
63592
63593/**
63594 * Runtime helper for resolving filters
63595 */
63596function resolveFilter(id) {
63597    return resolveAsset(this.$options, 'filters', id, true) || identity;
63598}
63599
63600function isKeyNotMatch(expect, actual) {
63601    if (isArray(expect)) {
63602        return expect.indexOf(actual) === -1;
63603    }
63604    else {
63605        return expect !== actual;
63606    }
63607}
63608/**
63609 * Runtime helper for checking keyCodes from config.
63610 * exposed as Vue.prototype._k
63611 * passing in eventKeyName as last argument separately for backwards compat
63612 */
63613function checkKeyCodes(eventKeyCode, key, builtInKeyCode, eventKeyName, builtInKeyName) {
63614    var mappedKeyCode = config.keyCodes[key] || builtInKeyCode;
63615    if (builtInKeyName && eventKeyName && !config.keyCodes[key]) {
63616        return isKeyNotMatch(builtInKeyName, eventKeyName);
63617    }
63618    else if (mappedKeyCode) {
63619        return isKeyNotMatch(mappedKeyCode, eventKeyCode);
63620    }
63621    else if (eventKeyName) {
63622        return hyphenate(eventKeyName) !== key;
63623    }
63624    return eventKeyCode === undefined;
63625}
63626
63627/**
63628 * Runtime helper for merging v-bind="object" into a VNode's data.
63629 */
63630function bindObjectProps(data, tag, value, asProp, isSync) {
63631    if (value) {
63632        if (!isObject(value)) {
63633             true &&
63634                warn$2('v-bind without argument expects an Object or Array value', this);
63635        }
63636        else {
63637            if (isArray(value)) {
63638                value = toObject(value);
63639            }
63640            var hash = void 0;
63641            var _loop_1 = function (key) {
63642                if (key === 'class' || key === 'style' || isReservedAttribute(key)) {
63643                    hash = data;
63644                }
63645                else {
63646                    var type = data.attrs && data.attrs.type;
63647                    hash =
63648                        asProp || config.mustUseProp(tag, type, key)
63649                            ? data.domProps || (data.domProps = {})
63650                            : data.attrs || (data.attrs = {});
63651                }
63652                var camelizedKey = camelize(key);
63653                var hyphenatedKey = hyphenate(key);
63654                if (!(camelizedKey in hash) && !(hyphenatedKey in hash)) {
63655                    hash[key] = value[key];
63656                    if (isSync) {
63657                        var on = data.on || (data.on = {});
63658                        on["update:".concat(key)] = function ($event) {
63659                            value[key] = $event;
63660                        };
63661                    }
63662                }
63663            };
63664            for (var key in value) {
63665                _loop_1(key);
63666            }
63667        }
63668    }
63669    return data;
63670}
63671
63672/**
63673 * Runtime helper for rendering static trees.
63674 */
63675function renderStatic(index, isInFor) {
63676    var cached = this._staticTrees || (this._staticTrees = []);
63677    var tree = cached[index];
63678    // if has already-rendered static tree and not inside v-for,
63679    // we can reuse the same tree.
63680    if (tree && !isInFor) {
63681        return tree;
63682    }
63683    // otherwise, render a fresh tree.
63684    tree = cached[index] = this.$options.staticRenderFns[index].call(this._renderProxy, this._c, this // for render fns generated for functional component templates
63685    );
63686    markStatic$1(tree, "__static__".concat(index), false);
63687    return tree;
63688}
63689/**
63690 * Runtime helper for v-once.
63691 * Effectively it means marking the node as static with a unique key.
63692 */
63693function markOnce(tree, index, key) {
63694    markStatic$1(tree, "__once__".concat(index).concat(key ? "_".concat(key) : ""), true);
63695    return tree;
63696}
63697function markStatic$1(tree, key, isOnce) {
63698    if (isArray(tree)) {
63699        for (var i = 0; i < tree.length; i++) {
63700            if (tree[i] && typeof tree[i] !== 'string') {
63701                markStaticNode(tree[i], "".concat(key, "_").concat(i), isOnce);
63702            }
63703        }
63704    }
63705    else {
63706        markStaticNode(tree, key, isOnce);
63707    }
63708}
63709function markStaticNode(node, key, isOnce) {
63710    node.isStatic = true;
63711    node.key = key;
63712    node.isOnce = isOnce;
63713}
63714
63715function bindObjectListeners(data, value) {
63716    if (value) {
63717        if (!isPlainObject(value)) {
63718             true && warn$2('v-on without argument expects an Object value', this);
63719        }
63720        else {
63721            var on = (data.on = data.on ? extend({}, data.on) : {});
63722            for (var key in value) {
63723                var existing = on[key];
63724                var ours = value[key];
63725                on[key] = existing ? [].concat(existing, ours) : ours;
63726            }
63727        }
63728    }
63729    return data;
63730}
63731
63732function resolveScopedSlots(fns, res, 
63733// the following are added in 2.6
63734hasDynamicKeys, contentHashKey) {
63735    res = res || { $stable: !hasDynamicKeys };
63736    for (var i = 0; i < fns.length; i++) {
63737        var slot = fns[i];
63738        if (isArray(slot)) {
63739            resolveScopedSlots(slot, res, hasDynamicKeys);
63740        }
63741        else if (slot) {
63742            // marker for reverse proxying v-slot without scope on this.$slots
63743            // @ts-expect-error
63744            if (slot.proxy) {
63745                // @ts-expect-error
63746                slot.fn.proxy = true;
63747            }
63748            res[slot.key] = slot.fn;
63749        }
63750    }
63751    if (contentHashKey) {
63752        res.$key = contentHashKey;
63753    }
63754    return res;
63755}
63756
63757// helper to process dynamic keys for dynamic arguments in v-bind and v-on.
63758function bindDynamicKeys(baseObj, values) {
63759    for (var i = 0; i < values.length; i += 2) {
63760        var key = values[i];
63761        if (typeof key === 'string' && key) {
63762            baseObj[values[i]] = values[i + 1];
63763        }
63764        else if ( true && key !== '' && key !== null) {
63765            // null is a special value for explicitly removing a binding
63766            warn$2("Invalid value for dynamic directive argument (expected string or null): ".concat(key), this);
63767        }
63768    }
63769    return baseObj;
63770}
63771// helper to dynamically append modifier runtime markers to event names.
63772// ensure only append when value is already string, otherwise it will be cast
63773// to string and cause the type check to miss.
63774function prependModifier(value, symbol) {
63775    return typeof value === 'string' ? symbol + value : value;
63776}
63777
63778function installRenderHelpers(target) {
63779    target._o = markOnce;
63780    target._n = toNumber;
63781    target._s = toString;
63782    target._l = renderList;
63783    target._t = renderSlot;
63784    target._q = looseEqual;
63785    target._i = looseIndexOf;
63786    target._m = renderStatic;
63787    target._f = resolveFilter;
63788    target._k = checkKeyCodes;
63789    target._b = bindObjectProps;
63790    target._v = createTextVNode;
63791    target._e = createEmptyVNode;
63792    target._u = resolveScopedSlots;
63793    target._g = bindObjectListeners;
63794    target._d = bindDynamicKeys;
63795    target._p = prependModifier;
63796}
63797
63798/**
63799 * Runtime helper for resolving raw children VNodes into a slot object.
63800 */
63801function resolveSlots(children, context) {
63802    if (!children || !children.length) {
63803        return {};
63804    }
63805    var slots = {};
63806    for (var i = 0, l = children.length; i < l; i++) {
63807        var child = children[i];
63808        var data = child.data;
63809        // remove slot attribute if the node is resolved as a Vue slot node
63810        if (data && data.attrs && data.attrs.slot) {
63811            delete data.attrs.slot;
63812        }
63813        // named slots should only be respected if the vnode was rendered in the
63814        // same context.
63815        if ((child.context === context || child.fnContext === context) &&
63816            data &&
63817            data.slot != null) {
63818            var name_1 = data.slot;
63819            var slot = slots[name_1] || (slots[name_1] = []);
63820            if (child.tag === 'template') {
63821                slot.push.apply(slot, child.children || []);
63822            }
63823            else {
63824                slot.push(child);
63825            }
63826        }
63827        else {
63828            (slots.default || (slots.default = [])).push(child);
63829        }
63830    }
63831    // ignore slots that contains only whitespace
63832    for (var name_2 in slots) {
63833        if (slots[name_2].every(isWhitespace)) {
63834            delete slots[name_2];
63835        }
63836    }
63837    return slots;
63838}
63839function isWhitespace(node) {
63840    return (node.isComment && !node.asyncFactory) || node.text === ' ';
63841}
63842
63843function isAsyncPlaceholder(node) {
63844    // @ts-expect-error not really boolean type
63845    return node.isComment && node.asyncFactory;
63846}
63847
63848function normalizeScopedSlots(ownerVm, scopedSlots, normalSlots, prevScopedSlots) {
63849    var res;
63850    var hasNormalSlots = Object.keys(normalSlots).length > 0;
63851    var isStable = scopedSlots ? !!scopedSlots.$stable : !hasNormalSlots;
63852    var key = scopedSlots && scopedSlots.$key;
63853    if (!scopedSlots) {
63854        res = {};
63855    }
63856    else if (scopedSlots._normalized) {
63857        // fast path 1: child component re-render only, parent did not change
63858        return scopedSlots._normalized;
63859    }
63860    else if (isStable &&
63861        prevScopedSlots &&
63862        prevScopedSlots !== emptyObject &&
63863        key === prevScopedSlots.$key &&
63864        !hasNormalSlots &&
63865        !prevScopedSlots.$hasNormal) {
63866        // fast path 2: stable scoped slots w/ no normal slots to proxy,
63867        // only need to normalize once
63868        return prevScopedSlots;
63869    }
63870    else {
63871        res = {};
63872        for (var key_1 in scopedSlots) {
63873            if (scopedSlots[key_1] && key_1[0] !== '$') {
63874                res[key_1] = normalizeScopedSlot(ownerVm, normalSlots, key_1, scopedSlots[key_1]);
63875            }
63876        }
63877    }
63878    // expose normal slots on scopedSlots
63879    for (var key_2 in normalSlots) {
63880        if (!(key_2 in res)) {
63881            res[key_2] = proxyNormalSlot(normalSlots, key_2);
63882        }
63883    }
63884    // avoriaz seems to mock a non-extensible $scopedSlots object
63885    // and when that is passed down this would cause an error
63886    if (scopedSlots && Object.isExtensible(scopedSlots)) {
63887        scopedSlots._normalized = res;
63888    }
63889    def(res, '$stable', isStable);
63890    def(res, '$key', key);
63891    def(res, '$hasNormal', hasNormalSlots);
63892    return res;
63893}
63894function normalizeScopedSlot(vm, normalSlots, key, fn) {
63895    var normalized = function () {
63896        var cur = currentInstance;
63897        setCurrentInstance(vm);
63898        var res = arguments.length ? fn.apply(null, arguments) : fn({});
63899        res =
63900            res && typeof res === 'object' && !isArray(res)
63901                ? [res] // single vnode
63902                : normalizeChildren(res);
63903        var vnode = res && res[0];
63904        setCurrentInstance(cur);
63905        return res &&
63906            (!vnode ||
63907                (res.length === 1 && vnode.isComment && !isAsyncPlaceholder(vnode))) // #9658, #10391
63908            ? undefined
63909            : res;
63910    };
63911    // this is a slot using the new v-slot syntax without scope. although it is
63912    // compiled as a scoped slot, render fn users would expect it to be present
63913    // on this.$slots because the usage is semantically a normal slot.
63914    if (fn.proxy) {
63915        Object.defineProperty(normalSlots, key, {
63916            get: normalized,
63917            enumerable: true,
63918            configurable: true
63919        });
63920    }
63921    return normalized;
63922}
63923function proxyNormalSlot(slots, key) {
63924    return function () { return slots[key]; };
63925}
63926
63927function initSetup(vm) {
63928    var options = vm.$options;
63929    var setup = options.setup;
63930    if (setup) {
63931        var ctx = (vm._setupContext = createSetupContext(vm));
63932        setCurrentInstance(vm);
63933        pushTarget();
63934        var setupResult = invokeWithErrorHandling(setup, null, [vm._props || shallowReactive({}), ctx], vm, "setup");
63935        popTarget();
63936        setCurrentInstance();
63937        if (isFunction(setupResult)) {
63938            // render function
63939            // @ts-ignore
63940            options.render = setupResult;
63941        }
63942        else if (isObject(setupResult)) {
63943            // bindings
63944            if ( true && setupResult instanceof VNode) {
63945                warn$2("setup() should not return VNodes directly - " +
63946                    "return a render function instead.");
63947            }
63948            vm._setupState = setupResult;
63949            // __sfc indicates compiled bindings from <script setup>
63950            if (!setupResult.__sfc) {
63951                for (var key in setupResult) {
63952                    if (!isReserved(key)) {
63953                        proxyWithRefUnwrap(vm, setupResult, key);
63954                    }
63955                    else if (true) {
63956                        warn$2("Avoid using variables that start with _ or $ in setup().");
63957                    }
63958                }
63959            }
63960            else {
63961                // exposed for compiled render fn
63962                var proxy = (vm._setupProxy = {});
63963                for (var key in setupResult) {
63964                    if (key !== '__sfc') {
63965                        proxyWithRefUnwrap(proxy, setupResult, key);
63966                    }
63967                }
63968            }
63969        }
63970        else if ( true && setupResult !== undefined) {
63971            warn$2("setup() should return an object. Received: ".concat(setupResult === null ? 'null' : typeof setupResult));
63972        }
63973    }
63974}
63975function createSetupContext(vm) {
63976    var exposeCalled = false;
63977    return {
63978        get attrs() {
63979            if (!vm._attrsProxy) {
63980                var proxy = (vm._attrsProxy = {});
63981                def(proxy, '_v_attr_proxy', true);
63982                syncSetupProxy(proxy, vm.$attrs, emptyObject, vm, '$attrs');
63983            }
63984            return vm._attrsProxy;
63985        },
63986        get listeners() {
63987            if (!vm._listenersProxy) {
63988                var proxy = (vm._listenersProxy = {});
63989                syncSetupProxy(proxy, vm.$listeners, emptyObject, vm, '$listeners');
63990            }
63991            return vm._listenersProxy;
63992        },
63993        get slots() {
63994            return initSlotsProxy(vm);
63995        },
63996        emit: bind$1(vm.$emit, vm),
63997        expose: function (exposed) {
63998            if (true) {
63999                if (exposeCalled) {
64000                    warn$2("expose() should be called only once per setup().", vm);
64001                }
64002                exposeCalled = true;
64003            }
64004            if (exposed) {
64005                Object.keys(exposed).forEach(function (key) {
64006                    return proxyWithRefUnwrap(vm, exposed, key);
64007                });
64008            }
64009        }
64010    };
64011}
64012function syncSetupProxy(to, from, prev, instance, type) {
64013    var changed = false;
64014    for (var key in from) {
64015        if (!(key in to)) {
64016            changed = true;
64017            defineProxyAttr(to, key, instance, type);
64018        }
64019        else if (from[key] !== prev[key]) {
64020            changed = true;
64021        }
64022    }
64023    for (var key in to) {
64024        if (!(key in from)) {
64025            changed = true;
64026            delete to[key];
64027        }
64028    }
64029    return changed;
64030}
64031function defineProxyAttr(proxy, key, instance, type) {
64032    Object.defineProperty(proxy, key, {
64033        enumerable: true,
64034        configurable: true,
64035        get: function () {
64036            return instance[type][key];
64037        }
64038    });
64039}
64040function initSlotsProxy(vm) {
64041    if (!vm._slotsProxy) {
64042        syncSetupSlots((vm._slotsProxy = {}), vm.$scopedSlots);
64043    }
64044    return vm._slotsProxy;
64045}
64046function syncSetupSlots(to, from) {
64047    for (var key in from) {
64048        to[key] = from[key];
64049    }
64050    for (var key in to) {
64051        if (!(key in from)) {
64052            delete to[key];
64053        }
64054    }
64055}
64056/**
64057 * @internal use manual type def because public setup context type relies on
64058 * legacy VNode types
64059 */
64060function useSlots() {
64061    return getContext().slots;
64062}
64063/**
64064 * @internal use manual type def because public setup context type relies on
64065 * legacy VNode types
64066 */
64067function useAttrs() {
64068    return getContext().attrs;
64069}
64070/**
64071 * Vue 2 only
64072 * @internal use manual type def because public setup context type relies on
64073 * legacy VNode types
64074 */
64075function useListeners() {
64076    return getContext().listeners;
64077}
64078function getContext() {
64079    if ( true && !currentInstance) {
64080        warn$2("useContext() called without active instance.");
64081    }
64082    var vm = currentInstance;
64083    return vm._setupContext || (vm._setupContext = createSetupContext(vm));
64084}
64085/**
64086 * Runtime helper for merging default declarations. Imported by compiled code
64087 * only.
64088 * @internal
64089 */
64090function mergeDefaults(raw, defaults) {
64091    var props = isArray(raw)
64092        ? raw.reduce(function (normalized, p) { return ((normalized[p] = {}), normalized); }, {})
64093        : raw;
64094    for (var key in defaults) {
64095        var opt = props[key];
64096        if (opt) {
64097            if (isArray(opt) || isFunction(opt)) {
64098                props[key] = { type: opt, default: defaults[key] };
64099            }
64100            else {
64101                opt.default = defaults[key];
64102            }
64103        }
64104        else if (opt === null) {
64105            props[key] = { default: defaults[key] };
64106        }
64107        else if (true) {
64108            warn$2("props default key \"".concat(key, "\" has no corresponding declaration."));
64109        }
64110    }
64111    return props;
64112}
64113
64114function initRender(vm) {
64115    vm._vnode = null; // the root of the child tree
64116    vm._staticTrees = null; // v-once cached trees
64117    var options = vm.$options;
64118    var parentVnode = (vm.$vnode = options._parentVnode); // the placeholder node in parent tree
64119    var renderContext = parentVnode && parentVnode.context;
64120    vm.$slots = resolveSlots(options._renderChildren, renderContext);
64121    vm.$scopedSlots = parentVnode
64122        ? normalizeScopedSlots(vm.$parent, parentVnode.data.scopedSlots, vm.$slots)
64123        : emptyObject;
64124    // bind the createElement fn to this instance
64125    // so that we get proper render context inside it.
64126    // args order: tag, data, children, normalizationType, alwaysNormalize
64127    // internal version is used by render functions compiled from templates
64128    // @ts-expect-error
64129    vm._c = function (a, b, c, d) { return createElement$1(vm, a, b, c, d, false); };
64130    // normalization is always applied for the public version, used in
64131    // user-written render functions.
64132    // @ts-expect-error
64133    vm.$createElement = function (a, b, c, d) { return createElement$1(vm, a, b, c, d, true); };
64134    // $attrs & $listeners are exposed for easier HOC creation.
64135    // they need to be reactive so that HOCs using them are always updated
64136    var parentData = parentVnode && parentVnode.data;
64137    /* istanbul ignore else */
64138    if (true) {
64139        defineReactive(vm, '$attrs', (parentData && parentData.attrs) || emptyObject, function () {
64140            !isUpdatingChildComponent && warn$2("$attrs is readonly.", vm);
64141        }, true);
64142        defineReactive(vm, '$listeners', options._parentListeners || emptyObject, function () {
64143            !isUpdatingChildComponent && warn$2("$listeners is readonly.", vm);
64144        }, true);
64145    }
64146    else {}
64147}
64148var currentRenderingInstance = null;
64149function renderMixin(Vue) {
64150    // install runtime convenience helpers
64151    installRenderHelpers(Vue.prototype);
64152    Vue.prototype.$nextTick = function (fn) {
64153        return nextTick(fn, this);
64154    };
64155    Vue.prototype._render = function () {
64156        var vm = this;
64157        var _a = vm.$options, render = _a.render, _parentVnode = _a._parentVnode;
64158        if (_parentVnode && vm._isMounted) {
64159            vm.$scopedSlots = normalizeScopedSlots(vm.$parent, _parentVnode.data.scopedSlots, vm.$slots, vm.$scopedSlots);
64160            if (vm._slotsProxy) {
64161                syncSetupSlots(vm._slotsProxy, vm.$scopedSlots);
64162            }
64163        }
64164        // set parent vnode. this allows render functions to have access
64165        // to the data on the placeholder node.
64166        vm.$vnode = _parentVnode;
64167        // render self
64168        var prevInst = currentInstance;
64169        var prevRenderInst = currentRenderingInstance;
64170        var vnode;
64171        try {
64172            setCurrentInstance(vm);
64173            currentRenderingInstance = vm;
64174            vnode = render.call(vm._renderProxy, vm.$createElement);
64175        }
64176        catch (e) {
64177            handleError(e, vm, "render");
64178            // return error render result,
64179            // or previous vnode to prevent render error causing blank component
64180            /* istanbul ignore else */
64181            if ( true && vm.$options.renderError) {
64182                try {
64183                    vnode = vm.$options.renderError.call(vm._renderProxy, vm.$createElement, e);
64184                }
64185                catch (e) {
64186                    handleError(e, vm, "renderError");
64187                    vnode = vm._vnode;
64188                }
64189            }
64190            else {
64191                vnode = vm._vnode;
64192            }
64193        }
64194        finally {
64195            currentRenderingInstance = prevRenderInst;
64196            setCurrentInstance(prevInst);
64197        }
64198        // if the returned array contains only a single node, allow it
64199        if (isArray(vnode) && vnode.length === 1) {
64200            vnode = vnode[0];
64201        }
64202        // return empty vnode in case the render function errored out
64203        if (!(vnode instanceof VNode)) {
64204            if ( true && isArray(vnode)) {
64205                warn$2('Multiple root nodes returned from render function. Render function ' +
64206                    'should return a single root node.', vm);
64207            }
64208            vnode = createEmptyVNode();
64209        }
64210        // set parent
64211        vnode.parent = _parentVnode;
64212        return vnode;
64213    };
64214}
64215
64216function ensureCtor(comp, base) {
64217    if (comp.__esModule || (hasSymbol && comp[Symbol.toStringTag] === 'Module')) {
64218        comp = comp.default;
64219    }
64220    return isObject(comp) ? base.extend(comp) : comp;
64221}
64222function createAsyncPlaceholder(factory, data, context, children, tag) {
64223    var node = createEmptyVNode();
64224    node.asyncFactory = factory;
64225    node.asyncMeta = { data: data, context: context, children: children, tag: tag };
64226    return node;
64227}
64228function resolveAsyncComponent(factory, baseCtor) {
64229    if (isTrue(factory.error) && isDef(factory.errorComp)) {
64230        return factory.errorComp;
64231    }
64232    if (isDef(factory.resolved)) {
64233        return factory.resolved;
64234    }
64235    var owner = currentRenderingInstance;
64236    if (owner && isDef(factory.owners) && factory.owners.indexOf(owner) === -1) {
64237        // already pending
64238        factory.owners.push(owner);
64239    }
64240    if (isTrue(factory.loading) && isDef(factory.loadingComp)) {
64241        return factory.loadingComp;
64242    }
64243    if (owner && !isDef(factory.owners)) {
64244        var owners_1 = (factory.owners = [owner]);
64245        var sync_1 = true;
64246        var timerLoading_1 = null;
64247        var timerTimeout_1 = null;
64248        owner.$on('hook:destroyed', function () { return remove$2(owners_1, owner); });
64249        var forceRender_1 = function (renderCompleted) {
64250            for (var i = 0, l = owners_1.length; i < l; i++) {
64251                owners_1[i].$forceUpdate();
64252            }
64253            if (renderCompleted) {
64254                owners_1.length = 0;
64255                if (timerLoading_1 !== null) {
64256                    clearTimeout(timerLoading_1);
64257                    timerLoading_1 = null;
64258                }
64259                if (timerTimeout_1 !== null) {
64260                    clearTimeout(timerTimeout_1);
64261                    timerTimeout_1 = null;
64262                }
64263            }
64264        };
64265        var resolve = once(function (res) {
64266            // cache resolved
64267            factory.resolved = ensureCtor(res, baseCtor);
64268            // invoke callbacks only if this is not a synchronous resolve
64269            // (async resolves are shimmed as synchronous during SSR)
64270            if (!sync_1) {
64271                forceRender_1(true);
64272            }
64273            else {
64274                owners_1.length = 0;
64275            }
64276        });
64277        var reject_1 = once(function (reason) {
64278             true &&
64279                warn$2("Failed to resolve async component: ".concat(String(factory)) +
64280                    (reason ? "\nReason: ".concat(reason) : ''));
64281            if (isDef(factory.errorComp)) {
64282                factory.error = true;
64283                forceRender_1(true);
64284            }
64285        });
64286        var res_1 = factory(resolve, reject_1);
64287        if (isObject(res_1)) {
64288            if (isPromise(res_1)) {
64289                // () => Promise
64290                if (isUndef(factory.resolved)) {
64291                    res_1.then(resolve, reject_1);
64292                }
64293            }
64294            else if (isPromise(res_1.component)) {
64295                res_1.component.then(resolve, reject_1);
64296                if (isDef(res_1.error)) {
64297                    factory.errorComp = ensureCtor(res_1.error, baseCtor);
64298                }
64299                if (isDef(res_1.loading)) {
64300                    factory.loadingComp = ensureCtor(res_1.loading, baseCtor);
64301                    if (res_1.delay === 0) {
64302                        factory.loading = true;
64303                    }
64304                    else {
64305                        // @ts-expect-error NodeJS timeout type
64306                        timerLoading_1 = setTimeout(function () {
64307                            timerLoading_1 = null;
64308                            if (isUndef(factory.resolved) && isUndef(factory.error)) {
64309                                factory.loading = true;
64310                                forceRender_1(false);
64311                            }
64312                        }, res_1.delay || 200);
64313                    }
64314                }
64315                if (isDef(res_1.timeout)) {
64316                    // @ts-expect-error NodeJS timeout type
64317                    timerTimeout_1 = setTimeout(function () {
64318                        timerTimeout_1 = null;
64319                        if (isUndef(factory.resolved)) {
64320                            reject_1( true ? "timeout (".concat(res_1.timeout, "ms)") : 0);
64321                        }
64322                    }, res_1.timeout);
64323                }
64324            }
64325        }
64326        sync_1 = false;
64327        // return in case resolved synchronously
64328        return factory.loading ? factory.loadingComp : factory.resolved;
64329    }
64330}
64331
64332function getFirstComponentChild(children) {
64333    if (isArray(children)) {
64334        for (var i = 0; i < children.length; i++) {
64335            var c = children[i];
64336            if (isDef(c) && (isDef(c.componentOptions) || isAsyncPlaceholder(c))) {
64337                return c;
64338            }
64339        }
64340    }
64341}
64342
64343function initEvents(vm) {
64344    vm._events = Object.create(null);
64345    vm._hasHookEvent = false;
64346    // init parent attached events
64347    var listeners = vm.$options._parentListeners;
64348    if (listeners) {
64349        updateComponentListeners(vm, listeners);
64350    }
64351}
64352var target$1;
64353function add$1(event, fn) {
64354    target$1.$on(event, fn);
64355}
64356function remove$1(event, fn) {
64357    target$1.$off(event, fn);
64358}
64359function createOnceHandler$1(event, fn) {
64360    var _target = target$1;
64361    return function onceHandler() {
64362        var res = fn.apply(null, arguments);
64363        if (res !== null) {
64364            _target.$off(event, onceHandler);
64365        }
64366    };
64367}
64368function updateComponentListeners(vm, listeners, oldListeners) {
64369    target$1 = vm;
64370    updateListeners(listeners, oldListeners || {}, add$1, remove$1, createOnceHandler$1, vm);
64371    target$1 = undefined;
64372}
64373function eventsMixin(Vue) {
64374    var hookRE = /^hook:/;
64375    Vue.prototype.$on = function (event, fn) {
64376        var vm = this;
64377        if (isArray(event)) {
64378            for (var i = 0, l = event.length; i < l; i++) {
64379                vm.$on(event[i], fn);
64380            }
64381        }
64382        else {
64383            (vm._events[event] || (vm._events[event] = [])).push(fn);
64384            // optimize hook:event cost by using a boolean flag marked at registration
64385            // instead of a hash lookup
64386            if (hookRE.test(event)) {
64387                vm._hasHookEvent = true;
64388            }
64389        }
64390        return vm;
64391    };
64392    Vue.prototype.$once = function (event, fn) {
64393        var vm = this;
64394        function on() {
64395            vm.$off(event, on);
64396            fn.apply(vm, arguments);
64397        }
64398        on.fn = fn;
64399        vm.$on(event, on);
64400        return vm;
64401    };
64402    Vue.prototype.$off = function (event, fn) {
64403        var vm = this;
64404        // all
64405        if (!arguments.length) {
64406            vm._events = Object.create(null);
64407            return vm;
64408        }
64409        // array of events
64410        if (isArray(event)) {
64411            for (var i_1 = 0, l = event.length; i_1 < l; i_1++) {
64412                vm.$off(event[i_1], fn);
64413            }
64414            return vm;
64415        }
64416        // specific event
64417        var cbs = vm._events[event];
64418        if (!cbs) {
64419            return vm;
64420        }
64421        if (!fn) {
64422            vm._events[event] = null;
64423            return vm;
64424        }
64425        // specific handler
64426        var cb;
64427        var i = cbs.length;
64428        while (i--) {
64429            cb = cbs[i];
64430            if (cb === fn || cb.fn === fn) {
64431                cbs.splice(i, 1);
64432                break;
64433            }
64434        }
64435        return vm;
64436    };
64437    Vue.prototype.$emit = function (event) {
64438        var vm = this;
64439        if (true) {
64440            var lowerCaseEvent = event.toLowerCase();
64441            if (lowerCaseEvent !== event && vm._events[lowerCaseEvent]) {
64442                tip("Event \"".concat(lowerCaseEvent, "\" is emitted in component ") +
64443                    "".concat(formatComponentName(vm), " but the handler is registered for \"").concat(event, "\". ") +
64444                    "Note that HTML attributes are case-insensitive and you cannot use " +
64445                    "v-on to listen to camelCase events when using in-DOM templates. " +
64446                    "You should probably use \"".concat(hyphenate(event), "\" instead of \"").concat(event, "\"."));
64447            }
64448        }
64449        var cbs = vm._events[event];
64450        if (cbs) {
64451            cbs = cbs.length > 1 ? toArray(cbs) : cbs;
64452            var args = toArray(arguments, 1);
64453            var info = "event handler for \"".concat(event, "\"");
64454            for (var i = 0, l = cbs.length; i < l; i++) {
64455                invokeWithErrorHandling(cbs[i], vm, args, vm, info);
64456            }
64457        }
64458        return vm;
64459    };
64460}
64461
64462var activeEffectScope;
64463var EffectScope = /** @class */ (function () {
64464    function EffectScope(detached) {
64465        if (detached === void 0) { detached = false; }
64466        this.detached = detached;
64467        /**
64468         * @internal
64469         */
64470        this.active = true;
64471        /**
64472         * @internal
64473         */
64474        this.effects = [];
64475        /**
64476         * @internal
64477         */
64478        this.cleanups = [];
64479        this.parent = activeEffectScope;
64480        if (!detached && activeEffectScope) {
64481            this.index =
64482                (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(this) - 1;
64483        }
64484    }
64485    EffectScope.prototype.run = function (fn) {
64486        if (this.active) {
64487            var currentEffectScope = activeEffectScope;
64488            try {
64489                activeEffectScope = this;
64490                return fn();
64491            }
64492            finally {
64493                activeEffectScope = currentEffectScope;
64494            }
64495        }
64496        else if (true) {
64497            warn$2("cannot run an inactive effect scope.");
64498        }
64499    };
64500    /**
64501     * This should only be called on non-detached scopes
64502     * @internal
64503     */
64504    EffectScope.prototype.on = function () {
64505        activeEffectScope = this;
64506    };
64507    /**
64508     * This should only be called on non-detached scopes
64509     * @internal
64510     */
64511    EffectScope.prototype.off = function () {
64512        activeEffectScope = this.parent;
64513    };
64514    EffectScope.prototype.stop = function (fromParent) {
64515        if (this.active) {
64516            var i = void 0, l = void 0;
64517            for (i = 0, l = this.effects.length; i < l; i++) {
64518                this.effects[i].teardown();
64519            }
64520            for (i = 0, l = this.cleanups.length; i < l; i++) {
64521                this.cleanups[i]();
64522            }
64523            if (this.scopes) {
64524                for (i = 0, l = this.scopes.length; i < l; i++) {
64525                    this.scopes[i].stop(true);
64526                }
64527            }
64528            // nested scope, dereference from parent to avoid memory leaks
64529            if (!this.detached && this.parent && !fromParent) {
64530                // optimized O(1) removal
64531                var last = this.parent.scopes.pop();
64532                if (last && last !== this) {
64533                    this.parent.scopes[this.index] = last;
64534                    last.index = this.index;
64535                }
64536            }
64537            this.parent = undefined;
64538            this.active = false;
64539        }
64540    };
64541    return EffectScope;
64542}());
64543function effectScope(detached) {
64544    return new EffectScope(detached);
64545}
64546/**
64547 * @internal
64548 */
64549function recordEffectScope(effect, scope) {
64550    if (scope === void 0) { scope = activeEffectScope; }
64551    if (scope && scope.active) {
64552        scope.effects.push(effect);
64553    }
64554}
64555function getCurrentScope() {
64556    return activeEffectScope;
64557}
64558function onScopeDispose(fn) {
64559    if (activeEffectScope) {
64560        activeEffectScope.cleanups.push(fn);
64561    }
64562    else if (true) {
64563        warn$2("onScopeDispose() is called when there is no active effect scope" +
64564            " to be associated with.");
64565    }
64566}
64567
64568var activeInstance = null;
64569var isUpdatingChildComponent = false;
64570function setActiveInstance(vm) {
64571    var prevActiveInstance = activeInstance;
64572    activeInstance = vm;
64573    return function () {
64574        activeInstance = prevActiveInstance;
64575    };
64576}
64577function initLifecycle(vm) {
64578    var options = vm.$options;
64579    // locate first non-abstract parent
64580    var parent = options.parent;
64581    if (parent && !options.abstract) {
64582        while (parent.$options.abstract && parent.$parent) {
64583            parent = parent.$parent;
64584        }
64585        parent.$children.push(vm);
64586    }
64587    vm.$parent = parent;
64588    vm.$root = parent ? parent.$root : vm;
64589    vm.$children = [];
64590    vm.$refs = {};
64591    vm._provided = parent ? parent._provided : Object.create(null);
64592    vm._watcher = null;
64593    vm._inactive = null;
64594    vm._directInactive = false;
64595    vm._isMounted = false;
64596    vm._isDestroyed = false;
64597    vm._isBeingDestroyed = false;
64598}
64599function lifecycleMixin(Vue) {
64600    Vue.prototype._update = function (vnode, hydrating) {
64601        var vm = this;
64602        var prevEl = vm.$el;
64603        var prevVnode = vm._vnode;
64604        var restoreActiveInstance = setActiveInstance(vm);
64605        vm._vnode = vnode;
64606        // Vue.prototype.__patch__ is injected in entry points
64607        // based on the rendering backend used.
64608        if (!prevVnode) {
64609            // initial render
64610            vm.$el = vm.__patch__(vm.$el, vnode, hydrating, false /* removeOnly */);
64611        }
64612        else {
64613            // updates
64614            vm.$el = vm.__patch__(prevVnode, vnode);
64615        }
64616        restoreActiveInstance();
64617        // update __vue__ reference
64618        if (prevEl) {
64619            prevEl.__vue__ = null;
64620        }
64621        if (vm.$el) {
64622            vm.$el.__vue__ = vm;
64623        }
64624        // if parent is an HOC, update its $el as well
64625        var wrapper = vm;
64626        while (wrapper &&
64627            wrapper.$vnode &&
64628            wrapper.$parent &&
64629            wrapper.$vnode === wrapper.$parent._vnode) {
64630            wrapper.$parent.$el = wrapper.$el;
64631            wrapper = wrapper.$parent;
64632        }
64633        // updated hook is called by the scheduler to ensure that children are
64634        // updated in a parent's updated hook.
64635    };
64636    Vue.prototype.$forceUpdate = function () {
64637        var vm = this;
64638        if (vm._watcher) {
64639            vm._watcher.update();
64640        }
64641    };
64642    Vue.prototype.$destroy = function () {
64643        var vm = this;
64644        if (vm._isBeingDestroyed) {
64645            return;
64646        }
64647        callHook$1(vm, 'beforeDestroy');
64648        vm._isBeingDestroyed = true;
64649        // remove self from parent
64650        var parent = vm.$parent;
64651        if (parent && !parent._isBeingDestroyed && !vm.$options.abstract) {
64652            remove$2(parent.$children, vm);
64653        }
64654        // teardown scope. this includes both the render watcher and other
64655        // watchers created
64656        vm._scope.stop();
64657        // remove reference from data ob
64658        // frozen object may not have observer.
64659        if (vm._data.__ob__) {
64660            vm._data.__ob__.vmCount--;
64661        }
64662        // call the last hook...
64663        vm._isDestroyed = true;
64664        // invoke destroy hooks on current rendered tree
64665        vm.__patch__(vm._vnode, null);
64666        // fire destroyed hook
64667        callHook$1(vm, 'destroyed');
64668        // turn off all instance listeners.
64669        vm.$off();
64670        // remove __vue__ reference
64671        if (vm.$el) {
64672            vm.$el.__vue__ = null;
64673        }
64674        // release circular reference (#6759)
64675        if (vm.$vnode) {
64676            vm.$vnode.parent = null;
64677        }
64678    };
64679}
64680function mountComponent(vm, el, hydrating) {
64681    vm.$el = el;
64682    if (!vm.$options.render) {
64683        // @ts-expect-error invalid type
64684        vm.$options.render = createEmptyVNode;
64685        if (true) {
64686            /* istanbul ignore if */
64687            if ((vm.$options.template && vm.$options.template.charAt(0) !== '#') ||
64688                vm.$options.el ||
64689                el) {
64690                warn$2('You are using the runtime-only build of Vue where the template ' +
64691                    'compiler is not available. Either pre-compile the templates into ' +
64692                    'render functions, or use the compiler-included build.', vm);
64693            }
64694            else {
64695                warn$2('Failed to mount component: template or render function not defined.', vm);
64696            }
64697        }
64698    }
64699    callHook$1(vm, 'beforeMount');
64700    var updateComponent;
64701    /* istanbul ignore if */
64702    if ( true && config.performance && mark) {
64703        updateComponent = function () {
64704            var name = vm._name;
64705            var id = vm._uid;
64706            var startTag = "vue-perf-start:".concat(id);
64707            var endTag = "vue-perf-end:".concat(id);
64708            mark(startTag);
64709            var vnode = vm._render();
64710            mark(endTag);
64711            measure("vue ".concat(name, " render"), startTag, endTag);
64712            mark(startTag);
64713            vm._update(vnode, hydrating);
64714            mark(endTag);
64715            measure("vue ".concat(name, " patch"), startTag, endTag);
64716        };
64717    }
64718    else {
64719        updateComponent = function () {
64720            vm._update(vm._render(), hydrating);
64721        };
64722    }
64723    var watcherOptions = {
64724        before: function () {
64725            if (vm._isMounted && !vm._isDestroyed) {
64726                callHook$1(vm, 'beforeUpdate');
64727            }
64728        }
64729    };
64730    if (true) {
64731        watcherOptions.onTrack = function (e) { return callHook$1(vm, 'renderTracked', [e]); };
64732        watcherOptions.onTrigger = function (e) { return callHook$1(vm, 'renderTriggered', [e]); };
64733    }
64734    // we set this to vm._watcher inside the watcher's constructor
64735    // since the watcher's initial patch may call $forceUpdate (e.g. inside child
64736    // component's mounted hook), which relies on vm._watcher being already defined
64737    new Watcher(vm, updateComponent, noop, watcherOptions, true /* isRenderWatcher */);
64738    hydrating = false;
64739    // flush buffer for flush: "pre" watchers queued in setup()
64740    var preWatchers = vm._preWatchers;
64741    if (preWatchers) {
64742        for (var i = 0; i < preWatchers.length; i++) {
64743            preWatchers[i].run();
64744        }
64745    }
64746    // manually mounted instance, call mounted on self
64747    // mounted is called for render-created child components in its inserted hook
64748    if (vm.$vnode == null) {
64749        vm._isMounted = true;
64750        callHook$1(vm, 'mounted');
64751    }
64752    return vm;
64753}
64754function updateChildComponent(vm, propsData, listeners, parentVnode, renderChildren) {
64755    if (true) {
64756        isUpdatingChildComponent = true;
64757    }
64758    // determine whether component has slot children
64759    // we need to do this before overwriting $options._renderChildren.
64760    // check if there are dynamic scopedSlots (hand-written or compiled but with
64761    // dynamic slot names). Static scoped slots compiled from template has the
64762    // "$stable" marker.
64763    var newScopedSlots = parentVnode.data.scopedSlots;
64764    var oldScopedSlots = vm.$scopedSlots;
64765    var hasDynamicScopedSlot = !!((newScopedSlots && !newScopedSlots.$stable) ||
64766        (oldScopedSlots !== emptyObject && !oldScopedSlots.$stable) ||
64767        (newScopedSlots && vm.$scopedSlots.$key !== newScopedSlots.$key) ||
64768        (!newScopedSlots && vm.$scopedSlots.$key));
64769    // Any static slot children from the parent may have changed during parent's
64770    // update. Dynamic scoped slots may also have changed. In such cases, a forced
64771    // update is necessary to ensure correctness.
64772    var needsForceUpdate = !!(renderChildren || // has new static slots
64773        vm.$options._renderChildren || // has old static slots
64774        hasDynamicScopedSlot);
64775    var prevVNode = vm.$vnode;
64776    vm.$options._parentVnode = parentVnode;
64777    vm.$vnode = parentVnode; // update vm's placeholder node without re-render
64778    if (vm._vnode) {
64779        // update child tree's parent
64780        vm._vnode.parent = parentVnode;
64781    }
64782    vm.$options._renderChildren = renderChildren;
64783    // update $attrs and $listeners hash
64784    // these are also reactive so they may trigger child update if the child
64785    // used them during render
64786    var attrs = parentVnode.data.attrs || emptyObject;
64787    if (vm._attrsProxy) {
64788        // force update if attrs are accessed and has changed since it may be
64789        // passed to a child component.
64790        if (syncSetupProxy(vm._attrsProxy, attrs, (prevVNode.data && prevVNode.data.attrs) || emptyObject, vm, '$attrs')) {
64791            needsForceUpdate = true;
64792        }
64793    }
64794    vm.$attrs = attrs;
64795    // update listeners
64796    listeners = listeners || emptyObject;
64797    var prevListeners = vm.$options._parentListeners;
64798    if (vm._listenersProxy) {
64799        syncSetupProxy(vm._listenersProxy, listeners, prevListeners || emptyObject, vm, '$listeners');
64800    }
64801    vm.$listeners = vm.$options._parentListeners = listeners;
64802    updateComponentListeners(vm, listeners, prevListeners);
64803    // update props
64804    if (propsData && vm.$options.props) {
64805        toggleObserving(false);
64806        var props = vm._props;
64807        var propKeys = vm.$options._propKeys || [];
64808        for (var i = 0; i < propKeys.length; i++) {
64809            var key = propKeys[i];
64810            var propOptions = vm.$options.props; // wtf flow?
64811            props[key] = validateProp(key, propOptions, propsData, vm);
64812        }
64813        toggleObserving(true);
64814        // keep a copy of raw propsData
64815        vm.$options.propsData = propsData;
64816    }
64817    // resolve slots + force update if has children
64818    if (needsForceUpdate) {
64819        vm.$slots = resolveSlots(renderChildren, parentVnode.context);
64820        vm.$forceUpdate();
64821    }
64822    if (true) {
64823        isUpdatingChildComponent = false;
64824    }
64825}
64826function isInInactiveTree(vm) {
64827    while (vm && (vm = vm.$parent)) {
64828        if (vm._inactive)
64829            return true;
64830    }
64831    return false;
64832}
64833function activateChildComponent(vm, direct) {
64834    if (direct) {
64835        vm._directInactive = false;
64836        if (isInInactiveTree(vm)) {
64837            return;
64838        }
64839    }
64840    else if (vm._directInactive) {
64841        return;
64842    }
64843    if (vm._inactive || vm._inactive === null) {
64844        vm._inactive = false;
64845        for (var i = 0; i < vm.$children.length; i++) {
64846            activateChildComponent(vm.$children[i]);
64847        }
64848        callHook$1(vm, 'activated');
64849    }
64850}
64851function deactivateChildComponent(vm, direct) {
64852    if (direct) {
64853        vm._directInactive = true;
64854        if (isInInactiveTree(vm)) {
64855            return;
64856        }
64857    }
64858    if (!vm._inactive) {
64859        vm._inactive = true;
64860        for (var i = 0; i < vm.$children.length; i++) {
64861            deactivateChildComponent(vm.$children[i]);
64862        }
64863        callHook$1(vm, 'deactivated');
64864    }
64865}
64866function callHook$1(vm, hook, args, setContext) {
64867    if (setContext === void 0) { setContext = true; }
64868    // #7573 disable dep collection when invoking lifecycle hooks
64869    pushTarget();
64870    var prevInst = currentInstance;
64871    var prevScope = getCurrentScope();
64872    setContext && setCurrentInstance(vm);
64873    var handlers = vm.$options[hook];
64874    var info = "".concat(hook, " hook");
64875    if (handlers) {
64876        for (var i = 0, j = handlers.length; i < j; i++) {
64877            invokeWithErrorHandling(handlers[i], vm, args || null, vm, info);
64878        }
64879    }
64880    if (vm._hasHookEvent) {
64881        vm.$emit('hook:' + hook);
64882    }
64883    if (setContext) {
64884        setCurrentInstance(prevInst);
64885        prevScope && prevScope.on();
64886    }
64887    popTarget();
64888}
64889
64890var MAX_UPDATE_COUNT = 100;
64891var queue = [];
64892var activatedChildren = [];
64893var has = {};
64894var circular = {};
64895var waiting = false;
64896var flushing = false;
64897var index$1 = 0;
64898/**
64899 * Reset the scheduler's state.
64900 */
64901function resetSchedulerState() {
64902    index$1 = queue.length = activatedChildren.length = 0;
64903    has = {};
64904    if (true) {
64905        circular = {};
64906    }
64907    waiting = flushing = false;
64908}
64909// Async edge case #6566 requires saving the timestamp when event listeners are
64910// attached. However, calling performance.now() has a perf overhead especially
64911// if the page has thousands of event listeners. Instead, we take a timestamp
64912// every time the scheduler flushes and use that for all event listeners
64913// attached during that flush.
64914var currentFlushTimestamp = 0;
64915// Async edge case fix requires storing an event listener's attach timestamp.
64916var getNow = Date.now;
64917// Determine what event timestamp the browser is using. Annoyingly, the
64918// timestamp can either be hi-res (relative to page load) or low-res
64919// (relative to UNIX epoch), so in order to compare time we have to use the
64920// same timestamp type when saving the flush timestamp.
64921// All IE versions use low-res event timestamps, and have problematic clock
64922// implementations (#9632)
64923if (inBrowser && !isIE) {
64924    var performance_1 = window.performance;
64925    if (performance_1 &&
64926        typeof performance_1.now === 'function' &&
64927        getNow() > document.createEvent('Event').timeStamp) {
64928        // if the event timestamp, although evaluated AFTER the Date.now(), is
64929        // smaller than it, it means the event is using a hi-res timestamp,
64930        // and we need to use the hi-res version for event listener timestamps as
64931        // well.
64932        getNow = function () { return performance_1.now(); };
64933    }
64934}
64935var sortCompareFn = function (a, b) {
64936    if (a.post) {
64937        if (!b.post)
64938            return 1;
64939    }
64940    else if (b.post) {
64941        return -1;
64942    }
64943    return a.id - b.id;
64944};
64945/**
64946 * Flush both queues and run the watchers.
64947 */
64948function flushSchedulerQueue() {
64949    currentFlushTimestamp = getNow();
64950    flushing = true;
64951    var watcher, id;
64952    // Sort queue before flush.
64953    // This ensures that:
64954    // 1. Components are updated from parent to child. (because parent is always
64955    //    created before the child)
64956    // 2. A component's user watchers are run before its render watcher (because
64957    //    user watchers are created before the render watcher)
64958    // 3. If a component is destroyed during a parent component's watcher run,
64959    //    its watchers can be skipped.
64960    queue.sort(sortCompareFn);
64961    // do not cache length because more watchers might be pushed
64962    // as we run existing watchers
64963    for (index$1 = 0; index$1 < queue.length; index$1++) {
64964        watcher = queue[index$1];
64965        if (watcher.before) {
64966            watcher.before();
64967        }
64968        id = watcher.id;
64969        has[id] = null;
64970        watcher.run();
64971        // in dev build, check and stop circular updates.
64972        if ( true && has[id] != null) {
64973            circular[id] = (circular[id] || 0) + 1;
64974            if (circular[id] > MAX_UPDATE_COUNT) {
64975                warn$2('You may have an infinite update loop ' +
64976                    (watcher.user
64977                        ? "in watcher with expression \"".concat(watcher.expression, "\"")
64978                        : "in a component render function."), watcher.vm);
64979                break;
64980            }
64981        }
64982    }
64983    // keep copies of post queues before resetting state
64984    var activatedQueue = activatedChildren.slice();
64985    var updatedQueue = queue.slice();
64986    resetSchedulerState();
64987    // call component updated and activated hooks
64988    callActivatedHooks(activatedQueue);
64989    callUpdatedHooks(updatedQueue);
64990    cleanupDeps();
64991    // devtool hook
64992    /* istanbul ignore if */
64993    if (devtools && config.devtools) {
64994        devtools.emit('flush');
64995    }
64996}
64997function callUpdatedHooks(queue) {
64998    var i = queue.length;
64999    while (i--) {
65000        var watcher = queue[i];
65001        var vm = watcher.vm;
65002        if (vm && vm._watcher === watcher && vm._isMounted && !vm._isDestroyed) {
65003            callHook$1(vm, 'updated');
65004        }
65005    }
65006}
65007/**
65008 * Queue a kept-alive component that was activated during patch.
65009 * The queue will be processed after the entire tree has been patched.
65010 */
65011function queueActivatedComponent(vm) {
65012    // setting _inactive to false here so that a render function can
65013    // rely on checking whether it's in an inactive tree (e.g. router-view)
65014    vm._inactive = false;
65015    activatedChildren.push(vm);
65016}
65017function callActivatedHooks(queue) {
65018    for (var i = 0; i < queue.length; i++) {
65019        queue[i]._inactive = true;
65020        activateChildComponent(queue[i], true /* true */);
65021    }
65022}
65023/**
65024 * Push a watcher into the watcher queue.
65025 * Jobs with duplicate IDs will be skipped unless it's
65026 * pushed when the queue is being flushed.
65027 */
65028function queueWatcher(watcher) {
65029    var id = watcher.id;
65030    if (has[id] != null) {
65031        return;
65032    }
65033    if (watcher === Dep.target && watcher.noRecurse) {
65034        return;
65035    }
65036    has[id] = true;
65037    if (!flushing) {
65038        queue.push(watcher);
65039    }
65040    else {
65041        // if already flushing, splice the watcher based on its id
65042        // if already past its id, it will be run next immediately.
65043        var i = queue.length - 1;
65044        while (i > index$1 && queue[i].id > watcher.id) {
65045            i--;
65046        }
65047        queue.splice(i + 1, 0, watcher);
65048    }
65049    // queue the flush
65050    if (!waiting) {
65051        waiting = true;
65052        if ( true && !config.async) {
65053            flushSchedulerQueue();
65054            return;
65055        }
65056        nextTick(flushSchedulerQueue);
65057    }
65058}
65059
65060var WATCHER = "watcher";
65061var WATCHER_CB = "".concat(WATCHER, " callback");
65062var WATCHER_GETTER = "".concat(WATCHER, " getter");
65063var WATCHER_CLEANUP = "".concat(WATCHER, " cleanup");
65064// Simple effect.
65065function watchEffect(effect, options) {
65066    return doWatch(effect, null, options);
65067}
65068function watchPostEffect(effect, options) {
65069    return doWatch(effect, null, ( true
65070        ? __assign(__assign({}, options), { flush: 'post' }) : 0));
65071}
65072function watchSyncEffect(effect, options) {
65073    return doWatch(effect, null, ( true
65074        ? __assign(__assign({}, options), { flush: 'sync' }) : 0));
65075}
65076// initial value for watchers to trigger on undefined initial values
65077var INITIAL_WATCHER_VALUE = {};
65078// implementation
65079function watch(source, cb, options) {
65080    if ( true && typeof cb !== 'function') {
65081        warn$2("`watch(fn, options?)` signature has been moved to a separate API. " +
65082            "Use `watchEffect(fn, options?)` instead. `watch` now only " +
65083            "supports `watch(source, cb, options?) signature.");
65084    }
65085    return doWatch(source, cb, options);
65086}
65087function doWatch(source, cb, _a) {
65088    var _b = _a === void 0 ? emptyObject : _a, immediate = _b.immediate, deep = _b.deep, _c = _b.flush, flush = _c === void 0 ? 'pre' : _c, onTrack = _b.onTrack, onTrigger = _b.onTrigger;
65089    if ( true && !cb) {
65090        if (immediate !== undefined) {
65091            warn$2("watch() \"immediate\" option is only respected when using the " +
65092                "watch(source, callback, options?) signature.");
65093        }
65094        if (deep !== undefined) {
65095            warn$2("watch() \"deep\" option is only respected when using the " +
65096                "watch(source, callback, options?) signature.");
65097        }
65098    }
65099    var warnInvalidSource = function (s) {
65100        warn$2("Invalid watch source: ".concat(s, ". A watch source can only be a getter/effect ") +
65101            "function, a ref, a reactive object, or an array of these types.");
65102    };
65103    var instance = currentInstance;
65104    var call = function (fn, type, args) {
65105        if (args === void 0) { args = null; }
65106        var res = invokeWithErrorHandling(fn, null, args, instance, type);
65107        if (deep && res && res.__ob__)
65108            res.__ob__.dep.depend();
65109        return res;
65110    };
65111    var getter;
65112    var forceTrigger = false;
65113    var isMultiSource = false;
65114    if (isRef(source)) {
65115        getter = function () { return source.value; };
65116        forceTrigger = isShallow(source);
65117    }
65118    else if (isReactive(source)) {
65119        getter = function () {
65120            source.__ob__.dep.depend();
65121            return source;
65122        };
65123        deep = true;
65124    }
65125    else if (isArray(source)) {
65126        isMultiSource = true;
65127        forceTrigger = source.some(function (s) { return isReactive(s) || isShallow(s); });
65128        getter = function () {
65129            return source.map(function (s) {
65130                if (isRef(s)) {
65131                    return s.value;
65132                }
65133                else if (isReactive(s)) {
65134                    s.__ob__.dep.depend();
65135                    return traverse(s);
65136                }
65137                else if (isFunction(s)) {
65138                    return call(s, WATCHER_GETTER);
65139                }
65140                else {
65141                     true && warnInvalidSource(s);
65142                }
65143            });
65144        };
65145    }
65146    else if (isFunction(source)) {
65147        if (cb) {
65148            // getter with cb
65149            getter = function () { return call(source, WATCHER_GETTER); };
65150        }
65151        else {
65152            // no cb -> simple effect
65153            getter = function () {
65154                if (instance && instance._isDestroyed) {
65155                    return;
65156                }
65157                if (cleanup) {
65158                    cleanup();
65159                }
65160                return call(source, WATCHER, [onCleanup]);
65161            };
65162        }
65163    }
65164    else {
65165        getter = noop;
65166         true && warnInvalidSource(source);
65167    }
65168    if (cb && deep) {
65169        var baseGetter_1 = getter;
65170        getter = function () { return traverse(baseGetter_1()); };
65171    }
65172    var cleanup;
65173    var onCleanup = function (fn) {
65174        cleanup = watcher.onStop = function () {
65175            call(fn, WATCHER_CLEANUP);
65176        };
65177    };
65178    // in SSR there is no need to setup an actual effect, and it should be noop
65179    // unless it's eager
65180    if (isServerRendering()) {
65181        // we will also not call the invalidate callback (+ runner is not set up)
65182        onCleanup = noop;
65183        if (!cb) {
65184            getter();
65185        }
65186        else if (immediate) {
65187            call(cb, WATCHER_CB, [
65188                getter(),
65189                isMultiSource ? [] : undefined,
65190                onCleanup
65191            ]);
65192        }
65193        return noop;
65194    }
65195    var watcher = new Watcher(currentInstance, getter, noop, {
65196        lazy: true
65197    });
65198    watcher.noRecurse = !cb;
65199    var oldValue = isMultiSource ? [] : INITIAL_WATCHER_VALUE;
65200    // overwrite default run
65201    watcher.run = function () {
65202        if (!watcher.active) {
65203            return;
65204        }
65205        if (cb) {
65206            // watch(source, cb)
65207            var newValue = watcher.get();
65208            if (deep ||
65209                forceTrigger ||
65210                (isMultiSource
65211                    ? newValue.some(function (v, i) {
65212                        return hasChanged(v, oldValue[i]);
65213                    })
65214                    : hasChanged(newValue, oldValue))) {
65215                // cleanup before running cb again
65216                if (cleanup) {
65217                    cleanup();
65218                }
65219                call(cb, WATCHER_CB, [
65220                    newValue,
65221                    // pass undefined as the old value when it's changed for the first time
65222                    oldValue === INITIAL_WATCHER_VALUE ? undefined : oldValue,
65223                    onCleanup
65224                ]);
65225                oldValue = newValue;
65226            }
65227        }
65228        else {
65229            // watchEffect
65230            watcher.get();
65231        }
65232    };
65233    if (flush === 'sync') {
65234        watcher.update = watcher.run;
65235    }
65236    else if (flush === 'post') {
65237        watcher.post = true;
65238        watcher.update = function () { return queueWatcher(watcher); };
65239    }
65240    else {
65241        // pre
65242        watcher.update = function () {
65243            if (instance && instance === currentInstance && !instance._isMounted) {
65244                // pre-watcher triggered before
65245                var buffer = instance._preWatchers || (instance._preWatchers = []);
65246                if (buffer.indexOf(watcher) < 0)
65247                    buffer.push(watcher);
65248            }
65249            else {
65250                queueWatcher(watcher);
65251            }
65252        };
65253    }
65254    if (true) {
65255        watcher.onTrack = onTrack;
65256        watcher.onTrigger = onTrigger;
65257    }
65258    // initial run
65259    if (cb) {
65260        if (immediate) {
65261            watcher.run();
65262        }
65263        else {
65264            oldValue = watcher.get();
65265        }
65266    }
65267    else if (flush === 'post' && instance) {
65268        instance.$once('hook:mounted', function () { return watcher.get(); });
65269    }
65270    else {
65271        watcher.get();
65272    }
65273    return function () {
65274        watcher.teardown();
65275    };
65276}
65277
65278function provide(key, value) {
65279    if (!currentInstance) {
65280        if (true) {
65281            warn$2("provide() can only be used inside setup().");
65282        }
65283    }
65284    else {
65285        // TS doesn't allow symbol as index type
65286        resolveProvided(currentInstance)[key] = value;
65287    }
65288}
65289function resolveProvided(vm) {
65290    // by default an instance inherits its parent's provides object
65291    // but when it needs to provide values of its own, it creates its
65292    // own provides object using parent provides object as prototype.
65293    // this way in `inject` we can simply look up injections from direct
65294    // parent and let the prototype chain do the work.
65295    var existing = vm._provided;
65296    var parentProvides = vm.$parent && vm.$parent._provided;
65297    if (parentProvides === existing) {
65298        return (vm._provided = Object.create(parentProvides));
65299    }
65300    else {
65301        return existing;
65302    }
65303}
65304function inject(key, defaultValue, treatDefaultAsFactory) {
65305    if (treatDefaultAsFactory === void 0) { treatDefaultAsFactory = false; }
65306    // fallback to `currentRenderingInstance` so that this can be called in
65307    // a functional component
65308    var instance = currentInstance;
65309    if (instance) {
65310        // #2400
65311        // to support `app.use` plugins,
65312        // fallback to appContext's `provides` if the instance is at root
65313        var provides = instance.$parent && instance.$parent._provided;
65314        if (provides && key in provides) {
65315            // TS doesn't allow symbol as index type
65316            return provides[key];
65317        }
65318        else if (arguments.length > 1) {
65319            return treatDefaultAsFactory && isFunction(defaultValue)
65320                ? defaultValue.call(instance)
65321                : defaultValue;
65322        }
65323        else if (true) {
65324            warn$2("injection \"".concat(String(key), "\" not found."));
65325        }
65326    }
65327    else if (true) {
65328        warn$2("inject() can only be used inside setup() or functional components.");
65329    }
65330}
65331
65332/**
65333 * @internal this function needs manual public type declaration because it relies
65334 * on previously manually authored types from Vue 2
65335 */
65336function h(type, props, children) {
65337    if (!currentInstance) {
65338         true &&
65339            warn$2("globally imported h() can only be invoked when there is an active " +
65340                "component instance, e.g. synchronously in a component's render or setup function.");
65341    }
65342    return createElement$1(currentInstance, type, props, children, 2, true);
65343}
65344
65345function handleError(err, vm, info) {
65346    // Deactivate deps tracking while processing error handler to avoid possible infinite rendering.
65347    // See: https://github.com/vuejs/vuex/issues/1505
65348    pushTarget();
65349    try {
65350        if (vm) {
65351            var cur = vm;
65352            while ((cur = cur.$parent)) {
65353                var hooks = cur.$options.errorCaptured;
65354                if (hooks) {
65355                    for (var i = 0; i < hooks.length; i++) {
65356                        try {
65357                            var capture = hooks[i].call(cur, err, vm, info) === false;
65358                            if (capture)
65359                                return;
65360                        }
65361                        catch (e) {
65362                            globalHandleError(e, cur, 'errorCaptured hook');
65363                        }
65364                    }
65365                }
65366            }
65367        }
65368        globalHandleError(err, vm, info);
65369    }
65370    finally {
65371        popTarget();
65372    }
65373}
65374function invokeWithErrorHandling(handler, context, args, vm, info) {
65375    var res;
65376    try {
65377        res = args ? handler.apply(context, args) : handler.call(context);
65378        if (res && !res._isVue && isPromise(res) && !res._handled) {
65379            res.catch(function (e) { return handleError(e, vm, info + " (Promise/async)"); });
65380            res._handled = true;
65381        }
65382    }
65383    catch (e) {
65384        handleError(e, vm, info);
65385    }
65386    return res;
65387}
65388function globalHandleError(err, vm, info) {
65389    if (config.errorHandler) {
65390        try {
65391            return config.errorHandler.call(null, err, vm, info);
65392        }
65393        catch (e) {
65394            // if the user intentionally throws the original error in the handler,
65395            // do not log it twice
65396            if (e !== err) {
65397                logError(e, null, 'config.errorHandler');
65398            }
65399        }
65400    }
65401    logError(err, vm, info);
65402}
65403function logError(err, vm, info) {
65404    if (true) {
65405        warn$2("Error in ".concat(info, ": \"").concat(err.toString(), "\""), vm);
65406    }
65407    /* istanbul ignore else */
65408    if (inBrowser && typeof console !== 'undefined') {
65409        console.error(err);
65410    }
65411    else {
65412        throw err;
65413    }
65414}
65415
65416/* globals MutationObserver */
65417var isUsingMicroTask = false;
65418var callbacks = [];
65419var pending = false;
65420function flushCallbacks() {
65421    pending = false;
65422    var copies = callbacks.slice(0);
65423    callbacks.length = 0;
65424    for (var i = 0; i < copies.length; i++) {
65425        copies[i]();
65426    }
65427}
65428// Here we have async deferring wrappers using microtasks.
65429// In 2.5 we used (macro) tasks (in combination with microtasks).
65430// However, it has subtle problems when state is changed right before repaint
65431// (e.g. #6813, out-in transitions).
65432// Also, using (macro) tasks in event handler would cause some weird behaviors
65433// that cannot be circumvented (e.g. #7109, #7153, #7546, #7834, #8109).
65434// So we now use microtasks everywhere, again.
65435// A major drawback of this tradeoff is that there are some scenarios
65436// where microtasks have too high a priority and fire in between supposedly
65437// sequential events (e.g. #4521, #6690, which have workarounds)
65438// or even between bubbling of the same event (#6566).
65439var timerFunc;
65440// The nextTick behavior leverages the microtask queue, which can be accessed
65441// via either native Promise.then or MutationObserver.
65442// MutationObserver has wider support, however it is seriously bugged in
65443// UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It
65444// completely stops working after triggering a few times... so, if native
65445// Promise is available, we will use it:
65446/* istanbul ignore next, $flow-disable-line */
65447if (typeof Promise !== 'undefined' && isNative(Promise)) {
65448    var p_1 = Promise.resolve();
65449    timerFunc = function () {
65450        p_1.then(flushCallbacks);
65451        // In problematic UIWebViews, Promise.then doesn't completely break, but
65452        // it can get stuck in a weird state where callbacks are pushed into the
65453        // microtask queue but the queue isn't being flushed, until the browser
65454        // needs to do some other work, e.g. handle a timer. Therefore we can
65455        // "force" the microtask queue to be flushed by adding an empty timer.
65456        if (isIOS)
65457            setTimeout(noop);
65458    };
65459    isUsingMicroTask = true;
65460}
65461else if (!isIE &&
65462    typeof MutationObserver !== 'undefined' &&
65463    (isNative(MutationObserver) ||
65464        // PhantomJS and iOS 7.x
65465        MutationObserver.toString() === '[object MutationObserverConstructor]')) {
65466    // Use MutationObserver where native Promise is not available,
65467    // e.g. PhantomJS, iOS7, Android 4.4
65468    // (#6466 MutationObserver is unreliable in IE11)
65469    var counter_1 = 1;
65470    var observer = new MutationObserver(flushCallbacks);
65471    var textNode_1 = document.createTextNode(String(counter_1));
65472    observer.observe(textNode_1, {
65473        characterData: true
65474    });
65475    timerFunc = function () {
65476        counter_1 = (counter_1 + 1) % 2;
65477        textNode_1.data = String(counter_1);
65478    };
65479    isUsingMicroTask = true;
65480}
65481else if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {
65482    // Fallback to setImmediate.
65483    // Technically it leverages the (macro) task queue,
65484    // but it is still a better choice than setTimeout.
65485    timerFunc = function () {
65486        setImmediate(flushCallbacks);
65487    };
65488}
65489else {
65490    // Fallback to setTimeout.
65491    timerFunc = function () {
65492        setTimeout(flushCallbacks, 0);
65493    };
65494}
65495/**
65496 * @internal
65497 */
65498function nextTick(cb, ctx) {
65499    var _resolve;
65500    callbacks.push(function () {
65501        if (cb) {
65502            try {
65503                cb.call(ctx);
65504            }
65505            catch (e) {
65506                handleError(e, ctx, 'nextTick');
65507            }
65508        }
65509        else if (_resolve) {
65510            _resolve(ctx);
65511        }
65512    });
65513    if (!pending) {
65514        pending = true;
65515        timerFunc();
65516    }
65517    // $flow-disable-line
65518    if (!cb && typeof Promise !== 'undefined') {
65519        return new Promise(function (resolve) {
65520            _resolve = resolve;
65521        });
65522    }
65523}
65524
65525function useCssModule(name) {
65526    if (name === void 0) { name = '$style'; }
65527    /* istanbul ignore else */
65528    {
65529        if (!currentInstance) {
65530             true && warn$2("useCssModule must be called inside setup()");
65531            return emptyObject;
65532        }
65533        var mod = currentInstance[name];
65534        if (!mod) {
65535             true &&
65536                warn$2("Current instance does not have CSS module named \"".concat(name, "\"."));
65537            return emptyObject;
65538        }
65539        return mod;
65540    }
65541}
65542
65543/**
65544 * Runtime helper for SFC's CSS variable injection feature.
65545 * @private
65546 */
65547function useCssVars(getter) {
65548    if (!inBrowser && !false)
65549        return;
65550    var instance = currentInstance;
65551    if (!instance) {
65552         true &&
65553            warn$2("useCssVars is called without current active component instance.");
65554        return;
65555    }
65556    watchPostEffect(function () {
65557        var el = instance.$el;
65558        var vars = getter(instance, instance._setupProxy);
65559        if (el && el.nodeType === 1) {
65560            var style = el.style;
65561            for (var key in vars) {
65562                style.setProperty("--".concat(key), vars[key]);
65563            }
65564        }
65565    });
65566}
65567
65568/**
65569 * v3-compatible async component API.
65570 * @internal the type is manually declared in <root>/types/v3-define-async-component.d.ts
65571 * because it relies on existing manual types
65572 */
65573function defineAsyncComponent(source) {
65574    if (isFunction(source)) {
65575        source = { loader: source };
65576    }
65577    var loader = source.loader, loadingComponent = source.loadingComponent, errorComponent = source.errorComponent, _a = source.delay, delay = _a === void 0 ? 200 : _a, timeout = source.timeout, // undefined = never times out
65578    _b = source.suspensible, // undefined = never times out
65579    suspensible = _b === void 0 ? false : _b, // in Vue 3 default is true
65580    userOnError = source.onError;
65581    if ( true && suspensible) {
65582        warn$2("The suspensible option for async components is not supported in Vue2. It is ignored.");
65583    }
65584    var pendingRequest = null;
65585    var retries = 0;
65586    var retry = function () {
65587        retries++;
65588        pendingRequest = null;
65589        return load();
65590    };
65591    var load = function () {
65592        var thisRequest;
65593        return (pendingRequest ||
65594            (thisRequest = pendingRequest =
65595                loader()
65596                    .catch(function (err) {
65597                    err = err instanceof Error ? err : new Error(String(err));
65598                    if (userOnError) {
65599                        return new Promise(function (resolve, reject) {
65600                            var userRetry = function () { return resolve(retry()); };
65601                            var userFail = function () { return reject(err); };
65602                            userOnError(err, userRetry, userFail, retries + 1);
65603                        });
65604                    }
65605                    else {
65606                        throw err;
65607                    }
65608                })
65609                    .then(function (comp) {
65610                    if (thisRequest !== pendingRequest && pendingRequest) {
65611                        return pendingRequest;
65612                    }
65613                    if ( true && !comp) {
65614                        warn$2("Async component loader resolved to undefined. " +
65615                            "If you are using retry(), make sure to return its return value.");
65616                    }
65617                    // interop module default
65618                    if (comp &&
65619                        (comp.__esModule || comp[Symbol.toStringTag] === 'Module')) {
65620                        comp = comp.default;
65621                    }
65622                    if ( true && comp && !isObject(comp) && !isFunction(comp)) {
65623                        throw new Error("Invalid async component load result: ".concat(comp));
65624                    }
65625                    return comp;
65626                })));
65627    };
65628    return function () {
65629        var component = load();
65630        return {
65631            component: component,
65632            delay: delay,
65633            timeout: timeout,
65634            error: errorComponent,
65635            loading: loadingComponent
65636        };
65637    };
65638}
65639
65640function createLifeCycle(hookName) {
65641    return function (fn, target) {
65642        if (target === void 0) { target = currentInstance; }
65643        if (!target) {
65644             true &&
65645                warn$2("".concat(formatName(hookName), " is called when there is no active component instance to be ") +
65646                    "associated with. " +
65647                    "Lifecycle injection APIs can only be used during execution of setup().");
65648            return;
65649        }
65650        return injectHook(target, hookName, fn);
65651    };
65652}
65653function formatName(name) {
65654    if (name === 'beforeDestroy') {
65655        name = 'beforeUnmount';
65656    }
65657    else if (name === 'destroyed') {
65658        name = 'unmounted';
65659    }
65660    return "on".concat(name[0].toUpperCase() + name.slice(1));
65661}
65662function injectHook(instance, hookName, fn) {
65663    var options = instance.$options;
65664    options[hookName] = mergeLifecycleHook(options[hookName], fn);
65665}
65666var onBeforeMount = createLifeCycle('beforeMount');
65667var onMounted = createLifeCycle('mounted');
65668var onBeforeUpdate = createLifeCycle('beforeUpdate');
65669var onUpdated = createLifeCycle('updated');
65670var onBeforeUnmount = createLifeCycle('beforeDestroy');
65671var onUnmounted = createLifeCycle('destroyed');
65672var onActivated = createLifeCycle('activated');
65673var onDeactivated = createLifeCycle('deactivated');
65674var onServerPrefetch = createLifeCycle('serverPrefetch');
65675var onRenderTracked = createLifeCycle('renderTracked');
65676var onRenderTriggered = createLifeCycle('renderTriggered');
65677var injectErrorCapturedHook = createLifeCycle('errorCaptured');
65678function onErrorCaptured(hook, target) {
65679    if (target === void 0) { target = currentInstance; }
65680    injectErrorCapturedHook(hook, target);
65681}
65682
65683/**
65684 * Note: also update dist/vue.runtime.mjs when adding new exports to this file.
65685 */
65686var version = '2.7.16';
65687/**
65688 * @internal type is manually declared in <root>/types/v3-define-component.d.ts
65689 */
65690function defineComponent(options) {
65691    return options;
65692}
65693
65694var seenObjects = new _Set();
65695/**
65696 * Recursively traverse an object to evoke all converted
65697 * getters, so that every nested property inside the object
65698 * is collected as a "deep" dependency.
65699 */
65700function traverse(val) {
65701    _traverse(val, seenObjects);
65702    seenObjects.clear();
65703    return val;
65704}
65705function _traverse(val, seen) {
65706    var i, keys;
65707    var isA = isArray(val);
65708    if ((!isA && !isObject(val)) ||
65709        val.__v_skip /* ReactiveFlags.SKIP */ ||
65710        Object.isFrozen(val) ||
65711        val instanceof VNode) {
65712        return;
65713    }
65714    if (val.__ob__) {
65715        var depId = val.__ob__.dep.id;
65716        if (seen.has(depId)) {
65717            return;
65718        }
65719        seen.add(depId);
65720    }
65721    if (isA) {
65722        i = val.length;
65723        while (i--)
65724            _traverse(val[i], seen);
65725    }
65726    else if (isRef(val)) {
65727        _traverse(val.value, seen);
65728    }
65729    else {
65730        keys = Object.keys(val);
65731        i = keys.length;
65732        while (i--)
65733            _traverse(val[keys[i]], seen);
65734    }
65735}
65736
65737var uid$1 = 0;
65738/**
65739 * A watcher parses an expression, collects dependencies,
65740 * and fires callback when the expression value changes.
65741 * This is used for both the $watch() api and directives.
65742 * @internal
65743 */
65744var Watcher = /** @class */ (function () {
65745    function Watcher(vm, expOrFn, cb, options, isRenderWatcher) {
65746        recordEffectScope(this, 
65747        // if the active effect scope is manually created (not a component scope),
65748        // prioritize it
65749        activeEffectScope && !activeEffectScope._vm
65750            ? activeEffectScope
65751            : vm
65752                ? vm._scope
65753                : undefined);
65754        if ((this.vm = vm) && isRenderWatcher) {
65755            vm._watcher = this;
65756        }
65757        // options
65758        if (options) {
65759            this.deep = !!options.deep;
65760            this.user = !!options.user;
65761            this.lazy = !!options.lazy;
65762            this.sync = !!options.sync;
65763            this.before = options.before;
65764            if (true) {
65765                this.onTrack = options.onTrack;
65766                this.onTrigger = options.onTrigger;
65767            }
65768        }
65769        else {
65770            this.deep = this.user = this.lazy = this.sync = false;
65771        }
65772        this.cb = cb;
65773        this.id = ++uid$1; // uid for batching
65774        this.active = true;
65775        this.post = false;
65776        this.dirty = this.lazy; // for lazy watchers
65777        this.deps = [];
65778        this.newDeps = [];
65779        this.depIds = new _Set();
65780        this.newDepIds = new _Set();
65781        this.expression =  true ? expOrFn.toString() : 0;
65782        // parse expression for getter
65783        if (isFunction(expOrFn)) {
65784            this.getter = expOrFn;
65785        }
65786        else {
65787            this.getter = parsePath(expOrFn);
65788            if (!this.getter) {
65789                this.getter = noop;
65790                 true &&
65791                    warn$2("Failed watching path: \"".concat(expOrFn, "\" ") +
65792                        'Watcher only accepts simple dot-delimited paths. ' +
65793                        'For full control, use a function instead.', vm);
65794            }
65795        }
65796        this.value = this.lazy ? undefined : this.get();
65797    }
65798    /**
65799     * Evaluate the getter, and re-collect dependencies.
65800     */
65801    Watcher.prototype.get = function () {
65802        pushTarget(this);
65803        var value;
65804        var vm = this.vm;
65805        try {
65806            value = this.getter.call(vm, vm);
65807        }
65808        catch (e) {
65809            if (this.user) {
65810                handleError(e, vm, "getter for watcher \"".concat(this.expression, "\""));
65811            }
65812            else {
65813                throw e;
65814            }
65815        }
65816        finally {
65817            // "touch" every property so they are all tracked as
65818            // dependencies for deep watching
65819            if (this.deep) {
65820                traverse(value);
65821            }
65822            popTarget();
65823            this.cleanupDeps();
65824        }
65825        return value;
65826    };
65827    /**
65828     * Add a dependency to this directive.
65829     */
65830    Watcher.prototype.addDep = function (dep) {
65831        var id = dep.id;
65832        if (!this.newDepIds.has(id)) {
65833            this.newDepIds.add(id);
65834            this.newDeps.push(dep);
65835            if (!this.depIds.has(id)) {
65836                dep.addSub(this);
65837            }
65838        }
65839    };
65840    /**
65841     * Clean up for dependency collection.
65842     */
65843    Watcher.prototype.cleanupDeps = function () {
65844        var i = this.deps.length;
65845        while (i--) {
65846            var dep = this.deps[i];
65847            if (!this.newDepIds.has(dep.id)) {
65848                dep.removeSub(this);
65849            }
65850        }
65851        var tmp = this.depIds;
65852        this.depIds = this.newDepIds;
65853        this.newDepIds = tmp;
65854        this.newDepIds.clear();
65855        tmp = this.deps;
65856        this.deps = this.newDeps;
65857        this.newDeps = tmp;
65858        this.newDeps.length = 0;
65859    };
65860    /**
65861     * Subscriber interface.
65862     * Will be called when a dependency changes.
65863     */
65864    Watcher.prototype.update = function () {
65865        /* istanbul ignore else */
65866        if (this.lazy) {
65867            this.dirty = true;
65868        }
65869        else if (this.sync) {
65870            this.run();
65871        }
65872        else {
65873            queueWatcher(this);
65874        }
65875    };
65876    /**
65877     * Scheduler job interface.
65878     * Will be called by the scheduler.
65879     */
65880    Watcher.prototype.run = function () {
65881        if (this.active) {
65882            var value = this.get();
65883            if (value !== this.value ||
65884                // Deep watchers and watchers on Object/Arrays should fire even
65885                // when the value is the same, because the value may
65886                // have mutated.
65887                isObject(value) ||
65888                this.deep) {
65889                // set new value
65890                var oldValue = this.value;
65891                this.value = value;
65892                if (this.user) {
65893                    var info = "callback for watcher \"".concat(this.expression, "\"");
65894                    invokeWithErrorHandling(this.cb, this.vm, [value, oldValue], this.vm, info);
65895                }
65896                else {
65897                    this.cb.call(this.vm, value, oldValue);
65898                }
65899            }
65900        }
65901    };
65902    /**
65903     * Evaluate the value of the watcher.
65904     * This only gets called for lazy watchers.
65905     */
65906    Watcher.prototype.evaluate = function () {
65907        this.value = this.get();
65908        this.dirty = false;
65909    };
65910    /**
65911     * Depend on all deps collected by this watcher.
65912     */
65913    Watcher.prototype.depend = function () {
65914        var i = this.deps.length;
65915        while (i--) {
65916            this.deps[i].depend();
65917        }
65918    };
65919    /**
65920     * Remove self from all dependencies' subscriber list.
65921     */
65922    Watcher.prototype.teardown = function () {
65923        if (this.vm && !this.vm._isBeingDestroyed) {
65924            remove$2(this.vm._scope.effects, this);
65925        }
65926        if (this.active) {
65927            var i = this.deps.length;
65928            while (i--) {
65929                this.deps[i].removeSub(this);
65930            }
65931            this.active = false;
65932            if (this.onStop) {
65933                this.onStop();
65934            }
65935        }
65936    };
65937    return Watcher;
65938}());
65939
65940var sharedPropertyDefinition = {
65941    enumerable: true,
65942    configurable: true,
65943    get: noop,
65944    set: noop
65945};
65946function proxy(target, sourceKey, key) {
65947    sharedPropertyDefinition.get = function proxyGetter() {
65948        return this[sourceKey][key];
65949    };
65950    sharedPropertyDefinition.set = function proxySetter(val) {
65951        this[sourceKey][key] = val;
65952    };
65953    Object.defineProperty(target, key, sharedPropertyDefinition);
65954}
65955function initState(vm) {
65956    var opts = vm.$options;
65957    if (opts.props)
65958        initProps$1(vm, opts.props);
65959    // Composition API
65960    initSetup(vm);
65961    if (opts.methods)
65962        initMethods(vm, opts.methods);
65963    if (opts.data) {
65964        initData(vm);
65965    }
65966    else {
65967        var ob = observe((vm._data = {}));
65968        ob && ob.vmCount++;
65969    }
65970    if (opts.computed)
65971        initComputed$1(vm, opts.computed);
65972    if (opts.watch && opts.watch !== nativeWatch) {
65973        initWatch(vm, opts.watch);
65974    }
65975}
65976function initProps$1(vm, propsOptions) {
65977    var propsData = vm.$options.propsData || {};
65978    var props = (vm._props = shallowReactive({}));
65979    // cache prop keys so that future props updates can iterate using Array
65980    // instead of dynamic object key enumeration.
65981    var keys = (vm.$options._propKeys = []);
65982    var isRoot = !vm.$parent;
65983    // root instance props should be converted
65984    if (!isRoot) {
65985        toggleObserving(false);
65986    }
65987    var _loop_1 = function (key) {
65988        keys.push(key);
65989        var value = validateProp(key, propsOptions, propsData, vm);
65990        /* istanbul ignore else */
65991        if (true) {
65992            var hyphenatedKey = hyphenate(key);
65993            if (isReservedAttribute(hyphenatedKey) ||
65994                config.isReservedAttr(hyphenatedKey)) {
65995                warn$2("\"".concat(hyphenatedKey, "\" is a reserved attribute and cannot be used as component prop."), vm);
65996            }
65997            defineReactive(props, key, value, function () {
65998                if (!isRoot && !isUpdatingChildComponent) {
65999                    warn$2("Avoid mutating a prop directly since the value will be " +
66000                        "overwritten whenever the parent component re-renders. " +
66001                        "Instead, use a data or computed property based on the prop's " +
66002                        "value. Prop being mutated: \"".concat(key, "\""), vm);
66003                }
66004            }, true /* shallow */);
66005        }
66006        else {}
66007        // static props are already proxied on the component's prototype
66008        // during Vue.extend(). We only need to proxy props defined at
66009        // instantiation here.
66010        if (!(key in vm)) {
66011            proxy(vm, "_props", key);
66012        }
66013    };
66014    for (var key in propsOptions) {
66015        _loop_1(key);
66016    }
66017    toggleObserving(true);
66018}
66019function initData(vm) {
66020    var data = vm.$options.data;
66021    data = vm._data = isFunction(data) ? getData(data, vm) : data || {};
66022    if (!isPlainObject(data)) {
66023        data = {};
66024         true &&
66025            warn$2('data functions should return an object:\n' +
66026                'https://v2.vuejs.org/v2/guide/components.html#data-Must-Be-a-Function', vm);
66027    }
66028    // proxy data on instance
66029    var keys = Object.keys(data);
66030    var props = vm.$options.props;
66031    var methods = vm.$options.methods;
66032    var i = keys.length;
66033    while (i--) {
66034        var key = keys[i];
66035        if (true) {
66036            if (methods && hasOwn(methods, key)) {
66037                warn$2("Method \"".concat(key, "\" has already been defined as a data property."), vm);
66038            }
66039        }
66040        if (props && hasOwn(props, key)) {
66041             true &&
66042                warn$2("The data property \"".concat(key, "\" is already declared as a prop. ") +
66043                    "Use prop default value instead.", vm);
66044        }
66045        else if (!isReserved(key)) {
66046            proxy(vm, "_data", key);
66047        }
66048    }
66049    // observe data
66050    var ob = observe(data);
66051    ob && ob.vmCount++;
66052}
66053function getData(data, vm) {
66054    // #7573 disable dep collection when invoking data getters
66055    pushTarget();
66056    try {
66057        return data.call(vm, vm);
66058    }
66059    catch (e) {
66060        handleError(e, vm, "data()");
66061        return {};
66062    }
66063    finally {
66064        popTarget();
66065    }
66066}
66067var computedWatcherOptions = { lazy: true };
66068function initComputed$1(vm, computed) {
66069    // $flow-disable-line
66070    var watchers = (vm._computedWatchers = Object.create(null));
66071    // computed properties are just getters during SSR
66072    var isSSR = isServerRendering();
66073    for (var key in computed) {
66074        var userDef = computed[key];
66075        var getter = isFunction(userDef) ? userDef : userDef.get;
66076        if ( true && getter == null) {
66077            warn$2("Getter is missing for computed property \"".concat(key, "\"."), vm);
66078        }
66079        if (!isSSR) {
66080            // create internal watcher for the computed property.
66081            watchers[key] = new Watcher(vm, getter || noop, noop, computedWatcherOptions);
66082        }
66083        // component-defined computed properties are already defined on the
66084        // component prototype. We only need to define computed properties defined
66085        // at instantiation here.
66086        if (!(key in vm)) {
66087            defineComputed(vm, key, userDef);
66088        }
66089        else if (true) {
66090            if (key in vm.$data) {
66091                warn$2("The computed property \"".concat(key, "\" is already defined in data."), vm);
66092            }
66093            else if (vm.$options.props && key in vm.$options.props) {
66094                warn$2("The computed property \"".concat(key, "\" is already defined as a prop."), vm);
66095            }
66096            else if (vm.$options.methods && key in vm.$options.methods) {
66097                warn$2("The computed property \"".concat(key, "\" is already defined as a method."), vm);
66098            }
66099        }
66100    }
66101}
66102function defineComputed(target, key, userDef) {
66103    var shouldCache = !isServerRendering();
66104    if (isFunction(userDef)) {
66105        sharedPropertyDefinition.get = shouldCache
66106            ? createComputedGetter(key)
66107            : createGetterInvoker(userDef);
66108        sharedPropertyDefinition.set = noop;
66109    }
66110    else {
66111        sharedPropertyDefinition.get = userDef.get
66112            ? shouldCache && userDef.cache !== false
66113                ? createComputedGetter(key)
66114                : createGetterInvoker(userDef.get)
66115            : noop;
66116        sharedPropertyDefinition.set = userDef.set || noop;
66117    }
66118    if ( true && sharedPropertyDefinition.set === noop) {
66119        sharedPropertyDefinition.set = function () {
66120            warn$2("Computed property \"".concat(key, "\" was assigned to but it has no setter."), this);
66121        };
66122    }
66123    Object.defineProperty(target, key, sharedPropertyDefinition);
66124}
66125function createComputedGetter(key) {
66126    return function computedGetter() {
66127        var watcher = this._computedWatchers && this._computedWatchers[key];
66128        if (watcher) {
66129            if (watcher.dirty) {
66130                watcher.evaluate();
66131            }
66132            if (Dep.target) {
66133                if ( true && Dep.target.onTrack) {
66134                    Dep.target.onTrack({
66135                        effect: Dep.target,
66136                        target: this,
66137                        type: "get" /* TrackOpTypes.GET */,
66138                        key: key
66139                    });
66140                }
66141                watcher.depend();
66142            }
66143            return watcher.value;
66144        }
66145    };
66146}
66147function createGetterInvoker(fn) {
66148    return function computedGetter() {
66149        return fn.call(this, this);
66150    };
66151}
66152function initMethods(vm, methods) {
66153    var props = vm.$options.props;
66154    for (var key in methods) {
66155        if (true) {
66156            if (typeof methods[key] !== 'function') {
66157                warn$2("Method \"".concat(key, "\" has type \"").concat(typeof methods[key], "\" in the component definition. ") +
66158                    "Did you reference the function correctly?", vm);
66159            }
66160            if (props && hasOwn(props, key)) {
66161                warn$2("Method \"".concat(key, "\" has already been defined as a prop."), vm);
66162            }
66163            if (key in vm && isReserved(key)) {
66164                warn$2("Method \"".concat(key, "\" conflicts with an existing Vue instance method. ") +
66165                    "Avoid defining component methods that start with _ or $.");
66166            }
66167        }
66168        vm[key] = typeof methods[key] !== 'function' ? noop : bind$1(methods[key], vm);
66169    }
66170}
66171function initWatch(vm, watch) {
66172    for (var key in watch) {
66173        var handler = watch[key];
66174        if (isArray(handler)) {
66175            for (var i = 0; i < handler.length; i++) {
66176                createWatcher(vm, key, handler[i]);
66177            }
66178        }
66179        else {
66180            createWatcher(vm, key, handler);
66181        }
66182    }
66183}
66184function createWatcher(vm, expOrFn, handler, options) {
66185    if (isPlainObject(handler)) {
66186        options = handler;
66187        handler = handler.handler;
66188    }
66189    if (typeof handler === 'string') {
66190        handler = vm[handler];
66191    }
66192    return vm.$watch(expOrFn, handler, options);
66193}
66194function stateMixin(Vue) {
66195    // flow somehow has problems with directly declared definition object
66196    // when using Object.defineProperty, so we have to procedurally build up
66197    // the object here.
66198    var dataDef = {};
66199    dataDef.get = function () {
66200        return this._data;
66201    };
66202    var propsDef = {};
66203    propsDef.get = function () {
66204        return this._props;
66205    };
66206    if (true) {
66207        dataDef.set = function () {
66208            warn$2('Avoid replacing instance root $data. ' +
66209                'Use nested data properties instead.', this);
66210        };
66211        propsDef.set = function () {
66212            warn$2("$props is readonly.", this);
66213        };
66214    }
66215    Object.defineProperty(Vue.prototype, '$data', dataDef);
66216    Object.defineProperty(Vue.prototype, '$props', propsDef);
66217    Vue.prototype.$set = set;
66218    Vue.prototype.$delete = del;
66219    Vue.prototype.$watch = function (expOrFn, cb, options) {
66220        var vm = this;
66221        if (isPlainObject(cb)) {
66222            return createWatcher(vm, expOrFn, cb, options);
66223        }
66224        options = options || {};
66225        options.user = true;
66226        var watcher = new Watcher(vm, expOrFn, cb, options);
66227        if (options.immediate) {
66228            var info = "callback for immediate watcher \"".concat(watcher.expression, "\"");
66229            pushTarget();
66230            invokeWithErrorHandling(cb, vm, [watcher.value], vm, info);
66231            popTarget();
66232        }
66233        return function unwatchFn() {
66234            watcher.teardown();
66235        };
66236    };
66237}
66238
66239function initProvide(vm) {
66240    var provideOption = vm.$options.provide;
66241    if (provideOption) {
66242        var provided = isFunction(provideOption)
66243            ? provideOption.call(vm)
66244            : provideOption;
66245        if (!isObject(provided)) {
66246            return;
66247        }
66248        var source = resolveProvided(vm);
66249        // IE9 doesn't support Object.getOwnPropertyDescriptors so we have to
66250        // iterate the keys ourselves.
66251        var keys = hasSymbol ? Reflect.ownKeys(provided) : Object.keys(provided);
66252        for (var i = 0; i < keys.length; i++) {
66253            var key = keys[i];
66254            Object.defineProperty(source, key, Object.getOwnPropertyDescriptor(provided, key));
66255        }
66256    }
66257}
66258function initInjections(vm) {
66259    var result = resolveInject(vm.$options.inject, vm);
66260    if (result) {
66261        toggleObserving(false);
66262        Object.keys(result).forEach(function (key) {
66263            /* istanbul ignore else */
66264            if (true) {
66265                defineReactive(vm, key, result[key], function () {
66266                    warn$2("Avoid mutating an injected value directly since the changes will be " +
66267                        "overwritten whenever the provided component re-renders. " +
66268                        "injection being mutated: \"".concat(key, "\""), vm);
66269                });
66270            }
66271            else {}
66272        });
66273        toggleObserving(true);
66274    }
66275}
66276function resolveInject(inject, vm) {
66277    if (inject) {
66278        // inject is :any because flow is not smart enough to figure out cached
66279        var result = Object.create(null);
66280        var keys = hasSymbol ? Reflect.ownKeys(inject) : Object.keys(inject);
66281        for (var i = 0; i < keys.length; i++) {
66282            var key = keys[i];
66283            // #6574 in case the inject object is observed...
66284            if (key === '__ob__')
66285                continue;
66286            var provideKey = inject[key].from;
66287            if (provideKey in vm._provided) {
66288                result[key] = vm._provided[provideKey];
66289            }
66290            else if ('default' in inject[key]) {
66291                var provideDefault = inject[key].default;
66292                result[key] = isFunction(provideDefault)
66293                    ? provideDefault.call(vm)
66294                    : provideDefault;
66295            }
66296            else if (true) {
66297                warn$2("Injection \"".concat(key, "\" not found"), vm);
66298            }
66299        }
66300        return result;
66301    }
66302}
66303
66304var uid = 0;
66305function initMixin$1(Vue) {
66306    Vue.prototype._init = function (options) {
66307        var vm = this;
66308        // a uid
66309        vm._uid = uid++;
66310        var startTag, endTag;
66311        /* istanbul ignore if */
66312        if ( true && config.performance && mark) {
66313            startTag = "vue-perf-start:".concat(vm._uid);
66314            endTag = "vue-perf-end:".concat(vm._uid);
66315            mark(startTag);
66316        }
66317        // a flag to mark this as a Vue instance without having to do instanceof
66318        // check
66319        vm._isVue = true;
66320        // avoid instances from being observed
66321        vm.__v_skip = true;
66322        // effect scope
66323        vm._scope = new EffectScope(true /* detached */);
66324        // #13134 edge case where a child component is manually created during the
66325        // render of a parent component
66326        vm._scope.parent = undefined;
66327        vm._scope._vm = true;
66328        // merge options
66329        if (options && options._isComponent) {
66330            // optimize internal component instantiation
66331            // since dynamic options merging is pretty slow, and none of the
66332            // internal component options needs special treatment.
66333            initInternalComponent(vm, options);
66334        }
66335        else {
66336            vm.$options = mergeOptions(resolveConstructorOptions(vm.constructor), options || {}, vm);
66337        }
66338        /* istanbul ignore else */
66339        if (true) {
66340            initProxy(vm);
66341        }
66342        else {}
66343        // expose real self
66344        vm._self = vm;
66345        initLifecycle(vm);
66346        initEvents(vm);
66347        initRender(vm);
66348        callHook$1(vm, 'beforeCreate', undefined, false /* setContext */);
66349        initInjections(vm); // resolve injections before data/props
66350        initState(vm);
66351        initProvide(vm); // resolve provide after data/props
66352        callHook$1(vm, 'created');
66353        /* istanbul ignore if */
66354        if ( true && config.performance && mark) {
66355            vm._name = formatComponentName(vm, false);
66356            mark(endTag);
66357            measure("vue ".concat(vm._name, " init"), startTag, endTag);
66358        }
66359        if (vm.$options.el) {
66360            vm.$mount(vm.$options.el);
66361        }
66362    };
66363}
66364function initInternalComponent(vm, options) {
66365    var opts = (vm.$options = Object.create(vm.constructor.options));
66366    // doing this because it's faster than dynamic enumeration.
66367    var parentVnode = options._parentVnode;
66368    opts.parent = options.parent;
66369    opts._parentVnode = parentVnode;
66370    var vnodeComponentOptions = parentVnode.componentOptions;
66371    opts.propsData = vnodeComponentOptions.propsData;
66372    opts._parentListeners = vnodeComponentOptions.listeners;
66373    opts._renderChildren = vnodeComponentOptions.children;
66374    opts._componentTag = vnodeComponentOptions.tag;
66375    if (options.render) {
66376        opts.render = options.render;
66377        opts.staticRenderFns = options.staticRenderFns;
66378    }
66379}
66380function resolveConstructorOptions(Ctor) {
66381    var options = Ctor.options;
66382    if (Ctor.super) {
66383        var superOptions = resolveConstructorOptions(Ctor.super);
66384        var cachedSuperOptions = Ctor.superOptions;
66385        if (superOptions !== cachedSuperOptions) {
66386            // super option changed,
66387            // need to resolve new options.
66388            Ctor.superOptions = superOptions;
66389            // check if there are any late-modified/attached options (#4976)
66390            var modifiedOptions = resolveModifiedOptions(Ctor);
66391            // update base extend options
66392            if (modifiedOptions) {
66393                extend(Ctor.extendOptions, modifiedOptions);
66394            }
66395            options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions);
66396            if (options.name) {
66397                options.components[options.name] = Ctor;
66398            }
66399        }
66400    }
66401    return options;
66402}
66403function resolveModifiedOptions(Ctor) {
66404    var modified;
66405    var latest = Ctor.options;
66406    var sealed = Ctor.sealedOptions;
66407    for (var key in latest) {
66408        if (latest[key] !== sealed[key]) {
66409            if (!modified)
66410                modified = {};
66411            modified[key] = latest[key];
66412        }
66413    }
66414    return modified;
66415}
66416
66417function FunctionalRenderContext(data, props, children, parent, Ctor) {
66418    var _this = this;
66419    var options = Ctor.options;
66420    // ensure the createElement function in functional components
66421    // gets a unique context - this is necessary for correct named slot check
66422    var contextVm;
66423    if (hasOwn(parent, '_uid')) {
66424        contextVm = Object.create(parent);
66425        contextVm._original = parent;
66426    }
66427    else {
66428        // the context vm passed in is a functional context as well.
66429        // in this case we want to make sure we are able to get a hold to the
66430        // real context instance.
66431        contextVm = parent;
66432        // @ts-ignore
66433        parent = parent._original;
66434    }
66435    var isCompiled = isTrue(options._compiled);
66436    var needNormalization = !isCompiled;
66437    this.data = data;
66438    this.props = props;
66439    this.children = children;
66440    this.parent = parent;
66441    this.listeners = data.on || emptyObject;
66442    this.injections = resolveInject(options.inject, parent);
66443    this.slots = function () {
66444        if (!_this.$slots) {
66445            normalizeScopedSlots(parent, data.scopedSlots, (_this.$slots = resolveSlots(children, parent)));
66446        }
66447        return _this.$slots;
66448    };
66449    Object.defineProperty(this, 'scopedSlots', {
66450        enumerable: true,
66451        get: function () {
66452            return normalizeScopedSlots(parent, data.scopedSlots, this.slots());
66453        }
66454    });
66455    // support for compiled functional template
66456    if (isCompiled) {
66457        // exposing $options for renderStatic()
66458        this.$options = options;
66459        // pre-resolve slots for renderSlot()
66460        this.$slots = this.slots();
66461        this.$scopedSlots = normalizeScopedSlots(parent, data.scopedSlots, this.$slots);
66462    }
66463    if (options._scopeId) {
66464        this._c = function (a, b, c, d) {
66465            var vnode = createElement$1(contextVm, a, b, c, d, needNormalization);
66466            if (vnode && !isArray(vnode)) {
66467                vnode.fnScopeId = options._scopeId;
66468                vnode.fnContext = parent;
66469            }
66470            return vnode;
66471        };
66472    }
66473    else {
66474        this._c = function (a, b, c, d) {
66475            return createElement$1(contextVm, a, b, c, d, needNormalization);
66476        };
66477    }
66478}
66479installRenderHelpers(FunctionalRenderContext.prototype);
66480function createFunctionalComponent(Ctor, propsData, data, contextVm, children) {
66481    var options = Ctor.options;
66482    var props = {};
66483    var propOptions = options.props;
66484    if (isDef(propOptions)) {
66485        for (var key in propOptions) {
66486            props[key] = validateProp(key, propOptions, propsData || emptyObject);
66487        }
66488    }
66489    else {
66490        if (isDef(data.attrs))
66491            mergeProps(props, data.attrs);
66492        if (isDef(data.props))
66493            mergeProps(props, data.props);
66494    }
66495    var renderContext = new FunctionalRenderContext(data, props, children, contextVm, Ctor);
66496    var vnode = options.render.call(null, renderContext._c, renderContext);
66497    if (vnode instanceof VNode) {
66498        return cloneAndMarkFunctionalResult(vnode, data, renderContext.parent, options, renderContext);
66499    }
66500    else if (isArray(vnode)) {
66501        var vnodes = normalizeChildren(vnode) || [];
66502        var res = new Array(vnodes.length);
66503        for (var i = 0; i < vnodes.length; i++) {
66504            res[i] = cloneAndMarkFunctionalResult(vnodes[i], data, renderContext.parent, options, renderContext);
66505        }
66506        return res;
66507    }
66508}
66509function cloneAndMarkFunctionalResult(vnode, data, contextVm, options, renderContext) {
66510    // #7817 clone node before setting fnContext, otherwise if the node is reused
66511    // (e.g. it was from a cached normal slot) the fnContext causes named slots
66512    // that should not be matched to match.
66513    var clone = cloneVNode(vnode);
66514    clone.fnContext = contextVm;
66515    clone.fnOptions = options;
66516    if (true) {
66517        (clone.devtoolsMeta = clone.devtoolsMeta || {}).renderContext =
66518            renderContext;
66519    }
66520    if (data.slot) {
66521        (clone.data || (clone.data = {})).slot = data.slot;
66522    }
66523    return clone;
66524}
66525function mergeProps(to, from) {
66526    for (var key in from) {
66527        to[camelize(key)] = from[key];
66528    }
66529}
66530
66531function getComponentName(options) {
66532    return options.name || options.__name || options._componentTag;
66533}
66534// inline hooks to be invoked on component VNodes during patch
66535var componentVNodeHooks = {
66536    init: function (vnode, hydrating) {
66537        if (vnode.componentInstance &&
66538            !vnode.componentInstance._isDestroyed &&
66539            vnode.data.keepAlive) {
66540            // kept-alive components, treat as a patch
66541            var mountedNode = vnode; // work around flow
66542            componentVNodeHooks.prepatch(mountedNode, mountedNode);
66543        }
66544        else {
66545            var child = (vnode.componentInstance = createComponentInstanceForVnode(vnode, activeInstance));
66546            child.$mount(hydrating ? vnode.elm : undefined, hydrating);
66547        }
66548    },
66549    prepatch: function (oldVnode, vnode) {
66550        var options = vnode.componentOptions;
66551        var child = (vnode.componentInstance = oldVnode.componentInstance);
66552        updateChildComponent(child, options.propsData, // updated props
66553        options.listeners, // updated listeners
66554        vnode, // new parent vnode
66555        options.children // new children
66556        );
66557    },
66558    insert: function (vnode) {
66559        var context = vnode.context, componentInstance = vnode.componentInstance;
66560        if (!componentInstance._isMounted) {
66561            componentInstance._isMounted = true;
66562            callHook$1(componentInstance, 'mounted');
66563        }
66564        if (vnode.data.keepAlive) {
66565            if (context._isMounted) {
66566                // vue-router#1212
66567                // During updates, a kept-alive component's child components may
66568                // change, so directly walking the tree here may call activated hooks
66569                // on incorrect children. Instead we push them into a queue which will
66570                // be processed after the whole patch process ended.
66571                queueActivatedComponent(componentInstance);
66572            }
66573            else {
66574                activateChildComponent(componentInstance, true /* direct */);
66575            }
66576        }
66577    },
66578    destroy: function (vnode) {
66579        var componentInstance = vnode.componentInstance;
66580        if (!componentInstance._isDestroyed) {
66581            if (!vnode.data.keepAlive) {
66582                componentInstance.$destroy();
66583            }
66584            else {
66585                deactivateChildComponent(componentInstance, true /* direct */);
66586            }
66587        }
66588    }
66589};
66590var hooksToMerge = Object.keys(componentVNodeHooks);
66591function createComponent(Ctor, data, context, children, tag) {
66592    if (isUndef(Ctor)) {
66593        return;
66594    }
66595    var baseCtor = context.$options._base;
66596    // plain options object: turn it into a constructor
66597    if (isObject(Ctor)) {
66598        Ctor = baseCtor.extend(Ctor);
66599    }
66600    // if at this stage it's not a constructor or an async component factory,
66601    // reject.
66602    if (typeof Ctor !== 'function') {
66603        if (true) {
66604            warn$2("Invalid Component definition: ".concat(String(Ctor)), context);
66605        }
66606        return;
66607    }
66608    // async component
66609    var asyncFactory;
66610    // @ts-expect-error
66611    if (isUndef(Ctor.cid)) {
66612        asyncFactory = Ctor;
66613        Ctor = resolveAsyncComponent(asyncFactory, baseCtor);
66614        if (Ctor === undefined) {
66615            // return a placeholder node for async component, which is rendered
66616            // as a comment node but preserves all the raw information for the node.
66617            // the information will be used for async server-rendering and hydration.
66618            return createAsyncPlaceholder(asyncFactory, data, context, children, tag);
66619        }
66620    }
66621    data = data || {};
66622    // resolve constructor options in case global mixins are applied after
66623    // component constructor creation
66624    resolveConstructorOptions(Ctor);
66625    // transform component v-model data into props & events
66626    if (isDef(data.model)) {
66627        // @ts-expect-error
66628        transformModel(Ctor.options, data);
66629    }
66630    // extract props
66631    // @ts-expect-error
66632    var propsData = extractPropsFromVNodeData(data, Ctor, tag);
66633    // functional component
66634    // @ts-expect-error
66635    if (isTrue(Ctor.options.functional)) {
66636        return createFunctionalComponent(Ctor, propsData, data, context, children);
66637    }
66638    // extract listeners, since these needs to be treated as
66639    // child component listeners instead of DOM listeners
66640    var listeners = data.on;
66641    // replace with listeners with .native modifier
66642    // so it gets processed during parent component patch.
66643    data.on = data.nativeOn;
66644    // @ts-expect-error
66645    if (isTrue(Ctor.options.abstract)) {
66646        // abstract components do not keep anything
66647        // other than props & listeners & slot
66648        // work around flow
66649        var slot = data.slot;
66650        data = {};
66651        if (slot) {
66652            data.slot = slot;
66653        }
66654    }
66655    // install component management hooks onto the placeholder node
66656    installComponentHooks(data);
66657    // return a placeholder vnode
66658    // @ts-expect-error
66659    var name = getComponentName(Ctor.options) || tag;
66660    var vnode = new VNode(
66661    // @ts-expect-error
66662    "vue-component-".concat(Ctor.cid).concat(name ? "-".concat(name) : ''), data, undefined, undefined, undefined, context, 
66663    // @ts-expect-error
66664    { Ctor: Ctor, propsData: propsData, listeners: listeners, tag: tag, children: children }, asyncFactory);
66665    return vnode;
66666}
66667function createComponentInstanceForVnode(
66668// we know it's MountedComponentVNode but flow doesn't
66669vnode, 
66670// activeInstance in lifecycle state
66671parent) {
66672    var options = {
66673        _isComponent: true,
66674        _parentVnode: vnode,
66675        parent: parent
66676    };
66677    // check inline-template render functions
66678    var inlineTemplate = vnode.data.inlineTemplate;
66679    if (isDef(inlineTemplate)) {
66680        options.render = inlineTemplate.render;
66681        options.staticRenderFns = inlineTemplate.staticRenderFns;
66682    }
66683    return new vnode.componentOptions.Ctor(options);
66684}
66685function installComponentHooks(data) {
66686    var hooks = data.hook || (data.hook = {});
66687    for (var i = 0; i < hooksToMerge.length; i++) {
66688        var key = hooksToMerge[i];
66689        var existing = hooks[key];
66690        var toMerge = componentVNodeHooks[key];
66691        // @ts-expect-error
66692        if (existing !== toMerge && !(existing && existing._merged)) {
66693            hooks[key] = existing ? mergeHook(toMerge, existing) : toMerge;
66694        }
66695    }
66696}
66697function mergeHook(f1, f2) {
66698    var merged = function (a, b) {
66699        // flow complains about extra args which is why we use any
66700        f1(a, b);
66701        f2(a, b);
66702    };
66703    merged._merged = true;
66704    return merged;
66705}
66706// transform component v-model info (value and callback) into
66707// prop and event handler respectively.
66708function transformModel(options, data) {
66709    var prop = (options.model && options.model.prop) || 'value';
66710    var event = (options.model && options.model.event) || 'input';
66711    (data.attrs || (data.attrs = {}))[prop] = data.model.value;
66712    var on = data.on || (data.on = {});
66713    var existing = on[event];
66714    var callback = data.model.callback;
66715    if (isDef(existing)) {
66716        if (isArray(existing)
66717            ? existing.indexOf(callback) === -1
66718            : existing !== callback) {
66719            on[event] = [callback].concat(existing);
66720        }
66721    }
66722    else {
66723        on[event] = callback;
66724    }
66725}
66726
66727var warn$2 = noop;
66728var tip = noop;
66729var generateComponentTrace; // work around flow check
66730var formatComponentName;
66731if (true) {
66732    var hasConsole_1 = typeof console !== 'undefined';
66733    var classifyRE_1 = /(?:^|[-_])(\w)/g;
66734    var classify_1 = function (str) {
66735        return str.replace(classifyRE_1, function (c) { return c.toUpperCase(); }).replace(/[-_]/g, '');
66736    };
66737    warn$2 = function (msg, vm) {
66738        if (vm === void 0) { vm = currentInstance; }
66739        var trace = vm ? generateComponentTrace(vm) : '';
66740        if (config.warnHandler) {
66741            config.warnHandler.call(null, msg, vm, trace);
66742        }
66743        else if (hasConsole_1 && !config.silent) {
66744            console.error("[Vue warn]: ".concat(msg).concat(trace));
66745        }
66746    };
66747    tip = function (msg, vm) {
66748        if (hasConsole_1 && !config.silent) {
66749            console.warn("[Vue tip]: ".concat(msg) + (vm ? generateComponentTrace(vm) : ''));
66750        }
66751    };
66752    formatComponentName = function (vm, includeFile) {
66753        if (vm.$root === vm) {
66754            return '<Root>';
66755        }
66756        var options = isFunction(vm) && vm.cid != null
66757            ? vm.options
66758            : vm._isVue
66759                ? vm.$options || vm.constructor.options
66760                : vm;
66761        var name = getComponentName(options);
66762        var file = options.__file;
66763        if (!name && file) {
66764            var match = file.match(/([^/\\]+)\.vue$/);
66765            name = match && match[1];
66766        }
66767        return ((name ? "<".concat(classify_1(name), ">") : "<Anonymous>") +
66768            (file && includeFile !== false ? " at ".concat(file) : ''));
66769    };
66770    var repeat_1 = function (str, n) {
66771        var res = '';
66772        while (n) {
66773            if (n % 2 === 1)
66774                res += str;
66775            if (n > 1)
66776                str += str;
66777            n >>= 1;
66778        }
66779        return res;
66780    };
66781    generateComponentTrace = function (vm) {
66782        if (vm._isVue && vm.$parent) {
66783            var tree = [];
66784            var currentRecursiveSequence = 0;
66785            while (vm) {
66786                if (tree.length > 0) {
66787                    var last = tree[tree.length - 1];
66788                    if (last.constructor === vm.constructor) {
66789                        currentRecursiveSequence++;
66790                        vm = vm.$parent;
66791                        continue;
66792                    }
66793                    else if (currentRecursiveSequence > 0) {
66794                        tree[tree.length - 1] = [last, currentRecursiveSequence];
66795                        currentRecursiveSequence = 0;
66796                    }
66797                }
66798                tree.push(vm);
66799                vm = vm.$parent;
66800            }
66801            return ('\n\nfound in\n\n' +
66802                tree
66803                    .map(function (vm, i) {
66804                    return "".concat(i === 0 ? '---> ' : repeat_1(' ', 5 + i * 2)).concat(isArray(vm)
66805                        ? "".concat(formatComponentName(vm[0]), "... (").concat(vm[1], " recursive calls)")
66806                        : formatComponentName(vm));
66807                })
66808                    .join('\n'));
66809        }
66810        else {
66811            return "\n\n(found in ".concat(formatComponentName(vm), ")");
66812        }
66813    };
66814}
66815
66816/**
66817 * Option overwriting strategies are functions that handle
66818 * how to merge a parent option value and a child option
66819 * value into the final value.
66820 */
66821var strats = config.optionMergeStrategies;
66822/**
66823 * Options with restrictions
66824 */
66825if (true) {
66826    strats.el = strats.propsData = function (parent, child, vm, key) {
66827        if (!vm) {
66828            warn$2("option \"".concat(key, "\" can only be used during instance ") +
66829                'creation with the `new` keyword.');
66830        }
66831        return defaultStrat(parent, child);
66832    };
66833}
66834/**
66835 * Helper that recursively merges two data objects together.
66836 */
66837function mergeData(to, from, recursive) {
66838    if (recursive === void 0) { recursive = true; }
66839    if (!from)
66840        return to;
66841    var key, toVal, fromVal;
66842    var keys = hasSymbol
66843        ? Reflect.ownKeys(from)
66844        : Object.keys(from);
66845    for (var i = 0; i < keys.length; i++) {
66846        key = keys[i];
66847        // in case the object is already observed...
66848        if (key === '__ob__')
66849            continue;
66850        toVal = to[key];
66851        fromVal = from[key];
66852        if (!recursive || !hasOwn(to, key)) {
66853            set(to, key, fromVal);
66854        }
66855        else if (toVal !== fromVal &&
66856            isPlainObject(toVal) &&
66857            isPlainObject(fromVal)) {
66858            mergeData(toVal, fromVal);
66859        }
66860    }
66861    return to;
66862}
66863/**
66864 * Data
66865 */
66866function mergeDataOrFn(parentVal, childVal, vm) {
66867    if (!vm) {
66868        // in a Vue.extend merge, both should be functions
66869        if (!childVal) {
66870            return parentVal;
66871        }
66872        if (!parentVal) {
66873            return childVal;
66874        }
66875        // when parentVal & childVal are both present,
66876        // we need to return a function that returns the
66877        // merged result of both functions... no need to
66878        // check if parentVal is a function here because
66879        // it has to be a function to pass previous merges.
66880        return function mergedDataFn() {
66881            return mergeData(isFunction(childVal) ? childVal.call(this, this) : childVal, isFunction(parentVal) ? parentVal.call(this, this) : parentVal);
66882        };
66883    }
66884    else {
66885        return function mergedInstanceDataFn() {
66886            // instance merge
66887            var instanceData = isFunction(childVal)
66888                ? childVal.call(vm, vm)
66889                : childVal;
66890            var defaultData = isFunction(parentVal)
66891                ? parentVal.call(vm, vm)
66892                : parentVal;
66893            if (instanceData) {
66894                return mergeData(instanceData, defaultData);
66895            }
66896            else {
66897                return defaultData;
66898            }
66899        };
66900    }
66901}
66902strats.data = function (parentVal, childVal, vm) {
66903    if (!vm) {
66904        if (childVal && typeof childVal !== 'function') {
66905             true &&
66906                warn$2('The "data" option should be a function ' +
66907                    'that returns a per-instance value in component ' +
66908                    'definitions.', vm);
66909            return parentVal;
66910        }
66911        return mergeDataOrFn(parentVal, childVal);
66912    }
66913    return mergeDataOrFn(parentVal, childVal, vm);
66914};
66915/**
66916 * Hooks and props are merged as arrays.
66917 */
66918function mergeLifecycleHook(parentVal, childVal) {
66919    var res = childVal
66920        ? parentVal
66921            ? parentVal.concat(childVal)
66922            : isArray(childVal)
66923                ? childVal
66924                : [childVal]
66925        : parentVal;
66926    return res ? dedupeHooks(res) : res;
66927}
66928function dedupeHooks(hooks) {
66929    var res = [];
66930    for (var i = 0; i < hooks.length; i++) {
66931        if (res.indexOf(hooks[i]) === -1) {
66932            res.push(hooks[i]);
66933        }
66934    }
66935    return res;
66936}
66937LIFECYCLE_HOOKS.forEach(function (hook) {
66938    strats[hook] = mergeLifecycleHook;
66939});
66940/**
66941 * Assets
66942 *
66943 * When a vm is present (instance creation), we need to do
66944 * a three-way merge between constructor options, instance
66945 * options and parent options.
66946 */
66947function mergeAssets(parentVal, childVal, vm, key) {
66948    var res = Object.create(parentVal || null);
66949    if (childVal) {
66950         true && assertObjectType(key, childVal, vm);
66951        return extend(res, childVal);
66952    }
66953    else {
66954        return res;
66955    }
66956}
66957ASSET_TYPES.forEach(function (type) {
66958    strats[type + 's'] = mergeAssets;
66959});
66960/**
66961 * Watchers.
66962 *
66963 * Watchers hashes should not overwrite one
66964 * another, so we merge them as arrays.
66965 */
66966strats.watch = function (parentVal, childVal, vm, key) {
66967    // work around Firefox's Object.prototype.watch...
66968    //@ts-expect-error work around
66969    if (parentVal === nativeWatch)
66970        parentVal = undefined;
66971    //@ts-expect-error work around
66972    if (childVal === nativeWatch)
66973        childVal = undefined;
66974    /* istanbul ignore if */
66975    if (!childVal)
66976        return Object.create(parentVal || null);
66977    if (true) {
66978        assertObjectType(key, childVal, vm);
66979    }
66980    if (!parentVal)
66981        return childVal;
66982    var ret = {};
66983    extend(ret, parentVal);
66984    for (var key_1 in childVal) {
66985        var parent_1 = ret[key_1];
66986        var child = childVal[key_1];
66987        if (parent_1 && !isArray(parent_1)) {
66988            parent_1 = [parent_1];
66989        }
66990        ret[key_1] = parent_1 ? parent_1.concat(child) : isArray(child) ? child : [child];
66991    }
66992    return ret;
66993};
66994/**
66995 * Other object hashes.
66996 */
66997strats.props =
66998    strats.methods =
66999        strats.inject =
67000            strats.computed =
67001                function (parentVal, childVal, vm, key) {
67002                    if (childVal && "development" !== 'production') {
67003                        assertObjectType(key, childVal, vm);
67004                    }
67005                    if (!parentVal)
67006                        return childVal;
67007                    var ret = Object.create(null);
67008                    extend(ret, parentVal);
67009                    if (childVal)
67010                        extend(ret, childVal);
67011                    return ret;
67012                };
67013strats.provide = function (parentVal, childVal) {
67014    if (!parentVal)
67015        return childVal;
67016    return function () {
67017        var ret = Object.create(null);
67018        mergeData(ret, isFunction(parentVal) ? parentVal.call(this) : parentVal);
67019        if (childVal) {
67020            mergeData(ret, isFunction(childVal) ? childVal.call(this) : childVal, false // non-recursive
67021            );
67022        }
67023        return ret;
67024    };
67025};
67026/**
67027 * Default strategy.
67028 */
67029var defaultStrat = function (parentVal, childVal) {
67030    return childVal === undefined ? parentVal : childVal;
67031};
67032/**
67033 * Validate component names
67034 */
67035function checkComponents(options) {
67036    for (var key in options.components) {
67037        validateComponentName(key);
67038    }
67039}
67040function validateComponentName(name) {
67041    if (!new RegExp("^[a-zA-Z][\\-\\.0-9_".concat(unicodeRegExp.source, "]*$")).test(name)) {
67042        warn$2('Invalid component name: "' +
67043            name +
67044            '". Component names ' +
67045            'should conform to valid custom element name in html5 specification.');
67046    }
67047    if (isBuiltInTag(name) || config.isReservedTag(name)) {
67048        warn$2('Do not use built-in or reserved HTML elements as component ' +
67049            'id: ' +
67050            name);
67051    }
67052}
67053/**
67054 * Ensure all props option syntax are normalized into the
67055 * Object-based format.
67056 */
67057function normalizeProps(options, vm) {
67058    var props = options.props;
67059    if (!props)
67060        return;
67061    var res = {};
67062    var i, val, name;
67063    if (isArray(props)) {
67064        i = props.length;
67065        while (i--) {
67066            val = props[i];
67067            if (typeof val === 'string') {
67068                name = camelize(val);
67069                res[name] = { type: null };
67070            }
67071            else if (true) {
67072                warn$2('props must be strings when using array syntax.');
67073            }
67074        }
67075    }
67076    else if (isPlainObject(props)) {
67077        for (var key in props) {
67078            val = props[key];
67079            name = camelize(key);
67080            res[name] = isPlainObject(val) ? val : { type: val };
67081        }
67082    }
67083    else if (true) {
67084        warn$2("Invalid value for option \"props\": expected an Array or an Object, " +
67085            "but got ".concat(toRawType(props), "."), vm);
67086    }
67087    options.props = res;
67088}
67089/**
67090 * Normalize all injections into Object-based format
67091 */
67092function normalizeInject(options, vm) {
67093    var inject = options.inject;
67094    if (!inject)
67095        return;
67096    var normalized = (options.inject = {});
67097    if (isArray(inject)) {
67098        for (var i = 0; i < inject.length; i++) {
67099            normalized[inject[i]] = { from: inject[i] };
67100        }
67101    }
67102    else if (isPlainObject(inject)) {
67103        for (var key in inject) {
67104            var val = inject[key];
67105            normalized[key] = isPlainObject(val)
67106                ? extend({ from: key }, val)
67107                : { from: val };
67108        }
67109    }
67110    else if (true) {
67111        warn$2("Invalid value for option \"inject\": expected an Array or an Object, " +
67112            "but got ".concat(toRawType(inject), "."), vm);
67113    }
67114}
67115/**
67116 * Normalize raw function directives into object format.
67117 */
67118function normalizeDirectives$1(options) {
67119    var dirs = options.directives;
67120    if (dirs) {
67121        for (var key in dirs) {
67122            var def = dirs[key];
67123            if (isFunction(def)) {
67124                dirs[key] = { bind: def, update: def };
67125            }
67126        }
67127    }
67128}
67129function assertObjectType(name, value, vm) {
67130    if (!isPlainObject(value)) {
67131        warn$2("Invalid value for option \"".concat(name, "\": expected an Object, ") +
67132            "but got ".concat(toRawType(value), "."), vm);
67133    }
67134}
67135/**
67136 * Merge two option objects into a new one.
67137 * Core utility used in both instantiation and inheritance.
67138 */
67139function mergeOptions(parent, child, vm) {
67140    if (true) {
67141        checkComponents(child);
67142    }
67143    if (isFunction(child)) {
67144        // @ts-expect-error
67145        child = child.options;
67146    }
67147    normalizeProps(child, vm);
67148    normalizeInject(child, vm);
67149    normalizeDirectives$1(child);
67150    // Apply extends and mixins on the child options,
67151    // but only if it is a raw options object that isn't
67152    // the result of another mergeOptions call.
67153    // Only merged options has the _base property.
67154    if (!child._base) {
67155        if (child.extends) {
67156            parent = mergeOptions(parent, child.extends, vm);
67157        }
67158        if (child.mixins) {
67159            for (var i = 0, l = child.mixins.length; i < l; i++) {
67160                parent = mergeOptions(parent, child.mixins[i], vm);
67161            }
67162        }
67163    }
67164    var options = {};
67165    var key;
67166    for (key in parent) {
67167        mergeField(key);
67168    }
67169    for (key in child) {
67170        if (!hasOwn(parent, key)) {
67171            mergeField(key);
67172        }
67173    }
67174    function mergeField(key) {
67175        var strat = strats[key] || defaultStrat;
67176        options[key] = strat(parent[key], child[key], vm, key);
67177    }
67178    return options;
67179}
67180/**
67181 * Resolve an asset.
67182 * This function is used because child instances need access
67183 * to assets defined in its ancestor chain.
67184 */
67185function resolveAsset(options, type, id, warnMissing) {
67186    /* istanbul ignore if */
67187    if (typeof id !== 'string') {
67188        return;
67189    }
67190    var assets = options[type];
67191    // check local registration variations first
67192    if (hasOwn(assets, id))
67193        return assets[id];
67194    var camelizedId = camelize(id);
67195    if (hasOwn(assets, camelizedId))
67196        return assets[camelizedId];
67197    var PascalCaseId = capitalize(camelizedId);
67198    if (hasOwn(assets, PascalCaseId))
67199        return assets[PascalCaseId];
67200    // fallback to prototype chain
67201    var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];
67202    if ( true && warnMissing && !res) {
67203        warn$2('Failed to resolve ' + type.slice(0, -1) + ': ' + id);
67204    }
67205    return res;
67206}
67207
67208function validateProp(key, propOptions, propsData, vm) {
67209    var prop = propOptions[key];
67210    var absent = !hasOwn(propsData, key);
67211    var value = propsData[key];
67212    // boolean casting
67213    var booleanIndex = getTypeIndex(Boolean, prop.type);
67214    if (booleanIndex > -1) {
67215        if (absent && !hasOwn(prop, 'default')) {
67216            value = false;
67217        }
67218        else if (value === '' || value === hyphenate(key)) {
67219            // only cast empty string / same name to boolean if
67220            // boolean has higher priority
67221            var stringIndex = getTypeIndex(String, prop.type);
67222            if (stringIndex < 0 || booleanIndex < stringIndex) {
67223                value = true;
67224            }
67225        }
67226    }
67227    // check default value
67228    if (value === undefined) {
67229        value = getPropDefaultValue(vm, prop, key);
67230        // since the default value is a fresh copy,
67231        // make sure to observe it.
67232        var prevShouldObserve = shouldObserve;
67233        toggleObserving(true);
67234        observe(value);
67235        toggleObserving(prevShouldObserve);
67236    }
67237    if (true) {
67238        assertProp(prop, key, value, vm, absent);
67239    }
67240    return value;
67241}
67242/**
67243 * Get the default value of a prop.
67244 */
67245function getPropDefaultValue(vm, prop, key) {
67246    // no default, return undefined
67247    if (!hasOwn(prop, 'default')) {
67248        return undefined;
67249    }
67250    var def = prop.default;
67251    // warn against non-factory defaults for Object & Array
67252    if ( true && isObject(def)) {
67253        warn$2('Invalid default value for prop "' +
67254            key +
67255            '": ' +
67256            'Props with type Object/Array must use a factory function ' +
67257            'to return the default value.', vm);
67258    }
67259    // the raw prop value was also undefined from previous render,
67260    // return previous default value to avoid unnecessary watcher trigger
67261    if (vm &&
67262        vm.$options.propsData &&
67263        vm.$options.propsData[key] === undefined &&
67264        vm._props[key] !== undefined) {
67265        return vm._props[key];
67266    }
67267    // call factory function for non-Function types
67268    // a value is Function if its prototype is function even across different execution context
67269    return isFunction(def) && getType(prop.type) !== 'Function'
67270        ? def.call(vm)
67271        : def;
67272}
67273/**
67274 * Assert whether a prop is valid.
67275 */
67276function assertProp(prop, name, value, vm, absent) {
67277    if (prop.required && absent) {
67278        warn$2('Missing required prop: "' + name + '"', vm);
67279        return;
67280    }
67281    if (value == null && !prop.required) {
67282        return;
67283    }
67284    var type = prop.type;
67285    var valid = !type || type === true;
67286    var expectedTypes = [];
67287    if (type) {
67288        if (!isArray(type)) {
67289            type = [type];
67290        }
67291        for (var i = 0; i < type.length && !valid; i++) {
67292            var assertedType = assertType(value, type[i], vm);
67293            expectedTypes.push(assertedType.expectedType || '');
67294            valid = assertedType.valid;
67295        }
67296    }
67297    var haveExpectedTypes = expectedTypes.some(function (t) { return t; });
67298    if (!valid && haveExpectedTypes) {
67299        warn$2(getInvalidTypeMessage(name, value, expectedTypes), vm);
67300        return;
67301    }
67302    var validator = prop.validator;
67303    if (validator) {
67304        if (!validator(value)) {
67305            warn$2('Invalid prop: custom validator check failed for prop "' + name + '".', vm);
67306        }
67307    }
67308}
67309var simpleCheckRE = /^(String|Number|Boolean|Function|Symbol|BigInt)$/;
67310function assertType(value, type, vm) {
67311    var valid;
67312    var expectedType = getType(type);
67313    if (simpleCheckRE.test(expectedType)) {
67314        var t = typeof value;
67315        valid = t === expectedType.toLowerCase();
67316        // for primitive wrapper objects
67317        if (!valid && t === 'object') {
67318            valid = value instanceof type;
67319        }
67320    }
67321    else if (expectedType === 'Object') {
67322        valid = isPlainObject(value);
67323    }
67324    else if (expectedType === 'Array') {
67325        valid = isArray(value);
67326    }
67327    else {
67328        try {
67329            valid = value instanceof type;
67330        }
67331        catch (e) {
67332            warn$2('Invalid prop type: "' + String(type) + '" is not a constructor', vm);
67333            valid = false;
67334        }
67335    }
67336    return {
67337        valid: valid,
67338        expectedType: expectedType
67339    };
67340}
67341var functionTypeCheckRE = /^\s*function (\w+)/;
67342/**
67343 * Use function string name to check built-in types,
67344 * because a simple equality check will fail when running
67345 * across different vms / iframes.
67346 */
67347function getType(fn) {
67348    var match = fn && fn.toString().match(functionTypeCheckRE);
67349    return match ? match[1] : '';
67350}
67351function isSameType(a, b) {
67352    return getType(a) === getType(b);
67353}
67354function getTypeIndex(type, expectedTypes) {
67355    if (!isArray(expectedTypes)) {
67356        return isSameType(expectedTypes, type) ? 0 : -1;
67357    }
67358    for (var i = 0, len = expectedTypes.length; i < len; i++) {
67359        if (isSameType(expectedTypes[i], type)) {
67360            return i;
67361        }
67362    }
67363    return -1;
67364}
67365function getInvalidTypeMessage(name, value, expectedTypes) {
67366    var message = "Invalid prop: type check failed for prop \"".concat(name, "\".") +
67367        " Expected ".concat(expectedTypes.map(capitalize).join(', '));
67368    var expectedType = expectedTypes[0];
67369    var receivedType = toRawType(value);
67370    // check if we need to specify expected value
67371    if (expectedTypes.length === 1 &&
67372        isExplicable(expectedType) &&
67373        isExplicable(typeof value) &&
67374        !isBoolean(expectedType, receivedType)) {
67375        message += " with value ".concat(styleValue(value, expectedType));
67376    }
67377    message += ", got ".concat(receivedType, " ");
67378    // check if we need to specify received value
67379    if (isExplicable(receivedType)) {
67380        message += "with value ".concat(styleValue(value, receivedType), ".");
67381    }
67382    return message;
67383}
67384function styleValue(value, type) {
67385    if (type === 'String') {
67386        return "\"".concat(value, "\"");
67387    }
67388    else if (type === 'Number') {
67389        return "".concat(Number(value));
67390    }
67391    else {
67392        return "".concat(value);
67393    }
67394}
67395var EXPLICABLE_TYPES = ['string', 'number', 'boolean'];
67396function isExplicable(value) {
67397    return EXPLICABLE_TYPES.some(function (elem) { return value.toLowerCase() === elem; });
67398}
67399function isBoolean() {
67400    var args = [];
67401    for (var _i = 0; _i < arguments.length; _i++) {
67402        args[_i] = arguments[_i];
67403    }
67404    return args.some(function (elem) { return elem.toLowerCase() === 'boolean'; });
67405}
67406
67407function Vue(options) {
67408    if ( true && !(this instanceof Vue)) {
67409        warn$2('Vue is a constructor and should be called with the `new` keyword');
67410    }
67411    this._init(options);
67412}
67413//@ts-expect-error Vue has function type
67414initMixin$1(Vue);
67415//@ts-expect-error Vue has function type
67416stateMixin(Vue);
67417//@ts-expect-error Vue has function type
67418eventsMixin(Vue);
67419//@ts-expect-error Vue has function type
67420lifecycleMixin(Vue);
67421//@ts-expect-error Vue has function type
67422renderMixin(Vue);
67423
67424function initUse(Vue) {
67425    Vue.use = function (plugin) {
67426        var installedPlugins = this._installedPlugins || (this._installedPlugins = []);
67427        if (installedPlugins.indexOf(plugin) > -1) {
67428            return this;
67429        }
67430        // additional parameters
67431        var args = toArray(arguments, 1);
67432        args.unshift(this);
67433        if (isFunction(plugin.install)) {
67434            plugin.install.apply(plugin, args);
67435        }
67436        else if (isFunction(plugin)) {
67437            plugin.apply(null, args);
67438        }
67439        installedPlugins.push(plugin);
67440        return this;
67441    };
67442}
67443
67444function initMixin(Vue) {
67445    Vue.mixin = function (mixin) {
67446        this.options = mergeOptions(this.options, mixin);
67447        return this;
67448    };
67449}
67450
67451function initExtend(Vue) {
67452    /**
67453     * Each instance constructor, including Vue, has a unique
67454     * cid. This enables us to create wrapped "child
67455     * constructors" for prototypal inheritance and cache them.
67456     */
67457    Vue.cid = 0;
67458    var cid = 1;
67459    /**
67460     * Class inheritance
67461     */
67462    Vue.extend = function (extendOptions) {
67463        extendOptions = extendOptions || {};
67464        var Super = this;
67465        var SuperId = Super.cid;
67466        var cachedCtors = extendOptions._Ctor || (extendOptions._Ctor = {});
67467        if (cachedCtors[SuperId]) {
67468            return cachedCtors[SuperId];
67469        }
67470        var name = getComponentName(extendOptions) || getComponentName(Super.options);
67471        if ( true && name) {
67472            validateComponentName(name);
67473        }
67474        var Sub = function VueComponent(options) {
67475            this._init(options);
67476        };
67477        Sub.prototype = Object.create(Super.prototype);
67478        Sub.prototype.constructor = Sub;
67479        Sub.cid = cid++;
67480        Sub.options = mergeOptions(Super.options, extendOptions);
67481        Sub['super'] = Super;
67482        // For props and computed properties, we define the proxy getters on
67483        // the Vue instances at extension time, on the extended prototype. This
67484        // avoids Object.defineProperty calls for each instance created.
67485        if (Sub.options.props) {
67486            initProps(Sub);
67487        }
67488        if (Sub.options.computed) {
67489            initComputed(Sub);
67490        }
67491        // allow further extension/mixin/plugin usage
67492        Sub.extend = Super.extend;
67493        Sub.mixin = Super.mixin;
67494        Sub.use = Super.use;
67495        // create asset registers, so extended classes
67496        // can have their private assets too.
67497        ASSET_TYPES.forEach(function (type) {
67498            Sub[type] = Super[type];
67499        });
67500        // enable recursive self-lookup
67501        if (name) {
67502            Sub.options.components[name] = Sub;
67503        }
67504        // keep a reference to the super options at extension time.
67505        // later at instantiation we can check if Super's options have
67506        // been updated.
67507        Sub.superOptions = Super.options;
67508        Sub.extendOptions = extendOptions;
67509        Sub.sealedOptions = extend({}, Sub.options);
67510        // cache constructor
67511        cachedCtors[SuperId] = Sub;
67512        return Sub;
67513    };
67514}
67515function initProps(Comp) {
67516    var props = Comp.options.props;
67517    for (var key in props) {
67518        proxy(Comp.prototype, "_props", key);
67519    }
67520}
67521function initComputed(Comp) {
67522    var computed = Comp.options.computed;
67523    for (var key in computed) {
67524        defineComputed(Comp.prototype, key, computed[key]);
67525    }
67526}
67527
67528function initAssetRegisters(Vue) {
67529    /**
67530     * Create asset registration methods.
67531     */
67532    ASSET_TYPES.forEach(function (type) {
67533        // @ts-expect-error function is not exact same type
67534        Vue[type] = function (id, definition) {
67535            if (!definition) {
67536                return this.options[type + 's'][id];
67537            }
67538            else {
67539                /* istanbul ignore if */
67540                if ( true && type === 'component') {
67541                    validateComponentName(id);
67542                }
67543                if (type === 'component' && isPlainObject(definition)) {
67544                    // @ts-expect-error
67545                    definition.name = definition.name || id;
67546                    definition = this.options._base.extend(definition);
67547                }
67548                if (type === 'directive' && isFunction(definition)) {
67549                    definition = { bind: definition, update: definition };
67550                }
67551                this.options[type + 's'][id] = definition;
67552                return definition;
67553            }
67554        };
67555    });
67556}
67557
67558function _getComponentName(opts) {
67559    return opts && (getComponentName(opts.Ctor.options) || opts.tag);
67560}
67561function matches(pattern, name) {
67562    if (isArray(pattern)) {
67563        return pattern.indexOf(name) > -1;
67564    }
67565    else if (typeof pattern === 'string') {
67566        return pattern.split(',').indexOf(name) > -1;
67567    }
67568    else if (isRegExp(pattern)) {
67569        return pattern.test(name);
67570    }
67571    /* istanbul ignore next */
67572    return false;
67573}
67574function pruneCache(keepAliveInstance, filter) {
67575    var cache = keepAliveInstance.cache, keys = keepAliveInstance.keys, _vnode = keepAliveInstance._vnode, $vnode = keepAliveInstance.$vnode;
67576    for (var key in cache) {
67577        var entry = cache[key];
67578        if (entry) {
67579            var name_1 = entry.name;
67580            if (name_1 && !filter(name_1)) {
67581                pruneCacheEntry(cache, key, keys, _vnode);
67582            }
67583        }
67584    }
67585    $vnode.componentOptions.children = undefined;
67586}
67587function pruneCacheEntry(cache, key, keys, current) {
67588    var entry = cache[key];
67589    if (entry && (!current || entry.tag !== current.tag)) {
67590        // @ts-expect-error can be undefined
67591        entry.componentInstance.$destroy();
67592    }
67593    cache[key] = null;
67594    remove$2(keys, key);
67595}
67596var patternTypes = [String, RegExp, Array];
67597// TODO defineComponent
67598var KeepAlive = {
67599    name: 'keep-alive',
67600    abstract: true,
67601    props: {
67602        include: patternTypes,
67603        exclude: patternTypes,
67604        max: [String, Number]
67605    },
67606    methods: {
67607        cacheVNode: function () {
67608            var _a = this, cache = _a.cache, keys = _a.keys, vnodeToCache = _a.vnodeToCache, keyToCache = _a.keyToCache;
67609            if (vnodeToCache) {
67610                var tag = vnodeToCache.tag, componentInstance = vnodeToCache.componentInstance, componentOptions = vnodeToCache.componentOptions;
67611                cache[keyToCache] = {
67612                    name: _getComponentName(componentOptions),
67613                    tag: tag,
67614                    componentInstance: componentInstance
67615                };
67616                keys.push(keyToCache);
67617                // prune oldest entry
67618                if (this.max && keys.length > parseInt(this.max)) {
67619                    pruneCacheEntry(cache, keys[0], keys, this._vnode);
67620                }
67621                this.vnodeToCache = null;
67622            }
67623        }
67624    },
67625    created: function () {
67626        this.cache = Object.create(null);
67627        this.keys = [];
67628    },
67629    destroyed: function () {
67630        for (var key in this.cache) {
67631            pruneCacheEntry(this.cache, key, this.keys);
67632        }
67633    },
67634    mounted: function () {
67635        var _this = this;
67636        this.cacheVNode();
67637        this.$watch('include', function (val) {
67638            pruneCache(_this, function (name) { return matches(val, name); });
67639        });
67640        this.$watch('exclude', function (val) {
67641            pruneCache(_this, function (name) { return !matches(val, name); });
67642        });
67643    },
67644    updated: function () {
67645        this.cacheVNode();
67646    },
67647    render: function () {
67648        var slot = this.$slots.default;
67649        var vnode = getFirstComponentChild(slot);
67650        var componentOptions = vnode && vnode.componentOptions;
67651        if (componentOptions) {
67652            // check pattern
67653            var name_2 = _getComponentName(componentOptions);
67654            var _a = this, include = _a.include, exclude = _a.exclude;
67655            if (
67656            // not included
67657            (include && (!name_2 || !matches(include, name_2))) ||
67658                // excluded
67659                (exclude && name_2 && matches(exclude, name_2))) {
67660                return vnode;
67661            }
67662            var _b = this, cache = _b.cache, keys = _b.keys;
67663            var key = vnode.key == null
67664                ? // same constructor may get registered as different local components
67665                    // so cid alone is not enough (#3269)
67666                    componentOptions.Ctor.cid +
67667                        (componentOptions.tag ? "::".concat(componentOptions.tag) : '')
67668                : vnode.key;
67669            if (cache[key]) {
67670                vnode.componentInstance = cache[key].componentInstance;
67671                // make current key freshest
67672                remove$2(keys, key);
67673                keys.push(key);
67674            }
67675            else {
67676                // delay setting the cache until update
67677                this.vnodeToCache = vnode;
67678                this.keyToCache = key;
67679            }
67680            // @ts-expect-error can vnode.data can be undefined
67681            vnode.data.keepAlive = true;
67682        }
67683        return vnode || (slot && slot[0]);
67684    }
67685};
67686
67687var builtInComponents = {
67688    KeepAlive: KeepAlive
67689};
67690
67691function initGlobalAPI(Vue) {
67692    // config
67693    var configDef = {};
67694    configDef.get = function () { return config; };
67695    if (true) {
67696        configDef.set = function () {
67697            warn$2('Do not replace the Vue.config object, set individual fields instead.');
67698        };
67699    }
67700    Object.defineProperty(Vue, 'config', configDef);
67701    // exposed util methods.
67702    // NOTE: these are not considered part of the public API - avoid relying on
67703    // them unless you are aware of the risk.
67704    Vue.util = {
67705        warn: warn$2,
67706        extend: extend,
67707        mergeOptions: mergeOptions,
67708        defineReactive: defineReactive
67709    };
67710    Vue.set = set;
67711    Vue.delete = del;
67712    Vue.nextTick = nextTick;
67713    // 2.6 explicit observable API
67714    Vue.observable = function (obj) {
67715        observe(obj);
67716        return obj;
67717    };
67718    Vue.options = Object.create(null);
67719    ASSET_TYPES.forEach(function (type) {
67720        Vue.options[type + 's'] = Object.create(null);
67721    });
67722    // this is used to identify the "base" constructor to extend all plain-object
67723    // components with in Weex's multi-instance scenarios.
67724    Vue.options._base = Vue;
67725    extend(Vue.options.components, builtInComponents);
67726    initUse(Vue);
67727    initMixin(Vue);
67728    initExtend(Vue);
67729    initAssetRegisters(Vue);
67730}
67731
67732initGlobalAPI(Vue);
67733Object.defineProperty(Vue.prototype, '$isServer', {
67734    get: isServerRendering
67735});
67736Object.defineProperty(Vue.prototype, '$ssrContext', {
67737    get: function () {
67738        /* istanbul ignore next */
67739        return this.$vnode && this.$vnode.ssrContext;
67740    }
67741});
67742// expose FunctionalRenderContext for ssr runtime helper installation
67743Object.defineProperty(Vue, 'FunctionalRenderContext', {
67744    value: FunctionalRenderContext
67745});
67746Vue.version = version;
67747
67748// these are reserved for web because they are directly compiled away
67749// during template compilation
67750var isReservedAttr = makeMap('style,class');
67751// attributes that should be using props for binding
67752var acceptValue = makeMap('input,textarea,option,select,progress');
67753var mustUseProp = function (tag, type, attr) {
67754    return ((attr === 'value' && acceptValue(tag) && type !== 'button') ||
67755        (attr === 'selected' && tag === 'option') ||
67756        (attr === 'checked' && tag === 'input') ||
67757        (attr === 'muted' && tag === 'video'));
67758};
67759var isEnumeratedAttr = makeMap('contenteditable,draggable,spellcheck');
67760var isValidContentEditableValue = makeMap('events,caret,typing,plaintext-only');
67761var convertEnumeratedValue = function (key, value) {
67762    return isFalsyAttrValue(value) || value === 'false'
67763        ? 'false'
67764        : // allow arbitrary string value for contenteditable
67765            key === 'contenteditable' && isValidContentEditableValue(value)
67766                ? value
67767                : 'true';
67768};
67769var isBooleanAttr = makeMap('allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,' +
67770    'default,defaultchecked,defaultmuted,defaultselected,defer,disabled,' +
67771    'enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,' +
67772    'muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,' +
67773    'required,reversed,scoped,seamless,selected,sortable,' +
67774    'truespeed,typemustmatch,visible');
67775var xlinkNS = 'http://www.w3.org/1999/xlink';
67776var isXlink = function (name) {
67777    return name.charAt(5) === ':' && name.slice(0, 5) === 'xlink';
67778};
67779var getXlinkProp = function (name) {
67780    return isXlink(name) ? name.slice(6, name.length) : '';
67781};
67782var isFalsyAttrValue = function (val) {
67783    return val == null || val === false;
67784};
67785
67786function genClassForVnode(vnode) {
67787    var data = vnode.data;
67788    var parentNode = vnode;
67789    var childNode = vnode;
67790    while (isDef(childNode.componentInstance)) {
67791        childNode = childNode.componentInstance._vnode;
67792        if (childNode && childNode.data) {
67793            data = mergeClassData(childNode.data, data);
67794        }
67795    }
67796    // @ts-expect-error parentNode.parent not VNodeWithData
67797    while (isDef((parentNode = parentNode.parent))) {
67798        if (parentNode && parentNode.data) {
67799            data = mergeClassData(data, parentNode.data);
67800        }
67801    }
67802    return renderClass(data.staticClass, data.class);
67803}
67804function mergeClassData(child, parent) {
67805    return {
67806        staticClass: concat(child.staticClass, parent.staticClass),
67807        class: isDef(child.class) ? [child.class, parent.class] : parent.class
67808    };
67809}
67810function renderClass(staticClass, dynamicClass) {
67811    if (isDef(staticClass) || isDef(dynamicClass)) {
67812        return concat(staticClass, stringifyClass(dynamicClass));
67813    }
67814    /* istanbul ignore next */
67815    return '';
67816}
67817function concat(a, b) {
67818    return a ? (b ? a + ' ' + b : a) : b || '';
67819}
67820function stringifyClass(value) {
67821    if (Array.isArray(value)) {
67822        return stringifyArray(value);
67823    }
67824    if (isObject(value)) {
67825        return stringifyObject(value);
67826    }
67827    if (typeof value === 'string') {
67828        return value;
67829    }
67830    /* istanbul ignore next */
67831    return '';
67832}
67833function stringifyArray(value) {
67834    var res = '';
67835    var stringified;
67836    for (var i = 0, l = value.length; i < l; i++) {
67837        if (isDef((stringified = stringifyClass(value[i]))) && stringified !== '') {
67838            if (res)
67839                res += ' ';
67840            res += stringified;
67841        }
67842    }
67843    return res;
67844}
67845function stringifyObject(value) {
67846    var res = '';
67847    for (var key in value) {
67848        if (value[key]) {
67849            if (res)
67850                res += ' ';
67851            res += key;
67852        }
67853    }
67854    return res;
67855}
67856
67857var namespaceMap = {
67858    svg: 'http://www.w3.org/2000/svg',
67859    math: 'http://www.w3.org/1998/Math/MathML'
67860};
67861var isHTMLTag = makeMap('html,body,base,head,link,meta,style,title,' +
67862    'address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,' +
67863    'div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,' +
67864    'a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,' +
67865    's,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,' +
67866    'embed,object,param,source,canvas,script,noscript,del,ins,' +
67867    'caption,col,colgroup,table,thead,tbody,td,th,tr,' +
67868    'button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,' +
67869    'output,progress,select,textarea,' +
67870    'details,dialog,menu,menuitem,summary,' +
67871    'content,element,shadow,template,blockquote,iframe,tfoot');
67872// this map is intentionally selective, only covering SVG elements that may
67873// contain child elements.
67874var isSVG = makeMap('svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,' +
67875    'foreignobject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,' +
67876    'polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view', true);
67877var isPreTag = function (tag) { return tag === 'pre'; };
67878var isReservedTag = function (tag) {
67879    return isHTMLTag(tag) || isSVG(tag);
67880};
67881function getTagNamespace(tag) {
67882    if (isSVG(tag)) {
67883        return 'svg';
67884    }
67885    // basic support for MathML
67886    // note it doesn't support other MathML elements being component roots
67887    if (tag === 'math') {
67888        return 'math';
67889    }
67890}
67891var unknownElementCache = Object.create(null);
67892function isUnknownElement(tag) {
67893    /* istanbul ignore if */
67894    if (!inBrowser) {
67895        return true;
67896    }
67897    if (isReservedTag(tag)) {
67898        return false;
67899    }
67900    tag = tag.toLowerCase();
67901    /* istanbul ignore if */
67902    if (unknownElementCache[tag] != null) {
67903        return unknownElementCache[tag];
67904    }
67905    var el = document.createElement(tag);
67906    if (tag.indexOf('-') > -1) {
67907        // https://stackoverflow.com/a/28210364/1070244
67908        return (unknownElementCache[tag] =
67909            el.constructor === window.HTMLUnknownElement ||
67910                el.constructor === window.HTMLElement);
67911    }
67912    else {
67913        return (unknownElementCache[tag] = /HTMLUnknownElement/.test(el.toString()));
67914    }
67915}
67916var isTextInputType = makeMap('text,number,password,search,email,tel,url');
67917
67918/**
67919 * Query an element selector if it's not an element already.
67920 */
67921function query(el) {
67922    if (typeof el === 'string') {
67923        var selected = document.querySelector(el);
67924        if (!selected) {
67925             true && warn$2('Cannot find element: ' + el);
67926            return document.createElement('div');
67927        }
67928        return selected;
67929    }
67930    else {
67931        return el;
67932    }
67933}
67934
67935function createElement(tagName, vnode) {
67936    var elm = document.createElement(tagName);
67937    if (tagName !== 'select') {
67938        return elm;
67939    }
67940    // false or null will remove the attribute but undefined will not
67941    if (vnode.data &&
67942        vnode.data.attrs &&
67943        vnode.data.attrs.multiple !== undefined) {
67944        elm.setAttribute('multiple', 'multiple');
67945    }
67946    return elm;
67947}
67948function createElementNS(namespace, tagName) {
67949    return document.createElementNS(namespaceMap[namespace], tagName);
67950}
67951function createTextNode(text) {
67952    return document.createTextNode(text);
67953}
67954function createComment(text) {
67955    return document.createComment(text);
67956}
67957function insertBefore(parentNode, newNode, referenceNode) {
67958    parentNode.insertBefore(newNode, referenceNode);
67959}
67960function removeChild(node, child) {
67961    node.removeChild(child);
67962}
67963function appendChild(node, child) {
67964    node.appendChild(child);
67965}
67966function parentNode(node) {
67967    return node.parentNode;
67968}
67969function nextSibling(node) {
67970    return node.nextSibling;
67971}
67972function tagName(node) {
67973    return node.tagName;
67974}
67975function setTextContent(node, text) {
67976    node.textContent = text;
67977}
67978function setStyleScope(node, scopeId) {
67979    node.setAttribute(scopeId, '');
67980}
67981
67982var nodeOps = /*#__PURE__*/Object.freeze({
67983  __proto__: null,
67984  createElement: createElement,
67985  createElementNS: createElementNS,
67986  createTextNode: createTextNode,
67987  createComment: createComment,
67988  insertBefore: insertBefore,
67989  removeChild: removeChild,
67990  appendChild: appendChild,
67991  parentNode: parentNode,
67992  nextSibling: nextSibling,
67993  tagName: tagName,
67994  setTextContent: setTextContent,
67995  setStyleScope: setStyleScope
67996});
67997
67998var ref = {
67999    create: function (_, vnode) {
68000        registerRef(vnode);
68001    },
68002    update: function (oldVnode, vnode) {
68003        if (oldVnode.data.ref !== vnode.data.ref) {
68004            registerRef(oldVnode, true);
68005            registerRef(vnode);
68006        }
68007    },
68008    destroy: function (vnode) {
68009        registerRef(vnode, true);
68010    }
68011};
68012function registerRef(vnode, isRemoval) {
68013    var ref = vnode.data.ref;
68014    if (!isDef(ref))
68015        return;
68016    var vm = vnode.context;
68017    var refValue = vnode.componentInstance || vnode.elm;
68018    var value = isRemoval ? null : refValue;
68019    var $refsValue = isRemoval ? undefined : refValue;
68020    if (isFunction(ref)) {
68021        invokeWithErrorHandling(ref, vm, [value], vm, "template ref function");
68022        return;
68023    }
68024    var isFor = vnode.data.refInFor;
68025    var _isString = typeof ref === 'string' || typeof ref === 'number';
68026    var _isRef = isRef(ref);
68027    var refs = vm.$refs;
68028    if (_isString || _isRef) {
68029        if (isFor) {
68030            var existing = _isString ? refs[ref] : ref.value;
68031            if (isRemoval) {
68032                isArray(existing) && remove$2(existing, refValue);
68033            }
68034            else {
68035                if (!isArray(existing)) {
68036                    if (_isString) {
68037                        refs[ref] = [refValue];
68038                        setSetupRef(vm, ref, refs[ref]);
68039                    }
68040                    else {
68041                        ref.value = [refValue];
68042                    }
68043                }
68044                else if (!existing.includes(refValue)) {
68045                    existing.push(refValue);
68046                }
68047            }
68048        }
68049        else if (_isString) {
68050            if (isRemoval && refs[ref] !== refValue) {
68051                return;
68052            }
68053            refs[ref] = $refsValue;
68054            setSetupRef(vm, ref, value);
68055        }
68056        else if (_isRef) {
68057            if (isRemoval && ref.value !== refValue) {
68058                return;
68059            }
68060            ref.value = value;
68061        }
68062        else if (true) {
68063            warn$2("Invalid template ref type: ".concat(typeof ref));
68064        }
68065    }
68066}
68067function setSetupRef(_a, key, val) {
68068    var _setupState = _a._setupState;
68069    if (_setupState && hasOwn(_setupState, key)) {
68070        if (isRef(_setupState[key])) {
68071            _setupState[key].value = val;
68072        }
68073        else {
68074            _setupState[key] = val;
68075        }
68076    }
68077}
68078
68079/**
68080 * Virtual DOM patching algorithm based on Snabbdom by
68081 * Simon Friis Vindum (@paldepind)
68082 * Licensed under the MIT License
68083 * https://github.com/paldepind/snabbdom/blob/master/LICENSE
68084 *
68085 * modified by Evan You (@yyx990803)
68086 *
68087 * Not type-checking this because this file is perf-critical and the cost
68088 * of making flow understand it is not worth it.
68089 */
68090var emptyNode = new VNode('', {}, []);
68091var hooks = ['create', 'activate', 'update', 'remove', 'destroy'];
68092function sameVnode(a, b) {
68093    return (a.key === b.key &&
68094        a.asyncFactory === b.asyncFactory &&
68095        ((a.tag === b.tag &&
68096            a.isComment === b.isComment &&
68097            isDef(a.data) === isDef(b.data) &&
68098            sameInputType(a, b)) ||
68099            (isTrue(a.isAsyncPlaceholder) && isUndef(b.asyncFactory.error))));
68100}
68101function sameInputType(a, b) {
68102    if (a.tag !== 'input')
68103        return true;
68104    var i;
68105    var typeA = isDef((i = a.data)) && isDef((i = i.attrs)) && i.type;
68106    var typeB = isDef((i = b.data)) && isDef((i = i.attrs)) && i.type;
68107    return typeA === typeB || (isTextInputType(typeA) && isTextInputType(typeB));
68108}
68109function createKeyToOldIdx(children, beginIdx, endIdx) {
68110    var i, key;
68111    var map = {};
68112    for (i = beginIdx; i <= endIdx; ++i) {
68113        key = children[i].key;
68114        if (isDef(key))
68115            map[key] = i;
68116    }
68117    return map;
68118}
68119function createPatchFunction(backend) {
68120    var i, j;
68121    var cbs = {};
68122    var modules = backend.modules, nodeOps = backend.nodeOps;
68123    for (i = 0; i < hooks.length; ++i) {
68124        cbs[hooks[i]] = [];
68125        for (j = 0; j < modules.length; ++j) {
68126            if (isDef(modules[j][hooks[i]])) {
68127                cbs[hooks[i]].push(modules[j][hooks[i]]);
68128            }
68129        }
68130    }
68131    function emptyNodeAt(elm) {
68132        return new VNode(nodeOps.tagName(elm).toLowerCase(), {}, [], undefined, elm);
68133    }
68134    function createRmCb(childElm, listeners) {
68135        function remove() {
68136            if (--remove.listeners === 0) {
68137                removeNode(childElm);
68138            }
68139        }
68140        remove.listeners = listeners;
68141        return remove;
68142    }
68143    function removeNode(el) {
68144        var parent = nodeOps.parentNode(el);
68145        // element may have already been removed due to v-html / v-text
68146        if (isDef(parent)) {
68147            nodeOps.removeChild(parent, el);
68148        }
68149    }
68150    function isUnknownElement(vnode, inVPre) {
68151        return (!inVPre &&
68152            !vnode.ns &&
68153            !(config.ignoredElements.length &&
68154                config.ignoredElements.some(function (ignore) {
68155                    return isRegExp(ignore)
68156                        ? ignore.test(vnode.tag)
68157                        : ignore === vnode.tag;
68158                })) &&
68159            config.isUnknownElement(vnode.tag));
68160    }
68161    var creatingElmInVPre = 0;
68162    function createElm(vnode, insertedVnodeQueue, parentElm, refElm, nested, ownerArray, index) {
68163        if (isDef(vnode.elm) && isDef(ownerArray)) {
68164            // This vnode was used in a previous render!
68165            // now it's used as a new node, overwriting its elm would cause
68166            // potential patch errors down the road when it's used as an insertion
68167            // reference node. Instead, we clone the node on-demand before creating
68168            // associated DOM element for it.
68169            vnode = ownerArray[index] = cloneVNode(vnode);
68170        }
68171        vnode.isRootInsert = !nested; // for transition enter check
68172        if (createComponent(vnode, insertedVnodeQueue, parentElm, refElm)) {
68173            return;
68174        }
68175        var data = vnode.data;
68176        var children = vnode.children;
68177        var tag = vnode.tag;
68178        if (isDef(tag)) {
68179            if (true) {
68180                if (data && data.pre) {
68181                    creatingElmInVPre++;
68182                }
68183                if (isUnknownElement(vnode, creatingElmInVPre)) {
68184                    warn$2('Unknown custom element: <' +
68185                        tag +
68186                        '> - did you ' +
68187                        'register the component correctly? For recursive components, ' +
68188                        'make sure to provide the "name" option.', vnode.context);
68189                }
68190            }
68191            vnode.elm = vnode.ns
68192                ? nodeOps.createElementNS(vnode.ns, tag)
68193                : nodeOps.createElement(tag, vnode);
68194            setScope(vnode);
68195            createChildren(vnode, children, insertedVnodeQueue);
68196            if (isDef(data)) {
68197                invokeCreateHooks(vnode, insertedVnodeQueue);
68198            }
68199            insert(parentElm, vnode.elm, refElm);
68200            if ( true && data && data.pre) {
68201                creatingElmInVPre--;
68202            }
68203        }
68204        else if (isTrue(vnode.isComment)) {
68205            vnode.elm = nodeOps.createComment(vnode.text);
68206            insert(parentElm, vnode.elm, refElm);
68207        }
68208        else {
68209            vnode.elm = nodeOps.createTextNode(vnode.text);
68210            insert(parentElm, vnode.elm, refElm);
68211        }
68212    }
68213    function createComponent(vnode, insertedVnodeQueue, parentElm, refElm) {
68214        var i = vnode.data;
68215        if (isDef(i)) {
68216            var isReactivated = isDef(vnode.componentInstance) && i.keepAlive;
68217            if (isDef((i = i.hook)) && isDef((i = i.init))) {
68218                i(vnode, false /* hydrating */);
68219            }
68220            // after calling the init hook, if the vnode is a child component
68221            // it should've created a child instance and mounted it. the child
68222            // component also has set the placeholder vnode's elm.
68223            // in that case we can just return the element and be done.
68224            if (isDef(vnode.componentInstance)) {
68225                initComponent(vnode, insertedVnodeQueue);
68226                insert(parentElm, vnode.elm, refElm);
68227                if (isTrue(isReactivated)) {
68228                    reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm);
68229                }
68230                return true;
68231            }
68232        }
68233    }
68234    function initComponent(vnode, insertedVnodeQueue) {
68235        if (isDef(vnode.data.pendingInsert)) {
68236            insertedVnodeQueue.push.apply(insertedVnodeQueue, vnode.data.pendingInsert);
68237            vnode.data.pendingInsert = null;
68238        }
68239        vnode.elm = vnode.componentInstance.$el;
68240        if (isPatchable(vnode)) {
68241            invokeCreateHooks(vnode, insertedVnodeQueue);
68242            setScope(vnode);
68243        }
68244        else {
68245            // empty component root.
68246            // skip all element-related modules except for ref (#3455)
68247            registerRef(vnode);
68248            // make sure to invoke the insert hook
68249            insertedVnodeQueue.push(vnode);
68250        }
68251    }
68252    function reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm) {
68253        var i;
68254        // hack for #4339: a reactivated component with inner transition
68255        // does not trigger because the inner node's created hooks are not called
68256        // again. It's not ideal to involve module-specific logic in here but
68257        // there doesn't seem to be a better way to do it.
68258        var innerNode = vnode;
68259        while (innerNode.componentInstance) {
68260            innerNode = innerNode.componentInstance._vnode;
68261            if (isDef((i = innerNode.data)) && isDef((i = i.transition))) {
68262                for (i = 0; i < cbs.activate.length; ++i) {
68263                    cbs.activate[i](emptyNode, innerNode);
68264                }
68265                insertedVnodeQueue.push(innerNode);
68266                break;
68267            }
68268        }
68269        // unlike a newly created component,
68270        // a reactivated keep-alive component doesn't insert itself
68271        insert(parentElm, vnode.elm, refElm);
68272    }
68273    function insert(parent, elm, ref) {
68274        if (isDef(parent)) {
68275            if (isDef(ref)) {
68276                if (nodeOps.parentNode(ref) === parent) {
68277                    nodeOps.insertBefore(parent, elm, ref);
68278                }
68279            }
68280            else {
68281                nodeOps.appendChild(parent, elm);
68282            }
68283        }
68284    }
68285    function createChildren(vnode, children, insertedVnodeQueue) {
68286        if (isArray(children)) {
68287            if (true) {
68288                checkDuplicateKeys(children);
68289            }
68290            for (var i_1 = 0; i_1 < children.length; ++i_1) {
68291                createElm(children[i_1], insertedVnodeQueue, vnode.elm, null, true, children, i_1);
68292            }
68293        }
68294        else if (isPrimitive(vnode.text)) {
68295            nodeOps.appendChild(vnode.elm, nodeOps.createTextNode(String(vnode.text)));
68296        }
68297    }
68298    function isPatchable(vnode) {
68299        while (vnode.componentInstance) {
68300            vnode = vnode.componentInstance._vnode;
68301        }
68302        return isDef(vnode.tag);
68303    }
68304    function invokeCreateHooks(vnode, insertedVnodeQueue) {
68305        for (var i_2 = 0; i_2 < cbs.create.length; ++i_2) {
68306            cbs.create[i_2](emptyNode, vnode);
68307        }
68308        i = vnode.data.hook; // Reuse variable
68309        if (isDef(i)) {
68310            if (isDef(i.create))
68311                i.create(emptyNode, vnode);
68312            if (isDef(i.insert))
68313                insertedVnodeQueue.push(vnode);
68314        }
68315    }
68316    // set scope id attribute for scoped CSS.
68317    // this is implemented as a special case to avoid the overhead
68318    // of going through the normal attribute patching process.
68319    function setScope(vnode) {
68320        var i;
68321        if (isDef((i = vnode.fnScopeId))) {
68322            nodeOps.setStyleScope(vnode.elm, i);
68323        }
68324        else {
68325            var ancestor = vnode;
68326            while (ancestor) {
68327                if (isDef((i = ancestor.context)) && isDef((i = i.$options._scopeId))) {
68328                    nodeOps.setStyleScope(vnode.elm, i);
68329                }
68330                ancestor = ancestor.parent;
68331            }
68332        }
68333        // for slot content they should also get the scopeId from the host instance.
68334        if (isDef((i = activeInstance)) &&
68335            i !== vnode.context &&
68336            i !== vnode.fnContext &&
68337            isDef((i = i.$options._scopeId))) {
68338            nodeOps.setStyleScope(vnode.elm, i);
68339        }
68340    }
68341    function addVnodes(parentElm, refElm, vnodes, startIdx, endIdx, insertedVnodeQueue) {
68342        for (; startIdx <= endIdx; ++startIdx) {
68343            createElm(vnodes[startIdx], insertedVnodeQueue, parentElm, refElm, false, vnodes, startIdx);
68344        }
68345    }
68346    function invokeDestroyHook(vnode) {
68347        var i, j;
68348        var data = vnode.data;
68349        if (isDef(data)) {
68350            if (isDef((i = data.hook)) && isDef((i = i.destroy)))
68351                i(vnode);
68352            for (i = 0; i < cbs.destroy.length; ++i)
68353                cbs.destroy[i](vnode);
68354        }
68355        if (isDef((i = vnode.children))) {
68356            for (j = 0; j < vnode.children.length; ++j) {
68357                invokeDestroyHook(vnode.children[j]);
68358            }
68359        }
68360    }
68361    function removeVnodes(vnodes, startIdx, endIdx) {
68362        for (; startIdx <= endIdx; ++startIdx) {
68363            var ch = vnodes[startIdx];
68364            if (isDef(ch)) {
68365                if (isDef(ch.tag)) {
68366                    removeAndInvokeRemoveHook(ch);
68367                    invokeDestroyHook(ch);
68368                }
68369                else {
68370                    // Text node
68371                    removeNode(ch.elm);
68372                }
68373            }
68374        }
68375    }
68376    function removeAndInvokeRemoveHook(vnode, rm) {
68377        if (isDef(rm) || isDef(vnode.data)) {
68378            var i_3;
68379            var listeners = cbs.remove.length + 1;
68380            if (isDef(rm)) {
68381                // we have a recursively passed down rm callback
68382                // increase the listeners count
68383                rm.listeners += listeners;
68384            }
68385            else {
68386                // directly removing
68387                rm = createRmCb(vnode.elm, listeners);
68388            }
68389            // recursively invoke hooks on child component root node
68390            if (isDef((i_3 = vnode.componentInstance)) &&
68391                isDef((i_3 = i_3._vnode)) &&
68392                isDef(i_3.data)) {
68393                removeAndInvokeRemoveHook(i_3, rm);
68394            }
68395            for (i_3 = 0; i_3 < cbs.remove.length; ++i_3) {
68396                cbs.remove[i_3](vnode, rm);
68397            }
68398            if (isDef((i_3 = vnode.data.hook)) && isDef((i_3 = i_3.remove))) {
68399                i_3(vnode, rm);
68400            }
68401            else {
68402                rm();
68403            }
68404        }
68405        else {
68406            removeNode(vnode.elm);
68407        }
68408    }
68409    function updateChildren(parentElm, oldCh, newCh, insertedVnodeQueue, removeOnly) {
68410        var oldStartIdx = 0;
68411        var newStartIdx = 0;
68412        var oldEndIdx = oldCh.length - 1;
68413        var oldStartVnode = oldCh[0];
68414        var oldEndVnode = oldCh[oldEndIdx];
68415        var newEndIdx = newCh.length - 1;
68416        var newStartVnode = newCh[0];
68417        var newEndVnode = newCh[newEndIdx];
68418        var oldKeyToIdx, idxInOld, vnodeToMove, refElm;
68419        // removeOnly is a special flag used only by <transition-group>
68420        // to ensure removed elements stay in correct relative positions
68421        // during leaving transitions
68422        var canMove = !removeOnly;
68423        if (true) {
68424            checkDuplicateKeys(newCh);
68425        }
68426        while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {
68427            if (isUndef(oldStartVnode)) {
68428                oldStartVnode = oldCh[++oldStartIdx]; // Vnode has been moved left
68429            }
68430            else if (isUndef(oldEndVnode)) {
68431                oldEndVnode = oldCh[--oldEndIdx];
68432            }
68433            else if (sameVnode(oldStartVnode, newStartVnode)) {
68434                patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);
68435                oldStartVnode = oldCh[++oldStartIdx];
68436                newStartVnode = newCh[++newStartIdx];
68437            }
68438            else if (sameVnode(oldEndVnode, newEndVnode)) {
68439                patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx);
68440                oldEndVnode = oldCh[--oldEndIdx];
68441                newEndVnode = newCh[--newEndIdx];
68442            }
68443            else if (sameVnode(oldStartVnode, newEndVnode)) {
68444                // Vnode moved right
68445                patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx);
68446                canMove &&
68447                    nodeOps.insertBefore(parentElm, oldStartVnode.elm, nodeOps.nextSibling(oldEndVnode.elm));
68448                oldStartVnode = oldCh[++oldStartIdx];
68449                newEndVnode = newCh[--newEndIdx];
68450            }
68451            else if (sameVnode(oldEndVnode, newStartVnode)) {
68452                // Vnode moved left
68453                patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);
68454                canMove &&
68455                    nodeOps.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);
68456                oldEndVnode = oldCh[--oldEndIdx];
68457                newStartVnode = newCh[++newStartIdx];
68458            }
68459            else {
68460                if (isUndef(oldKeyToIdx))
68461                    oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx);
68462                idxInOld = isDef(newStartVnode.key)
68463                    ? oldKeyToIdx[newStartVnode.key]
68464                    : findIdxInOld(newStartVnode, oldCh, oldStartIdx, oldEndIdx);
68465                if (isUndef(idxInOld)) {
68466                    // New element
68467                    createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);
68468                }
68469                else {
68470                    vnodeToMove = oldCh[idxInOld];
68471                    if (sameVnode(vnodeToMove, newStartVnode)) {
68472                        patchVnode(vnodeToMove, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);
68473                        oldCh[idxInOld] = undefined;
68474                        canMove &&
68475                            nodeOps.insertBefore(parentElm, vnodeToMove.elm, oldStartVnode.elm);
68476                    }
68477                    else {
68478                        // same key but different element. treat as new element
68479                        createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);
68480                    }
68481                }
68482                newStartVnode = newCh[++newStartIdx];
68483            }
68484        }
68485        if (oldStartIdx > oldEndIdx) {
68486            refElm = isUndef(newCh[newEndIdx + 1]) ? null : newCh[newEndIdx + 1].elm;
68487            addVnodes(parentElm, refElm, newCh, newStartIdx, newEndIdx, insertedVnodeQueue);
68488        }
68489        else if (newStartIdx > newEndIdx) {
68490            removeVnodes(oldCh, oldStartIdx, oldEndIdx);
68491        }
68492    }
68493    function checkDuplicateKeys(children) {
68494        var seenKeys = {};
68495        for (var i_4 = 0; i_4 < children.length; i_4++) {
68496            var vnode = children[i_4];
68497            var key = vnode.key;
68498            if (isDef(key)) {
68499                if (seenKeys[key]) {
68500                    warn$2("Duplicate keys detected: '".concat(key, "'. This may cause an update error."), vnode.context);
68501                }
68502                else {
68503                    seenKeys[key] = true;
68504                }
68505            }
68506        }
68507    }
68508    function findIdxInOld(node, oldCh, start, end) {
68509        for (var i_5 = start; i_5 < end; i_5++) {
68510            var c = oldCh[i_5];
68511            if (isDef(c) && sameVnode(node, c))
68512                return i_5;
68513        }
68514    }
68515    function patchVnode(oldVnode, vnode, insertedVnodeQueue, ownerArray, index, removeOnly) {
68516        if (oldVnode === vnode) {
68517            return;
68518        }
68519        if (isDef(vnode.elm) && isDef(ownerArray)) {
68520            // clone reused vnode
68521            vnode = ownerArray[index] = cloneVNode(vnode);
68522        }
68523        var elm = (vnode.elm = oldVnode.elm);
68524        if (isTrue(oldVnode.isAsyncPlaceholder)) {
68525            if (isDef(vnode.asyncFactory.resolved)) {
68526                hydrate(oldVnode.elm, vnode, insertedVnodeQueue);
68527            }
68528            else {
68529                vnode.isAsyncPlaceholder = true;
68530            }
68531            return;
68532        }
68533        // reuse element for static trees.
68534        // note we only do this if the vnode is cloned -
68535        // if the new node is not cloned it means the render functions have been
68536        // reset by the hot-reload-api and we need to do a proper re-render.
68537        if (isTrue(vnode.isStatic) &&
68538            isTrue(oldVnode.isStatic) &&
68539            vnode.key === oldVnode.key &&
68540            (isTrue(vnode.isCloned) || isTrue(vnode.isOnce))) {
68541            vnode.componentInstance = oldVnode.componentInstance;
68542            return;
68543        }
68544        var i;
68545        var data = vnode.data;
68546        if (isDef(data) && isDef((i = data.hook)) && isDef((i = i.prepatch))) {
68547            i(oldVnode, vnode);
68548        }
68549        var oldCh = oldVnode.children;
68550        var ch = vnode.children;
68551        if (isDef(data) && isPatchable(vnode)) {
68552            for (i = 0; i < cbs.update.length; ++i)
68553                cbs.update[i](oldVnode, vnode);
68554            if (isDef((i = data.hook)) && isDef((i = i.update)))
68555                i(oldVnode, vnode);
68556        }
68557        if (isUndef(vnode.text)) {
68558            if (isDef(oldCh) && isDef(ch)) {
68559                if (oldCh !== ch)
68560                    updateChildren(elm, oldCh, ch, insertedVnodeQueue, removeOnly);
68561            }
68562            else if (isDef(ch)) {
68563                if (true) {
68564                    checkDuplicateKeys(ch);
68565                }
68566                if (isDef(oldVnode.text))
68567                    nodeOps.setTextContent(elm, '');
68568                addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);
68569            }
68570            else if (isDef(oldCh)) {
68571                removeVnodes(oldCh, 0, oldCh.length - 1);
68572            }
68573            else if (isDef(oldVnode.text)) {
68574                nodeOps.setTextContent(elm, '');
68575            }
68576        }
68577        else if (oldVnode.text !== vnode.text) {
68578            nodeOps.setTextContent(elm, vnode.text);
68579        }
68580        if (isDef(data)) {
68581            if (isDef((i = data.hook)) && isDef((i = i.postpatch)))
68582                i(oldVnode, vnode);
68583        }
68584    }
68585    function invokeInsertHook(vnode, queue, initial) {
68586        // delay insert hooks for component root nodes, invoke them after the
68587        // element is really inserted
68588        if (isTrue(initial) && isDef(vnode.parent)) {
68589            vnode.parent.data.pendingInsert = queue;
68590        }
68591        else {
68592            for (var i_6 = 0; i_6 < queue.length; ++i_6) {
68593                queue[i_6].data.hook.insert(queue[i_6]);
68594            }
68595        }
68596    }
68597    var hydrationBailed = false;
68598    // list of modules that can skip create hook during hydration because they
68599    // are already rendered on the client or has no need for initialization
68600    // Note: style is excluded because it relies on initial clone for future
68601    // deep updates (#7063).
68602    var isRenderedModule = makeMap('attrs,class,staticClass,staticStyle,key');
68603    // Note: this is a browser-only function so we can assume elms are DOM nodes.
68604    function hydrate(elm, vnode, insertedVnodeQueue, inVPre) {
68605        var i;
68606        var tag = vnode.tag, data = vnode.data, children = vnode.children;
68607        inVPre = inVPre || (data && data.pre);
68608        vnode.elm = elm;
68609        if (isTrue(vnode.isComment) && isDef(vnode.asyncFactory)) {
68610            vnode.isAsyncPlaceholder = true;
68611            return true;
68612        }
68613        // assert node match
68614        if (true) {
68615            if (!assertNodeMatch(elm, vnode, inVPre)) {
68616                return false;
68617            }
68618        }
68619        if (isDef(data)) {
68620            if (isDef((i = data.hook)) && isDef((i = i.init)))
68621                i(vnode, true /* hydrating */);
68622            if (isDef((i = vnode.componentInstance))) {
68623                // child component. it should have hydrated its own tree.
68624                initComponent(vnode, insertedVnodeQueue);
68625                return true;
68626            }
68627        }
68628        if (isDef(tag)) {
68629            if (isDef(children)) {
68630                // empty element, allow client to pick up and populate children
68631                if (!elm.hasChildNodes()) {
68632                    createChildren(vnode, children, insertedVnodeQueue);
68633                }
68634                else {
68635                    // v-html and domProps: innerHTML
68636                    if (isDef((i = data)) &&
68637                        isDef((i = i.domProps)) &&
68638                        isDef((i = i.innerHTML))) {
68639                        if (i !== elm.innerHTML) {
68640                            /* istanbul ignore if */
68641                            if ( true &&
68642                                typeof console !== 'undefined' &&
68643                                !hydrationBailed) {
68644                                hydrationBailed = true;
68645                                console.warn('Parent: ', elm);
68646                                console.warn('server innerHTML: ', i);
68647                                console.warn('client innerHTML: ', elm.innerHTML);
68648                            }
68649                            return false;
68650                        }
68651                    }
68652                    else {
68653                        // iterate and compare children lists
68654                        var childrenMatch = true;
68655                        var childNode = elm.firstChild;
68656                        for (var i_7 = 0; i_7 < children.length; i_7++) {
68657                            if (!childNode ||
68658                                !hydrate(childNode, children[i_7], insertedVnodeQueue, inVPre)) {
68659                                childrenMatch = false;
68660                                break;
68661                            }
68662                            childNode = childNode.nextSibling;
68663                        }
68664                        // if childNode is not null, it means the actual childNodes list is
68665                        // longer than the virtual children list.
68666                        if (!childrenMatch || childNode) {
68667                            /* istanbul ignore if */
68668                            if ( true &&
68669                                typeof console !== 'undefined' &&
68670                                !hydrationBailed) {
68671                                hydrationBailed = true;
68672                                console.warn('Parent: ', elm);
68673                                console.warn('Mismatching childNodes vs. VNodes: ', elm.childNodes, children);
68674                            }
68675                            return false;
68676                        }
68677                    }
68678                }
68679            }
68680            if (isDef(data)) {
68681                var fullInvoke = false;
68682                for (var key in data) {
68683                    if (!isRenderedModule(key)) {
68684                        fullInvoke = true;
68685                        invokeCreateHooks(vnode, insertedVnodeQueue);
68686                        break;
68687                    }
68688                }
68689                if (!fullInvoke && data['class']) {
68690                    // ensure collecting deps for deep class bindings for future updates
68691                    traverse(data['class']);
68692                }
68693            }
68694        }
68695        else if (elm.data !== vnode.text) {
68696            elm.data = vnode.text;
68697        }
68698        return true;
68699    }
68700    function assertNodeMatch(node, vnode, inVPre) {
68701        if (isDef(vnode.tag)) {
68702            return (vnode.tag.indexOf('vue-component') === 0 ||
68703                (!isUnknownElement(vnode, inVPre) &&
68704                    vnode.tag.toLowerCase() ===
68705                        (node.tagName && node.tagName.toLowerCase())));
68706        }
68707        else {
68708            return node.nodeType === (vnode.isComment ? 8 : 3);
68709        }
68710    }
68711    return function patch(oldVnode, vnode, hydrating, removeOnly) {
68712        if (isUndef(vnode)) {
68713            if (isDef(oldVnode))
68714                invokeDestroyHook(oldVnode);
68715            return;
68716        }
68717        var isInitialPatch = false;
68718        var insertedVnodeQueue = [];
68719        if (isUndef(oldVnode)) {
68720            // empty mount (likely as component), create new root element
68721            isInitialPatch = true;
68722            createElm(vnode, insertedVnodeQueue);
68723        }
68724        else {
68725            var isRealElement = isDef(oldVnode.nodeType);
68726            if (!isRealElement && sameVnode(oldVnode, vnode)) {
68727                // patch existing root node
68728                patchVnode(oldVnode, vnode, insertedVnodeQueue, null, null, removeOnly);
68729            }
68730            else {
68731                if (isRealElement) {
68732                    // mounting to a real element
68733                    // check if this is server-rendered content and if we can perform
68734                    // a successful hydration.
68735                    if (oldVnode.nodeType === 1 && oldVnode.hasAttribute(SSR_ATTR)) {
68736                        oldVnode.removeAttribute(SSR_ATTR);
68737                        hydrating = true;
68738                    }
68739                    if (isTrue(hydrating)) {
68740                        if (hydrate(oldVnode, vnode, insertedVnodeQueue)) {
68741                            invokeInsertHook(vnode, insertedVnodeQueue, true);
68742                            return oldVnode;
68743                        }
68744                        else if (true) {
68745                            warn$2('The client-side rendered virtual DOM tree is not matching ' +
68746                                'server-rendered content. This is likely caused by incorrect ' +
68747                                'HTML markup, for example nesting block-level elements inside ' +
68748                                '<p>, or missing <tbody>. Bailing hydration and performing ' +
68749                                'full client-side render.');
68750                        }
68751                    }
68752                    // either not server-rendered, or hydration failed.
68753                    // create an empty node and replace it
68754                    oldVnode = emptyNodeAt(oldVnode);
68755                }
68756                // replacing existing element
68757                var oldElm = oldVnode.elm;
68758                var parentElm = nodeOps.parentNode(oldElm);
68759                // create new node
68760                createElm(vnode, insertedVnodeQueue, 
68761                // extremely rare edge case: do not insert if old element is in a
68762                // leaving transition. Only happens when combining transition +
68763                // keep-alive + HOCs. (#4590)
68764                oldElm._leaveCb ? null : parentElm, nodeOps.nextSibling(oldElm));
68765                // update parent placeholder node element, recursively
68766                if (isDef(vnode.parent)) {
68767                    var ancestor = vnode.parent;
68768                    var patchable = isPatchable(vnode);
68769                    while (ancestor) {
68770                        for (var i_8 = 0; i_8 < cbs.destroy.length; ++i_8) {
68771                            cbs.destroy[i_8](ancestor);
68772                        }
68773                        ancestor.elm = vnode.elm;
68774                        if (patchable) {
68775                            for (var i_9 = 0; i_9 < cbs.create.length; ++i_9) {
68776                                cbs.create[i_9](emptyNode, ancestor);
68777                            }
68778                            // #6513
68779                            // invoke insert hooks that may have been merged by create hooks.
68780                            // e.g. for directives that uses the "inserted" hook.
68781                            var insert_1 = ancestor.data.hook.insert;
68782                            if (insert_1.merged) {
68783                                // start at index 1 to avoid re-invoking component mounted hook
68784                                // clone insert hooks to avoid being mutated during iteration.
68785                                // e.g. for customed directives under transition group.
68786                                var cloned = insert_1.fns.slice(1);
68787                                for (var i_10 = 0; i_10 < cloned.length; i_10++) {
68788                                    cloned[i_10]();
68789                                }
68790                            }
68791                        }
68792                        else {
68793                            registerRef(ancestor);
68794                        }
68795                        ancestor = ancestor.parent;
68796                    }
68797                }
68798                // destroy old node
68799                if (isDef(parentElm)) {
68800                    removeVnodes([oldVnode], 0, 0);
68801                }
68802                else if (isDef(oldVnode.tag)) {
68803                    invokeDestroyHook(oldVnode);
68804                }
68805            }
68806        }
68807        invokeInsertHook(vnode, insertedVnodeQueue, isInitialPatch);
68808        return vnode.elm;
68809    };
68810}
68811
68812var directives$1 = {
68813    create: updateDirectives,
68814    update: updateDirectives,
68815    destroy: function unbindDirectives(vnode) {
68816        // @ts-expect-error emptyNode is not VNodeWithData
68817        updateDirectives(vnode, emptyNode);
68818    }
68819};
68820function updateDirectives(oldVnode, vnode) {
68821    if (oldVnode.data.directives || vnode.data.directives) {
68822        _update(oldVnode, vnode);
68823    }
68824}
68825function _update(oldVnode, vnode) {
68826    var isCreate = oldVnode === emptyNode;
68827    var isDestroy = vnode === emptyNode;
68828    var oldDirs = normalizeDirectives(oldVnode.data.directives, oldVnode.context);
68829    var newDirs = normalizeDirectives(vnode.data.directives, vnode.context);
68830    var dirsWithInsert = [];
68831    var dirsWithPostpatch = [];
68832    var key, oldDir, dir;
68833    for (key in newDirs) {
68834        oldDir = oldDirs[key];
68835        dir = newDirs[key];
68836        if (!oldDir) {
68837            // new directive, bind
68838            callHook(dir, 'bind', vnode, oldVnode);
68839            if (dir.def && dir.def.inserted) {
68840                dirsWithInsert.push(dir);
68841            }
68842        }
68843        else {
68844            // existing directive, update
68845            dir.oldValue = oldDir.value;
68846            dir.oldArg = oldDir.arg;
68847            callHook(dir, 'update', vnode, oldVnode);
68848            if (dir.def && dir.def.componentUpdated) {
68849                dirsWithPostpatch.push(dir);
68850            }
68851        }
68852    }
68853    if (dirsWithInsert.length) {
68854        var callInsert = function () {
68855            for (var i = 0; i < dirsWithInsert.length; i++) {
68856                callHook(dirsWithInsert[i], 'inserted', vnode, oldVnode);
68857            }
68858        };
68859        if (isCreate) {
68860            mergeVNodeHook(vnode, 'insert', callInsert);
68861        }
68862        else {
68863            callInsert();
68864        }
68865    }
68866    if (dirsWithPostpatch.length) {
68867        mergeVNodeHook(vnode, 'postpatch', function () {
68868            for (var i = 0; i < dirsWithPostpatch.length; i++) {
68869                callHook(dirsWithPostpatch[i], 'componentUpdated', vnode, oldVnode);
68870            }
68871        });
68872    }
68873    if (!isCreate) {
68874        for (key in oldDirs) {
68875            if (!newDirs[key]) {
68876                // no longer present, unbind
68877                callHook(oldDirs[key], 'unbind', oldVnode, oldVnode, isDestroy);
68878            }
68879        }
68880    }
68881}
68882var emptyModifiers = Object.create(null);
68883function normalizeDirectives(dirs, vm) {
68884    var res = Object.create(null);
68885    if (!dirs) {
68886        // $flow-disable-line
68887        return res;
68888    }
68889    var i, dir;
68890    for (i = 0; i < dirs.length; i++) {
68891        dir = dirs[i];
68892        if (!dir.modifiers) {
68893            // $flow-disable-line
68894            dir.modifiers = emptyModifiers;
68895        }
68896        res[getRawDirName(dir)] = dir;
68897        if (vm._setupState && vm._setupState.__sfc) {
68898            var setupDef = dir.def || resolveAsset(vm, '_setupState', 'v-' + dir.name);
68899            if (typeof setupDef === 'function') {
68900                dir.def = {
68901                    bind: setupDef,
68902                    update: setupDef,
68903                };
68904            }
68905            else {
68906                dir.def = setupDef;
68907            }
68908        }
68909        dir.def = dir.def || resolveAsset(vm.$options, 'directives', dir.name, true);
68910    }
68911    // $flow-disable-line
68912    return res;
68913}
68914function getRawDirName(dir) {
68915    return (dir.rawName || "".concat(dir.name, ".").concat(Object.keys(dir.modifiers || {}).join('.')));
68916}
68917function callHook(dir, hook, vnode, oldVnode, isDestroy) {
68918    var fn = dir.def && dir.def[hook];
68919    if (fn) {
68920        try {
68921            fn(vnode.elm, dir, vnode, oldVnode, isDestroy);
68922        }
68923        catch (e) {
68924            handleError(e, vnode.context, "directive ".concat(dir.name, " ").concat(hook, " hook"));
68925        }
68926    }
68927}
68928
68929var baseModules = [ref, directives$1];
68930
68931function updateAttrs(oldVnode, vnode) {
68932    var opts = vnode.componentOptions;
68933    if (isDef(opts) && opts.Ctor.options.inheritAttrs === false) {
68934        return;
68935    }
68936    if (isUndef(oldVnode.data.attrs) && isUndef(vnode.data.attrs)) {
68937        return;
68938    }
68939    var key, cur, old;
68940    var elm = vnode.elm;
68941    var oldAttrs = oldVnode.data.attrs || {};
68942    var attrs = vnode.data.attrs || {};
68943    // clone observed objects, as the user probably wants to mutate it
68944    if (isDef(attrs.__ob__) || isTrue(attrs._v_attr_proxy)) {
68945        attrs = vnode.data.attrs = extend({}, attrs);
68946    }
68947    for (key in attrs) {
68948        cur = attrs[key];
68949        old = oldAttrs[key];
68950        if (old !== cur) {
68951            setAttr(elm, key, cur, vnode.data.pre);
68952        }
68953    }
68954    // #4391: in IE9, setting type can reset value for input[type=radio]
68955    // #6666: IE/Edge forces progress value down to 1 before setting a max
68956    /* istanbul ignore if */
68957    if ((isIE || isEdge) && attrs.value !== oldAttrs.value) {
68958        setAttr(elm, 'value', attrs.value);
68959    }
68960    for (key in oldAttrs) {
68961        if (isUndef(attrs[key])) {
68962            if (isXlink(key)) {
68963                elm.removeAttributeNS(xlinkNS, getXlinkProp(key));
68964            }
68965            else if (!isEnumeratedAttr(key)) {
68966                elm.removeAttribute(key);
68967            }
68968        }
68969    }
68970}
68971function setAttr(el, key, value, isInPre) {
68972    if (isInPre || el.tagName.indexOf('-') > -1) {
68973        baseSetAttr(el, key, value);
68974    }
68975    else if (isBooleanAttr(key)) {
68976        // set attribute for blank value
68977        // e.g. <option disabled>Select one</option>
68978        if (isFalsyAttrValue(value)) {
68979            el.removeAttribute(key);
68980        }
68981        else {
68982            // technically allowfullscreen is a boolean attribute for <iframe>,
68983            // but Flash expects a value of "true" when used on <embed> tag
68984            value = key === 'allowfullscreen' && el.tagName === 'EMBED' ? 'true' : key;
68985            el.setAttribute(key, value);
68986        }
68987    }
68988    else if (isEnumeratedAttr(key)) {
68989        el.setAttribute(key, convertEnumeratedValue(key, value));
68990    }
68991    else if (isXlink(key)) {
68992        if (isFalsyAttrValue(value)) {
68993            el.removeAttributeNS(xlinkNS, getXlinkProp(key));
68994        }
68995        else {
68996            el.setAttributeNS(xlinkNS, key, value);
68997        }
68998    }
68999    else {
69000        baseSetAttr(el, key, value);
69001    }
69002}
69003function baseSetAttr(el, key, value) {
69004    if (isFalsyAttrValue(value)) {
69005        el.removeAttribute(key);
69006    }
69007    else {
69008        // #7138: IE10 & 11 fires input event when setting placeholder on
69009        // <textarea>... block the first input event and remove the blocker
69010        // immediately.
69011        /* istanbul ignore if */
69012        if (isIE &&
69013            !isIE9 &&
69014            el.tagName === 'TEXTAREA' &&
69015            key === 'placeholder' &&
69016            value !== '' &&
69017            !el.__ieph) {
69018            var blocker_1 = function (e) {
69019                e.stopImmediatePropagation();
69020                el.removeEventListener('input', blocker_1);
69021            };
69022            el.addEventListener('input', blocker_1);
69023            // $flow-disable-line
69024            el.__ieph = true; /* IE placeholder patched */
69025        }
69026        el.setAttribute(key, value);
69027    }
69028}
69029var attrs = {
69030    create: updateAttrs,
69031    update: updateAttrs
69032};
69033
69034function updateClass(oldVnode, vnode) {
69035    var el = vnode.elm;
69036    var data = vnode.data;
69037    var oldData = oldVnode.data;
69038    if (isUndef(data.staticClass) &&
69039        isUndef(data.class) &&
69040        (isUndef(oldData) ||
69041            (isUndef(oldData.staticClass) && isUndef(oldData.class)))) {
69042        return;
69043    }
69044    var cls = genClassForVnode(vnode);
69045    // handle transition classes
69046    var transitionClass = el._transitionClasses;
69047    if (isDef(transitionClass)) {
69048        cls = concat(cls, stringifyClass(transitionClass));
69049    }
69050    // set the class
69051    if (cls !== el._prevClass) {
69052        el.setAttribute('class', cls);
69053        el._prevClass = cls;
69054    }
69055}
69056var klass$1 = {
69057    create: updateClass,
69058    update: updateClass
69059};
69060
69061var validDivisionCharRE = /[\w).+\-_$\]]/;
69062function parseFilters(exp) {
69063    var inSingle = false;
69064    var inDouble = false;
69065    var inTemplateString = false;
69066    var inRegex = false;
69067    var curly = 0;
69068    var square = 0;
69069    var paren = 0;
69070    var lastFilterIndex = 0;
69071    var c, prev, i, expression, filters;
69072    for (i = 0; i < exp.length; i++) {
69073        prev = c;
69074        c = exp.charCodeAt(i);
69075        if (inSingle) {
69076            if (c === 0x27 && prev !== 0x5c)
69077                inSingle = false;
69078        }
69079        else if (inDouble) {
69080            if (c === 0x22 && prev !== 0x5c)
69081                inDouble = false;
69082        }
69083        else if (inTemplateString) {
69084            if (c === 0x60 && prev !== 0x5c)
69085                inTemplateString = false;
69086        }
69087        else if (inRegex) {
69088            if (c === 0x2f && prev !== 0x5c)
69089                inRegex = false;
69090        }
69091        else if (c === 0x7c && // pipe
69092            exp.charCodeAt(i + 1) !== 0x7c &&
69093            exp.charCodeAt(i - 1) !== 0x7c &&
69094            !curly &&
69095            !square &&
69096            !paren) {
69097            if (expression === undefined) {
69098                // first filter, end of expression
69099                lastFilterIndex = i + 1;
69100                expression = exp.slice(0, i).trim();
69101            }
69102            else {
69103                pushFilter();
69104            }
69105        }
69106        else {
69107            switch (c) {
69108                case 0x22:
69109                    inDouble = true;
69110                    break; // "
69111                case 0x27:
69112                    inSingle = true;
69113                    break; // '
69114                case 0x60:
69115                    inTemplateString = true;
69116                    break; // `
69117                case 0x28:
69118                    paren++;
69119                    break; // (
69120                case 0x29:
69121                    paren--;
69122                    break; // )
69123                case 0x5b:
69124                    square++;
69125                    break; // [
69126                case 0x5d:
69127                    square--;
69128                    break; // ]
69129                case 0x7b:
69130                    curly++;
69131                    break; // {
69132                case 0x7d:
69133                    curly--;
69134                    break; // }
69135            }
69136            if (c === 0x2f) {
69137                // /
69138                var j = i - 1;
69139                var p 
69140                // find first non-whitespace prev char
69141                = void 0;
69142                // find first non-whitespace prev char
69143                for (; j >= 0; j--) {
69144                    p = exp.charAt(j);
69145                    if (p !== ' ')
69146                        break;
69147                }
69148                if (!p || !validDivisionCharRE.test(p)) {
69149                    inRegex = true;
69150                }
69151            }
69152        }
69153    }
69154    if (expression === undefined) {
69155        expression = exp.slice(0, i).trim();
69156    }
69157    else if (lastFilterIndex !== 0) {
69158        pushFilter();
69159    }
69160    function pushFilter() {
69161        (filters || (filters = [])).push(exp.slice(lastFilterIndex, i).trim());
69162        lastFilterIndex = i + 1;
69163    }
69164    if (filters) {
69165        for (i = 0; i < filters.length; i++) {
69166            expression = wrapFilter(expression, filters[i]);
69167        }
69168    }
69169    return expression;
69170}
69171function wrapFilter(exp, filter) {
69172    var i = filter.indexOf('(');
69173    if (i < 0) {
69174        // _f: resolveFilter
69175        return "_f(\"".concat(filter, "\")(").concat(exp, ")");
69176    }
69177    else {
69178        var name_1 = filter.slice(0, i);
69179        var args = filter.slice(i + 1);
69180        return "_f(\"".concat(name_1, "\")(").concat(exp).concat(args !== ')' ? ',' + args : args);
69181    }
69182}
69183
69184/* eslint-disable no-unused-vars */
69185function baseWarn(msg, range) {
69186    console.error("[Vue compiler]: ".concat(msg));
69187}
69188/* eslint-enable no-unused-vars */
69189function pluckModuleFunction(modules, key) {
69190    return modules ? modules.map(function (m) { return m[key]; }).filter(function (_) { return _; }) : [];
69191}
69192function addProp(el, name, value, range, dynamic) {
69193    (el.props || (el.props = [])).push(rangeSetItem({ name: name, value: value, dynamic: dynamic }, range));
69194    el.plain = false;
69195}
69196function addAttr(el, name, value, range, dynamic) {
69197    var attrs = dynamic
69198        ? el.dynamicAttrs || (el.dynamicAttrs = [])
69199        : el.attrs || (el.attrs = []);
69200    attrs.push(rangeSetItem({ name: name, value: value, dynamic: dynamic }, range));
69201    el.plain = false;
69202}
69203// add a raw attr (use this in preTransforms)
69204function addRawAttr(el, name, value, range) {
69205    el.attrsMap[name] = value;
69206    el.attrsList.push(rangeSetItem({ name: name, value: value }, range));
69207}
69208function addDirective(el, name, rawName, value, arg, isDynamicArg, modifiers, range) {
69209    (el.directives || (el.directives = [])).push(rangeSetItem({
69210        name: name,
69211        rawName: rawName,
69212        value: value,
69213        arg: arg,
69214        isDynamicArg: isDynamicArg,
69215        modifiers: modifiers
69216    }, range));
69217    el.plain = false;
69218}
69219function prependModifierMarker(symbol, name, dynamic) {
69220    return dynamic ? "_p(".concat(name, ",\"").concat(symbol, "\")") : symbol + name; // mark the event as captured
69221}
69222function addHandler(el, name, value, modifiers, important, warn, range, dynamic) {
69223    modifiers = modifiers || emptyObject;
69224    // warn prevent and passive modifier
69225    /* istanbul ignore if */
69226    if ( true && warn && modifiers.prevent && modifiers.passive) {
69227        warn("passive and prevent can't be used together. " +
69228            "Passive handler can't prevent default event.", range);
69229    }
69230    // normalize click.right and click.middle since they don't actually fire
69231    // this is technically browser-specific, but at least for now browsers are
69232    // the only target envs that have right/middle clicks.
69233    if (modifiers.right) {
69234        if (dynamic) {
69235            name = "(".concat(name, ")==='click'?'contextmenu':(").concat(name, ")");
69236        }
69237        else if (name === 'click') {
69238            name = 'contextmenu';
69239            delete modifiers.right;
69240        }
69241    }
69242    else if (modifiers.middle) {
69243        if (dynamic) {
69244            name = "(".concat(name, ")==='click'?'mouseup':(").concat(name, ")");
69245        }
69246        else if (name === 'click') {
69247            name = 'mouseup';
69248        }
69249    }
69250    // check capture modifier
69251    if (modifiers.capture) {
69252        delete modifiers.capture;
69253        name = prependModifierMarker('!', name, dynamic);
69254    }
69255    if (modifiers.once) {
69256        delete modifiers.once;
69257        name = prependModifierMarker('~', name, dynamic);
69258    }
69259    /* istanbul ignore if */
69260    if (modifiers.passive) {
69261        delete modifiers.passive;
69262        name = prependModifierMarker('&', name, dynamic);
69263    }
69264    var events;
69265    if (modifiers.native) {
69266        delete modifiers.native;
69267        events = el.nativeEvents || (el.nativeEvents = {});
69268    }
69269    else {
69270        events = el.events || (el.events = {});
69271    }
69272    var newHandler = rangeSetItem({ value: value.trim(), dynamic: dynamic }, range);
69273    if (modifiers !== emptyObject) {
69274        newHandler.modifiers = modifiers;
69275    }
69276    var handlers = events[name];
69277    /* istanbul ignore if */
69278    if (Array.isArray(handlers)) {
69279        important ? handlers.unshift(newHandler) : handlers.push(newHandler);
69280    }
69281    else if (handlers) {
69282        events[name] = important ? [newHandler, handlers] : [handlers, newHandler];
69283    }
69284    else {
69285        events[name] = newHandler;
69286    }
69287    el.plain = false;
69288}
69289function getRawBindingAttr(el, name) {
69290    return (el.rawAttrsMap[':' + name] ||
69291        el.rawAttrsMap['v-bind:' + name] ||
69292        el.rawAttrsMap[name]);
69293}
69294function getBindingAttr(el, name, getStatic) {
69295    var dynamicValue = getAndRemoveAttr(el, ':' + name) || getAndRemoveAttr(el, 'v-bind:' + name);
69296    if (dynamicValue != null) {
69297        return parseFilters(dynamicValue);
69298    }
69299    else if (getStatic !== false) {
69300        var staticValue = getAndRemoveAttr(el, name);
69301        if (staticValue != null) {
69302            return JSON.stringify(staticValue);
69303        }
69304    }
69305}
69306// note: this only removes the attr from the Array (attrsList) so that it
69307// doesn't get processed by processAttrs.
69308// By default it does NOT remove it from the map (attrsMap) because the map is
69309// needed during codegen.
69310function getAndRemoveAttr(el, name, removeFromMap) {
69311    var val;
69312    if ((val = el.attrsMap[name]) != null) {
69313        var list = el.attrsList;
69314        for (var i = 0, l = list.length; i < l; i++) {
69315            if (list[i].name === name) {
69316                list.splice(i, 1);
69317                break;
69318            }
69319        }
69320    }
69321    if (removeFromMap) {
69322        delete el.attrsMap[name];
69323    }
69324    return val;
69325}
69326function getAndRemoveAttrByRegex(el, name) {
69327    var list = el.attrsList;
69328    for (var i = 0, l = list.length; i < l; i++) {
69329        var attr = list[i];
69330        if (name.test(attr.name)) {
69331            list.splice(i, 1);
69332            return attr;
69333        }
69334    }
69335}
69336function rangeSetItem(item, range) {
69337    if (range) {
69338        if (range.start != null) {
69339            item.start = range.start;
69340        }
69341        if (range.end != null) {
69342            item.end = range.end;
69343        }
69344    }
69345    return item;
69346}
69347
69348/**
69349 * Cross-platform code generation for component v-model
69350 */
69351function genComponentModel(el, value, modifiers) {
69352    var _a = modifiers || {}, number = _a.number, trim = _a.trim;
69353    var baseValueExpression = '$$v';
69354    var valueExpression = baseValueExpression;
69355    if (trim) {
69356        valueExpression =
69357            "(typeof ".concat(baseValueExpression, " === 'string'") +
69358                "? ".concat(baseValueExpression, ".trim()") +
69359                ": ".concat(baseValueExpression, ")");
69360    }
69361    if (number) {
69362        valueExpression = "_n(".concat(valueExpression, ")");
69363    }
69364    var assignment = genAssignmentCode(value, valueExpression);
69365    el.model = {
69366        value: "(".concat(value, ")"),
69367        expression: JSON.stringify(value),
69368        callback: "function (".concat(baseValueExpression, ") {").concat(assignment, "}")
69369    };
69370}
69371/**
69372 * Cross-platform codegen helper for generating v-model value assignment code.
69373 */
69374function genAssignmentCode(value, assignment) {
69375    var res = parseModel(value);
69376    if (res.key === null) {
69377        return "".concat(value, "=").concat(assignment);
69378    }
69379    else {
69380        return "$set(".concat(res.exp, ", ").concat(res.key, ", ").concat(assignment, ")");
69381    }
69382}
69383/**
69384 * Parse a v-model expression into a base path and a final key segment.
69385 * Handles both dot-path and possible square brackets.
69386 *
69387 * Possible cases:
69388 *
69389 * - test
69390 * - test[key]
69391 * - test[test1[key]]
69392 * - test["a"][key]
69393 * - xxx.test[a[a].test1[key]]
69394 * - test.xxx.a["asa"][test1[key]]
69395 *
69396 */
69397var len, str, chr, index, expressionPos, expressionEndPos;
69398function parseModel(val) {
69399    // Fix https://github.com/vuejs/vue/pull/7730
69400    // allow v-model="obj.val " (trailing whitespace)
69401    val = val.trim();
69402    len = val.length;
69403    if (val.indexOf('[') < 0 || val.lastIndexOf(']') < len - 1) {
69404        index = val.lastIndexOf('.');
69405        if (index > -1) {
69406            return {
69407                exp: val.slice(0, index),
69408                key: '"' + val.slice(index + 1) + '"'
69409            };
69410        }
69411        else {
69412            return {
69413                exp: val,
69414                key: null
69415            };
69416        }
69417    }
69418    str = val;
69419    index = expressionPos = expressionEndPos = 0;
69420    while (!eof()) {
69421        chr = next();
69422        /* istanbul ignore if */
69423        if (isStringStart(chr)) {
69424            parseString(chr);
69425        }
69426        else if (chr === 0x5b) {
69427            parseBracket(chr);
69428        }
69429    }
69430    return {
69431        exp: val.slice(0, expressionPos),
69432        key: val.slice(expressionPos + 1, expressionEndPos)
69433    };
69434}
69435function next() {
69436    return str.charCodeAt(++index);
69437}
69438function eof() {
69439    return index >= len;
69440}
69441function isStringStart(chr) {
69442    return chr === 0x22 || chr === 0x27;
69443}
69444function parseBracket(chr) {
69445    var inBracket = 1;
69446    expressionPos = index;
69447    while (!eof()) {
69448        chr = next();
69449        if (isStringStart(chr)) {
69450            parseString(chr);
69451            continue;
69452        }
69453        if (chr === 0x5b)
69454            inBracket++;
69455        if (chr === 0x5d)
69456            inBracket--;
69457        if (inBracket === 0) {
69458            expressionEndPos = index;
69459            break;
69460        }
69461    }
69462}
69463function parseString(chr) {
69464    var stringQuote = chr;
69465    while (!eof()) {
69466        chr = next();
69467        if (chr === stringQuote) {
69468            break;
69469        }
69470    }
69471}
69472
69473var warn$1;
69474// in some cases, the event used has to be determined at runtime
69475// so we used some reserved tokens during compile.
69476var RANGE_TOKEN = '__r';
69477var CHECKBOX_RADIO_TOKEN = '__c';
69478function model$1(el, dir, _warn) {
69479    warn$1 = _warn;
69480    var value = dir.value;
69481    var modifiers = dir.modifiers;
69482    var tag = el.tag;
69483    var type = el.attrsMap.type;
69484    if (true) {
69485        // inputs with type="file" are read only and setting the input's
69486        // value will throw an error.
69487        if (tag === 'input' && type === 'file') {
69488            warn$1("<".concat(el.tag, " v-model=\"").concat(value, "\" type=\"file\">:\n") +
69489                "File inputs are read only. Use a v-on:change listener instead.", el.rawAttrsMap['v-model']);
69490        }
69491    }
69492    if (el.component) {
69493        genComponentModel(el, value, modifiers);
69494        // component v-model doesn't need extra runtime
69495        return false;
69496    }
69497    else if (tag === 'select') {
69498        genSelect(el, value, modifiers);
69499    }
69500    else if (tag === 'input' && type === 'checkbox') {
69501        genCheckboxModel(el, value, modifiers);
69502    }
69503    else if (tag === 'input' && type === 'radio') {
69504        genRadioModel(el, value, modifiers);
69505    }
69506    else if (tag === 'input' || tag === 'textarea') {
69507        genDefaultModel(el, value, modifiers);
69508    }
69509    else if (!config.isReservedTag(tag)) {
69510        genComponentModel(el, value, modifiers);
69511        // component v-model doesn't need extra runtime
69512        return false;
69513    }
69514    else if (true) {
69515        warn$1("<".concat(el.tag, " v-model=\"").concat(value, "\">: ") +
69516            "v-model is not supported on this element type. " +
69517            "If you are working with contenteditable, it's recommended to " +
69518            'wrap a library dedicated for that purpose inside a custom component.', el.rawAttrsMap['v-model']);
69519    }
69520    // ensure runtime directive metadata
69521    return true;
69522}
69523function genCheckboxModel(el, value, modifiers) {
69524    var number = modifiers && modifiers.number;
69525    var valueBinding = getBindingAttr(el, 'value') || 'null';
69526    var trueValueBinding = getBindingAttr(el, 'true-value') || 'true';
69527    var falseValueBinding = getBindingAttr(el, 'false-value') || 'false';
69528    addProp(el, 'checked', "Array.isArray(".concat(value, ")") +
69529        "?_i(".concat(value, ",").concat(valueBinding, ")>-1") +
69530        (trueValueBinding === 'true'
69531            ? ":(".concat(value, ")")
69532            : ":_q(".concat(value, ",").concat(trueValueBinding, ")")));
69533    addHandler(el, 'change', "var $$a=".concat(value, ",") +
69534        '$$el=$event.target,' +
69535        "$$c=$$el.checked?(".concat(trueValueBinding, "):(").concat(falseValueBinding, ");") +
69536        'if(Array.isArray($$a)){' +
69537        "var $$v=".concat(number ? '_n(' + valueBinding + ')' : valueBinding, ",") +
69538        '$$i=_i($$a,$$v);' +
69539        "if($$el.checked){$$i<0&&(".concat(genAssignmentCode(value, '$$a.concat([$$v])'), ")}") +
69540        "else{$$i>-1&&(".concat(genAssignmentCode(value, '$$a.slice(0,$$i).concat($$a.slice($$i+1))'), ")}") +
69541        "}else{".concat(genAssignmentCode(value, '$$c'), "}"), null, true);
69542}
69543function genRadioModel(el, value, modifiers) {
69544    var number = modifiers && modifiers.number;
69545    var valueBinding = getBindingAttr(el, 'value') || 'null';
69546    valueBinding = number ? "_n(".concat(valueBinding, ")") : valueBinding;
69547    addProp(el, 'checked', "_q(".concat(value, ",").concat(valueBinding, ")"));
69548    addHandler(el, 'change', genAssignmentCode(value, valueBinding), null, true);
69549}
69550function genSelect(el, value, modifiers) {
69551    var number = modifiers && modifiers.number;
69552    var selectedVal = "Array.prototype.filter" +
69553        ".call($event.target.options,function(o){return o.selected})" +
69554        ".map(function(o){var val = \"_value\" in o ? o._value : o.value;" +
69555        "return ".concat(number ? '_n(val)' : 'val', "})");
69556    var assignment = '$event.target.multiple ? $$selectedVal : $$selectedVal[0]';
69557    var code = "var $$selectedVal = ".concat(selectedVal, ";");
69558    code = "".concat(code, " ").concat(genAssignmentCode(value, assignment));
69559    addHandler(el, 'change', code, null, true);
69560}
69561function genDefaultModel(el, value, modifiers) {
69562    var type = el.attrsMap.type;
69563    // warn if v-bind:value conflicts with v-model
69564    // except for inputs with v-bind:type
69565    if (true) {
69566        var value_1 = el.attrsMap['v-bind:value'] || el.attrsMap[':value'];
69567        var typeBinding = el.attrsMap['v-bind:type'] || el.attrsMap[':type'];
69568        if (value_1 && !typeBinding) {
69569            var binding = el.attrsMap['v-bind:value'] ? 'v-bind:value' : ':value';
69570            warn$1("".concat(binding, "=\"").concat(value_1, "\" conflicts with v-model on the same element ") +
69571                'because the latter already expands to a value binding internally', el.rawAttrsMap[binding]);
69572        }
69573    }
69574    var _a = modifiers || {}, lazy = _a.lazy, number = _a.number, trim = _a.trim;
69575    var needCompositionGuard = !lazy && type !== 'range';
69576    var event = lazy ? 'change' : type === 'range' ? RANGE_TOKEN : 'input';
69577    var valueExpression = '$event.target.value';
69578    if (trim) {
69579        valueExpression = "$event.target.value.trim()";
69580    }
69581    if (number) {
69582        valueExpression = "_n(".concat(valueExpression, ")");
69583    }
69584    var code = genAssignmentCode(value, valueExpression);
69585    if (needCompositionGuard) {
69586        code = "if($event.target.composing)return;".concat(code);
69587    }
69588    addProp(el, 'value', "(".concat(value, ")"));
69589    addHandler(el, event, code, null, true);
69590    if (trim || number) {
69591        addHandler(el, 'blur', '$forceUpdate()');
69592    }
69593}
69594
69595// normalize v-model event tokens that can only be determined at runtime.
69596// it's important to place the event as the first in the array because
69597// the whole point is ensuring the v-model callback gets called before
69598// user-attached handlers.
69599function normalizeEvents(on) {
69600    /* istanbul ignore if */
69601    if (isDef(on[RANGE_TOKEN])) {
69602        // IE input[type=range] only supports `change` event
69603        var event_1 = isIE ? 'change' : 'input';
69604        on[event_1] = [].concat(on[RANGE_TOKEN], on[event_1] || []);
69605        delete on[RANGE_TOKEN];
69606    }
69607    // This was originally intended to fix #4521 but no longer necessary
69608    // after 2.5. Keeping it for backwards compat with generated code from < 2.4
69609    /* istanbul ignore if */
69610    if (isDef(on[CHECKBOX_RADIO_TOKEN])) {
69611        on.change = [].concat(on[CHECKBOX_RADIO_TOKEN], on.change || []);
69612        delete on[CHECKBOX_RADIO_TOKEN];
69613    }
69614}
69615var target;
69616function createOnceHandler(event, handler, capture) {
69617    var _target = target; // save current target element in closure
69618    return function onceHandler() {
69619        var res = handler.apply(null, arguments);
69620        if (res !== null) {
69621            remove(event, onceHandler, capture, _target);
69622        }
69623    };
69624}
69625// #9446: Firefox <= 53 (in particular, ESR 52) has incorrect Event.timeStamp
69626// implementation and does not fire microtasks in between event propagation, so
69627// safe to exclude.
69628var useMicrotaskFix = isUsingMicroTask && !(isFF && Number(isFF[1]) <= 53);
69629function add(name, handler, capture, passive) {
69630    // async edge case #6566: inner click event triggers patch, event handler
69631    // attached to outer element during patch, and triggered again. This
69632    // happens because browsers fire microtask ticks between event propagation.
69633    // the solution is simple: we save the timestamp when a handler is attached,
69634    // and the handler would only fire if the event passed to it was fired
69635    // AFTER it was attached.
69636    if (useMicrotaskFix) {
69637        var attachedTimestamp_1 = currentFlushTimestamp;
69638        var original_1 = handler;
69639        //@ts-expect-error
69640        handler = original_1._wrapper = function (e) {
69641            if (
69642            // no bubbling, should always fire.
69643            // this is just a safety net in case event.timeStamp is unreliable in
69644            // certain weird environments...
69645            e.target === e.currentTarget ||
69646                // event is fired after handler attachment
69647                e.timeStamp >= attachedTimestamp_1 ||
69648                // bail for environments that have buggy event.timeStamp implementations
69649                // #9462 iOS 9 bug: event.timeStamp is 0 after history.pushState
69650                // #9681 QtWebEngine event.timeStamp is negative value
69651                e.timeStamp <= 0 ||
69652                // #9448 bail if event is fired in another document in a multi-page
69653                // electron/nw.js app, since event.timeStamp will be using a different
69654                // starting reference
69655                e.target.ownerDocument !== document) {
69656                return original_1.apply(this, arguments);
69657            }
69658        };
69659    }
69660    target.addEventListener(name, handler, supportsPassive ? { capture: capture, passive: passive } : capture);
69661}
69662function remove(name, handler, capture, _target) {
69663    (_target || target).removeEventListener(name, 
69664    //@ts-expect-error
69665    handler._wrapper || handler, capture);
69666}
69667function updateDOMListeners(oldVnode, vnode) {
69668    if (isUndef(oldVnode.data.on) && isUndef(vnode.data.on)) {
69669        return;
69670    }
69671    var on = vnode.data.on || {};
69672    var oldOn = oldVnode.data.on || {};
69673    // vnode is empty when removing all listeners,
69674    // and use old vnode dom element
69675    target = vnode.elm || oldVnode.elm;
69676    normalizeEvents(on);
69677    updateListeners(on, oldOn, add, remove, createOnceHandler, vnode.context);
69678    target = undefined;
69679}
69680var events = {
69681    create: updateDOMListeners,
69682    update: updateDOMListeners,
69683    // @ts-expect-error emptyNode has actually data
69684    destroy: function (vnode) { return updateDOMListeners(vnode, emptyNode); }
69685};
69686
69687var svgContainer;
69688function updateDOMProps(oldVnode, vnode) {
69689    if (isUndef(oldVnode.data.domProps) && isUndef(vnode.data.domProps)) {
69690        return;
69691    }
69692    var key, cur;
69693    var elm = vnode.elm;
69694    var oldProps = oldVnode.data.domProps || {};
69695    var props = vnode.data.domProps || {};
69696    // clone observed objects, as the user probably wants to mutate it
69697    if (isDef(props.__ob__) || isTrue(props._v_attr_proxy)) {
69698        props = vnode.data.domProps = extend({}, props);
69699    }
69700    for (key in oldProps) {
69701        if (!(key in props)) {
69702            elm[key] = '';
69703        }
69704    }
69705    for (key in props) {
69706        cur = props[key];
69707        // ignore children if the node has textContent or innerHTML,
69708        // as these will throw away existing DOM nodes and cause removal errors
69709        // on subsequent patches (#3360)
69710        if (key === 'textContent' || key === 'innerHTML') {
69711            if (vnode.children)
69712                vnode.children.length = 0;
69713            if (cur === oldProps[key])
69714                continue;
69715            // #6601 work around Chrome version <= 55 bug where single textNode
69716            // replaced by innerHTML/textContent retains its parentNode property
69717            if (elm.childNodes.length === 1) {
69718                elm.removeChild(elm.childNodes[0]);
69719            }
69720        }
69721        if (key === 'value' && elm.tagName !== 'PROGRESS') {
69722            // store value as _value as well since
69723            // non-string values will be stringified
69724            elm._value = cur;
69725            // avoid resetting cursor position when value is the same
69726            var strCur = isUndef(cur) ? '' : String(cur);
69727            if (shouldUpdateValue(elm, strCur)) {
69728                elm.value = strCur;
69729            }
69730        }
69731        else if (key === 'innerHTML' &&
69732            isSVG(elm.tagName) &&
69733            isUndef(elm.innerHTML)) {
69734            // IE doesn't support innerHTML for SVG elements
69735            svgContainer = svgContainer || document.createElement('div');
69736            svgContainer.innerHTML = "<svg>".concat(cur, "</svg>");
69737            var svg = svgContainer.firstChild;
69738            while (elm.firstChild) {
69739                elm.removeChild(elm.firstChild);
69740            }
69741            while (svg.firstChild) {
69742                elm.appendChild(svg.firstChild);
69743            }
69744        }
69745        else if (
69746        // skip the update if old and new VDOM state is the same.
69747        // `value` is handled separately because the DOM value may be temporarily
69748        // out of sync with VDOM state due to focus, composition and modifiers.
69749        // This  #4521 by skipping the unnecessary `checked` update.
69750        cur !== oldProps[key]) {
69751            // some property updates can throw
69752            // e.g. `value` on <progress> w/ non-finite value
69753            try {
69754                elm[key] = cur;
69755            }
69756            catch (e) { }
69757        }
69758    }
69759}
69760function shouldUpdateValue(elm, checkVal) {
69761    return (
69762    //@ts-expect-error
69763    !elm.composing &&
69764        (elm.tagName === 'OPTION' ||
69765            isNotInFocusAndDirty(elm, checkVal) ||
69766            isDirtyWithModifiers(elm, checkVal)));
69767}
69768function isNotInFocusAndDirty(elm, checkVal) {
69769    // return true when textbox (.number and .trim) loses focus and its value is
69770    // not equal to the updated value
69771    var notInFocus = true;
69772    // #6157
69773    // work around IE bug when accessing document.activeElement in an iframe
69774    try {
69775        notInFocus = document.activeElement !== elm;
69776    }
69777    catch (e) { }
69778    return notInFocus && elm.value !== checkVal;
69779}
69780function isDirtyWithModifiers(elm, newVal) {
69781    var value = elm.value;
69782    var modifiers = elm._vModifiers; // injected by v-model runtime
69783    if (isDef(modifiers)) {
69784        if (modifiers.number) {
69785            return toNumber(value) !== toNumber(newVal);
69786        }
69787        if (modifiers.trim) {
69788            return value.trim() !== newVal.trim();
69789        }
69790    }
69791    return value !== newVal;
69792}
69793var domProps = {
69794    create: updateDOMProps,
69795    update: updateDOMProps
69796};
69797
69798var parseStyleText = cached(function (cssText) {
69799    var res = {};
69800    var listDelimiter = /;(?![^(]*\))/g;
69801    var propertyDelimiter = /:(.+)/;
69802    cssText.split(listDelimiter).forEach(function (item) {
69803        if (item) {
69804            var tmp = item.split(propertyDelimiter);
69805            tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim());
69806        }
69807    });
69808    return res;
69809});
69810// merge static and dynamic style data on the same vnode
69811function normalizeStyleData(data) {
69812    var style = normalizeStyleBinding(data.style);
69813    // static style is pre-processed into an object during compilation
69814    // and is always a fresh object, so it's safe to merge into it
69815    return data.staticStyle ? extend(data.staticStyle, style) : style;
69816}
69817// normalize possible array / string values into Object
69818function normalizeStyleBinding(bindingStyle) {
69819    if (Array.isArray(bindingStyle)) {
69820        return toObject(bindingStyle);
69821    }
69822    if (typeof bindingStyle === 'string') {
69823        return parseStyleText(bindingStyle);
69824    }
69825    return bindingStyle;
69826}
69827/**
69828 * parent component style should be after child's
69829 * so that parent component's style could override it
69830 */
69831function getStyle(vnode, checkChild) {
69832    var res = {};
69833    var styleData;
69834    if (checkChild) {
69835        var childNode = vnode;
69836        while (childNode.componentInstance) {
69837            childNode = childNode.componentInstance._vnode;
69838            if (childNode &&
69839                childNode.data &&
69840                (styleData = normalizeStyleData(childNode.data))) {
69841                extend(res, styleData);
69842            }
69843        }
69844    }
69845    if ((styleData = normalizeStyleData(vnode.data))) {
69846        extend(res, styleData);
69847    }
69848    var parentNode = vnode;
69849    // @ts-expect-error parentNode.parent not VNodeWithData
69850    while ((parentNode = parentNode.parent)) {
69851        if (parentNode.data && (styleData = normalizeStyleData(parentNode.data))) {
69852            extend(res, styleData);
69853        }
69854    }
69855    return res;
69856}
69857
69858var cssVarRE = /^--/;
69859var importantRE = /\s*!important$/;
69860var setProp = function (el, name, val) {
69861    /* istanbul ignore if */
69862    if (cssVarRE.test(name)) {
69863        el.style.setProperty(name, val);
69864    }
69865    else if (importantRE.test(val)) {
69866        el.style.setProperty(hyphenate(name), val.replace(importantRE, ''), 'important');
69867    }
69868    else {
69869        var normalizedName = normalize(name);
69870        if (Array.isArray(val)) {
69871            // Support values array created by autoprefixer, e.g.
69872            // {display: ["-webkit-box", "-ms-flexbox", "flex"]}
69873            // Set them one by one, and the browser will only set those it can recognize
69874            for (var i = 0, len = val.length; i < len; i++) {
69875                el.style[normalizedName] = val[i];
69876            }
69877        }
69878        else {
69879            el.style[normalizedName] = val;
69880        }
69881    }
69882};
69883var vendorNames = ['Webkit', 'Moz', 'ms'];
69884var emptyStyle;
69885var normalize = cached(function (prop) {
69886    emptyStyle = emptyStyle || document.createElement('div').style;
69887    prop = camelize(prop);
69888    if (prop !== 'filter' && prop in emptyStyle) {
69889        return prop;
69890    }
69891    var capName = prop.charAt(0).toUpperCase() + prop.slice(1);
69892    for (var i = 0; i < vendorNames.length; i++) {
69893        var name_1 = vendorNames[i] + capName;
69894        if (name_1 in emptyStyle) {
69895            return name_1;
69896        }
69897    }
69898});
69899function updateStyle(oldVnode, vnode) {
69900    var data = vnode.data;
69901    var oldData = oldVnode.data;
69902    if (isUndef(data.staticStyle) &&
69903        isUndef(data.style) &&
69904        isUndef(oldData.staticStyle) &&
69905        isUndef(oldData.style)) {
69906        return;
69907    }
69908    var cur, name;
69909    var el = vnode.elm;
69910    var oldStaticStyle = oldData.staticStyle;
69911    var oldStyleBinding = oldData.normalizedStyle || oldData.style || {};
69912    // if static style exists, stylebinding already merged into it when doing normalizeStyleData
69913    var oldStyle = oldStaticStyle || oldStyleBinding;
69914    var style = normalizeStyleBinding(vnode.data.style) || {};
69915    // store normalized style under a different key for next diff
69916    // make sure to clone it if it's reactive, since the user likely wants
69917    // to mutate it.
69918    vnode.data.normalizedStyle = isDef(style.__ob__) ? extend({}, style) : style;
69919    var newStyle = getStyle(vnode, true);
69920    for (name in oldStyle) {
69921        if (isUndef(newStyle[name])) {
69922            setProp(el, name, '');
69923        }
69924    }
69925    for (name in newStyle) {
69926        cur = newStyle[name];
69927        // ie9 setting to null has no effect, must use empty string
69928        setProp(el, name, cur == null ? '' : cur);
69929    }
69930}
69931var style$1 = {
69932    create: updateStyle,
69933    update: updateStyle
69934};
69935
69936var whitespaceRE$1 = /\s+/;
69937/**
69938 * Add class with compatibility for SVG since classList is not supported on
69939 * SVG elements in IE
69940 */
69941function addClass(el, cls) {
69942    /* istanbul ignore if */
69943    if (!cls || !(cls = cls.trim())) {
69944        return;
69945    }
69946    /* istanbul ignore else */
69947    if (el.classList) {
69948        if (cls.indexOf(' ') > -1) {
69949            cls.split(whitespaceRE$1).forEach(function (c) { return el.classList.add(c); });
69950        }
69951        else {
69952            el.classList.add(cls);
69953        }
69954    }
69955    else {
69956        var cur = " ".concat(el.getAttribute('class') || '', " ");
69957        if (cur.indexOf(' ' + cls + ' ') < 0) {
69958            el.setAttribute('class', (cur + cls).trim());
69959        }
69960    }
69961}
69962/**
69963 * Remove class with compatibility for SVG since classList is not supported on
69964 * SVG elements in IE
69965 */
69966function removeClass(el, cls) {
69967    /* istanbul ignore if */
69968    if (!cls || !(cls = cls.trim())) {
69969        return;
69970    }
69971    /* istanbul ignore else */
69972    if (el.classList) {
69973        if (cls.indexOf(' ') > -1) {
69974            cls.split(whitespaceRE$1).forEach(function (c) { return el.classList.remove(c); });
69975        }
69976        else {
69977            el.classList.remove(cls);
69978        }
69979        if (!el.classList.length) {
69980            el.removeAttribute('class');
69981        }
69982    }
69983    else {
69984        var cur = " ".concat(el.getAttribute('class') || '', " ");
69985        var tar = ' ' + cls + ' ';
69986        while (cur.indexOf(tar) >= 0) {
69987            cur = cur.replace(tar, ' ');
69988        }
69989        cur = cur.trim();
69990        if (cur) {
69991            el.setAttribute('class', cur);
69992        }
69993        else {
69994            el.removeAttribute('class');
69995        }
69996    }
69997}
69998
69999function resolveTransition(def) {
70000    if (!def) {
70001        return;
70002    }
70003    /* istanbul ignore else */
70004    if (typeof def === 'object') {
70005        var res = {};
70006        if (def.css !== false) {
70007            extend(res, autoCssTransition(def.name || 'v'));
70008        }
70009        extend(res, def);
70010        return res;
70011    }
70012    else if (typeof def === 'string') {
70013        return autoCssTransition(def);
70014    }
70015}
70016var autoCssTransition = cached(function (name) {
70017    return {
70018        enterClass: "".concat(name, "-enter"),
70019        enterToClass: "".concat(name, "-enter-to"),
70020        enterActiveClass: "".concat(name, "-enter-active"),
70021        leaveClass: "".concat(name, "-leave"),
70022        leaveToClass: "".concat(name, "-leave-to"),
70023        leaveActiveClass: "".concat(name, "-leave-active")
70024    };
70025});
70026var hasTransition = inBrowser && !isIE9;
70027var TRANSITION = 'transition';
70028var ANIMATION = 'animation';
70029// Transition property/event sniffing
70030var transitionProp = 'transition';
70031var transitionEndEvent = 'transitionend';
70032var animationProp = 'animation';
70033var animationEndEvent = 'animationend';
70034if (hasTransition) {
70035    /* istanbul ignore if */
70036    if (window.ontransitionend === undefined &&
70037        window.onwebkittransitionend !== undefined) {
70038        transitionProp = 'WebkitTransition';
70039        transitionEndEvent = 'webkitTransitionEnd';
70040    }
70041    if (window.onanimationend === undefined &&
70042        window.onwebkitanimationend !== undefined) {
70043        animationProp = 'WebkitAnimation';
70044        animationEndEvent = 'webkitAnimationEnd';
70045    }
70046}
70047// binding to window is necessary to make hot reload work in IE in strict mode
70048var raf = inBrowser
70049    ? window.requestAnimationFrame
70050        ? window.requestAnimationFrame.bind(window)
70051        : setTimeout
70052    : /* istanbul ignore next */ function (/* istanbul ignore next */ fn) { return fn(); };
70053function nextFrame(fn) {
70054    raf(function () {
70055        // @ts-expect-error
70056        raf(fn);
70057    });
70058}
70059function addTransitionClass(el, cls) {
70060    var transitionClasses = el._transitionClasses || (el._transitionClasses = []);
70061    if (transitionClasses.indexOf(cls) < 0) {
70062        transitionClasses.push(cls);
70063        addClass(el, cls);
70064    }
70065}
70066function removeTransitionClass(el, cls) {
70067    if (el._transitionClasses) {
70068        remove$2(el._transitionClasses, cls);
70069    }
70070    removeClass(el, cls);
70071}
70072function whenTransitionEnds(el, expectedType, cb) {
70073    var _a = getTransitionInfo(el, expectedType), type = _a.type, timeout = _a.timeout, propCount = _a.propCount;
70074    if (!type)
70075        return cb();
70076    var event = type === TRANSITION ? transitionEndEvent : animationEndEvent;
70077    var ended = 0;
70078    var end = function () {
70079        el.removeEventListener(event, onEnd);
70080        cb();
70081    };
70082    var onEnd = function (e) {
70083        if (e.target === el) {
70084            if (++ended >= propCount) {
70085                end();
70086            }
70087        }
70088    };
70089    setTimeout(function () {
70090        if (ended < propCount) {
70091            end();
70092        }
70093    }, timeout + 1);
70094    el.addEventListener(event, onEnd);
70095}
70096var transformRE = /\b(transform|all)(,|$)/;
70097function getTransitionInfo(el, expectedType) {
70098    var styles = window.getComputedStyle(el);
70099    // JSDOM may return undefined for transition properties
70100    var transitionDelays = (styles[transitionProp + 'Delay'] || '').split(', ');
70101    var transitionDurations = (styles[transitionProp + 'Duration'] || '').split(', ');
70102    var transitionTimeout = getTimeout(transitionDelays, transitionDurations);
70103    var animationDelays = (styles[animationProp + 'Delay'] || '').split(', ');
70104    var animationDurations = (styles[animationProp + 'Duration'] || '').split(', ');
70105    var animationTimeout = getTimeout(animationDelays, animationDurations);
70106    var type;
70107    var timeout = 0;
70108    var propCount = 0;
70109    /* istanbul ignore if */
70110    if (expectedType === TRANSITION) {
70111        if (transitionTimeout > 0) {
70112            type = TRANSITION;
70113            timeout = transitionTimeout;
70114            propCount = transitionDurations.length;
70115        }
70116    }
70117    else if (expectedType === ANIMATION) {
70118        if (animationTimeout > 0) {
70119            type = ANIMATION;
70120            timeout = animationTimeout;
70121            propCount = animationDurations.length;
70122        }
70123    }
70124    else {
70125        timeout = Math.max(transitionTimeout, animationTimeout);
70126        type =
70127            timeout > 0
70128                ? transitionTimeout > animationTimeout
70129                    ? TRANSITION
70130                    : ANIMATION
70131                : null;
70132        propCount = type
70133            ? type === TRANSITION
70134                ? transitionDurations.length
70135                : animationDurations.length
70136            : 0;
70137    }
70138    var hasTransform = type === TRANSITION && transformRE.test(styles[transitionProp + 'Property']);
70139    return {
70140        type: type,
70141        timeout: timeout,
70142        propCount: propCount,
70143        hasTransform: hasTransform
70144    };
70145}
70146function getTimeout(delays, durations) {
70147    /* istanbul ignore next */
70148    while (delays.length < durations.length) {
70149        delays = delays.concat(delays);
70150    }
70151    return Math.max.apply(null, durations.map(function (d, i) {
70152        return toMs(d) + toMs(delays[i]);
70153    }));
70154}
70155// Old versions of Chromium (below 61.0.3163.100) formats floating pointer numbers
70156// in a locale-dependent way, using a comma instead of a dot.
70157// If comma is not replaced with a dot, the input will be rounded down (i.e. acting
70158// as a floor function) causing unexpected behaviors
70159function toMs(s) {
70160    return Number(s.slice(0, -1).replace(',', '.')) * 1000;
70161}
70162
70163function enter(vnode, toggleDisplay) {
70164    var el = vnode.elm;
70165    // call leave callback now
70166    if (isDef(el._leaveCb)) {
70167        el._leaveCb.cancelled = true;
70168        el._leaveCb();
70169    }
70170    var data = resolveTransition(vnode.data.transition);
70171    if (isUndef(data)) {
70172        return;
70173    }
70174    /* istanbul ignore if */
70175    if (isDef(el._enterCb) || el.nodeType !== 1) {
70176        return;
70177    }
70178    var css = data.css, type = data.type, enterClass = data.enterClass, enterToClass = data.enterToClass, enterActiveClass = data.enterActiveClass, appearClass = data.appearClass, appearToClass = data.appearToClass, appearActiveClass = data.appearActiveClass, beforeEnter = data.beforeEnter, enter = data.enter, afterEnter = data.afterEnter, enterCancelled = data.enterCancelled, beforeAppear = data.beforeAppear, appear = data.appear, afterAppear = data.afterAppear, appearCancelled = data.appearCancelled, duration = data.duration;
70179    // activeInstance will always be the <transition> component managing this
70180    // transition. One edge case to check is when the <transition> is placed
70181    // as the root node of a child component. In that case we need to check
70182    // <transition>'s parent for appear check.
70183    var context = activeInstance;
70184    var transitionNode = activeInstance.$vnode;
70185    while (transitionNode && transitionNode.parent) {
70186        context = transitionNode.context;
70187        transitionNode = transitionNode.parent;
70188    }
70189    var isAppear = !context._isMounted || !vnode.isRootInsert;
70190    if (isAppear && !appear && appear !== '') {
70191        return;
70192    }
70193    var startClass = isAppear && appearClass ? appearClass : enterClass;
70194    var activeClass = isAppear && appearActiveClass ? appearActiveClass : enterActiveClass;
70195    var toClass = isAppear && appearToClass ? appearToClass : enterToClass;
70196    var beforeEnterHook = isAppear ? beforeAppear || beforeEnter : beforeEnter;
70197    var enterHook = isAppear ? (isFunction(appear) ? appear : enter) : enter;
70198    var afterEnterHook = isAppear ? afterAppear || afterEnter : afterEnter;
70199    var enterCancelledHook = isAppear
70200        ? appearCancelled || enterCancelled
70201        : enterCancelled;
70202    var explicitEnterDuration = toNumber(isObject(duration) ? duration.enter : duration);
70203    if ( true && explicitEnterDuration != null) {
70204        checkDuration(explicitEnterDuration, 'enter', vnode);
70205    }
70206    var expectsCSS = css !== false && !isIE9;
70207    var userWantsControl = getHookArgumentsLength(enterHook);
70208    var cb = (el._enterCb = once(function () {
70209        if (expectsCSS) {
70210            removeTransitionClass(el, toClass);
70211            removeTransitionClass(el, activeClass);
70212        }
70213        // @ts-expect-error
70214        if (cb.cancelled) {
70215            if (expectsCSS) {
70216                removeTransitionClass(el, startClass);
70217            }
70218            enterCancelledHook && enterCancelledHook(el);
70219        }
70220        else {
70221            afterEnterHook && afterEnterHook(el);
70222        }
70223        el._enterCb = null;
70224    }));
70225    if (!vnode.data.show) {
70226        // remove pending leave element on enter by injecting an insert hook
70227        mergeVNodeHook(vnode, 'insert', function () {
70228            var parent = el.parentNode;
70229            var pendingNode = parent && parent._pending && parent._pending[vnode.key];
70230            if (pendingNode &&
70231                pendingNode.tag === vnode.tag &&
70232                pendingNode.elm._leaveCb) {
70233                pendingNode.elm._leaveCb();
70234            }
70235            enterHook && enterHook(el, cb);
70236        });
70237    }
70238    // start enter transition
70239    beforeEnterHook && beforeEnterHook(el);
70240    if (expectsCSS) {
70241        addTransitionClass(el, startClass);
70242        addTransitionClass(el, activeClass);
70243        nextFrame(function () {
70244            removeTransitionClass(el, startClass);
70245            // @ts-expect-error
70246            if (!cb.cancelled) {
70247                addTransitionClass(el, toClass);
70248                if (!userWantsControl) {
70249                    if (isValidDuration(explicitEnterDuration)) {
70250                        setTimeout(cb, explicitEnterDuration);
70251                    }
70252                    else {
70253                        whenTransitionEnds(el, type, cb);
70254                    }
70255                }
70256            }
70257        });
70258    }
70259    if (vnode.data.show) {
70260        toggleDisplay && toggleDisplay();
70261        enterHook && enterHook(el, cb);
70262    }
70263    if (!expectsCSS && !userWantsControl) {
70264        cb();
70265    }
70266}
70267function leave(vnode, rm) {
70268    var el = vnode.elm;
70269    // call enter callback now
70270    if (isDef(el._enterCb)) {
70271        el._enterCb.cancelled = true;
70272        el._enterCb();
70273    }
70274    var data = resolveTransition(vnode.data.transition);
70275    if (isUndef(data) || el.nodeType !== 1) {
70276        return rm();
70277    }
70278    /* istanbul ignore if */
70279    if (isDef(el._leaveCb)) {
70280        return;
70281    }
70282    var css = data.css, type = data.type, leaveClass = data.leaveClass, leaveToClass = data.leaveToClass, leaveActiveClass = data.leaveActiveClass, beforeLeave = data.beforeLeave, leave = data.leave, afterLeave = data.afterLeave, leaveCancelled = data.leaveCancelled, delayLeave = data.delayLeave, duration = data.duration;
70283    var expectsCSS = css !== false && !isIE9;
70284    var userWantsControl = getHookArgumentsLength(leave);
70285    var explicitLeaveDuration = toNumber(isObject(duration) ? duration.leave : duration);
70286    if ( true && isDef(explicitLeaveDuration)) {
70287        checkDuration(explicitLeaveDuration, 'leave', vnode);
70288    }
70289    var cb = (el._leaveCb = once(function () {
70290        if (el.parentNode && el.parentNode._pending) {
70291            el.parentNode._pending[vnode.key] = null;
70292        }
70293        if (expectsCSS) {
70294            removeTransitionClass(el, leaveToClass);
70295            removeTransitionClass(el, leaveActiveClass);
70296        }
70297        // @ts-expect-error
70298        if (cb.cancelled) {
70299            if (expectsCSS) {
70300                removeTransitionClass(el, leaveClass);
70301            }
70302            leaveCancelled && leaveCancelled(el);
70303        }
70304        else {
70305            rm();
70306            afterLeave && afterLeave(el);
70307        }
70308        el._leaveCb = null;
70309    }));
70310    if (delayLeave) {
70311        delayLeave(performLeave);
70312    }
70313    else {
70314        performLeave();
70315    }
70316    function performLeave() {
70317        // the delayed leave may have already been cancelled
70318        // @ts-expect-error
70319        if (cb.cancelled) {
70320            return;
70321        }
70322        // record leaving element
70323        if (!vnode.data.show && el.parentNode) {
70324            (el.parentNode._pending || (el.parentNode._pending = {}))[vnode.key] =
70325                vnode;
70326        }
70327        beforeLeave && beforeLeave(el);
70328        if (expectsCSS) {
70329            addTransitionClass(el, leaveClass);
70330            addTransitionClass(el, leaveActiveClass);
70331            nextFrame(function () {
70332                removeTransitionClass(el, leaveClass);
70333                // @ts-expect-error
70334                if (!cb.cancelled) {
70335                    addTransitionClass(el, leaveToClass);
70336                    if (!userWantsControl) {
70337                        if (isValidDuration(explicitLeaveDuration)) {
70338                            setTimeout(cb, explicitLeaveDuration);
70339                        }
70340                        else {
70341                            whenTransitionEnds(el, type, cb);
70342                        }
70343                    }
70344                }
70345            });
70346        }
70347        leave && leave(el, cb);
70348        if (!expectsCSS && !userWantsControl) {
70349            cb();
70350        }
70351    }
70352}
70353// only used in dev mode
70354function checkDuration(val, name, vnode) {
70355    if (typeof val !== 'number') {
70356        warn$2("<transition> explicit ".concat(name, " duration is not a valid number - ") +
70357            "got ".concat(JSON.stringify(val), "."), vnode.context);
70358    }
70359    else if (isNaN(val)) {
70360        warn$2("<transition> explicit ".concat(name, " duration is NaN - ") +
70361            'the duration expression might be incorrect.', vnode.context);
70362    }
70363}
70364function isValidDuration(val) {
70365    return typeof val === 'number' && !isNaN(val);
70366}
70367/**
70368 * Normalize a transition hook's argument length. The hook may be:
70369 * - a merged hook (invoker) with the original in .fns
70370 * - a wrapped component method (check ._length)
70371 * - a plain function (.length)
70372 */
70373function getHookArgumentsLength(fn) {
70374    if (isUndef(fn)) {
70375        return false;
70376    }
70377    // @ts-expect-error
70378    var invokerFns = fn.fns;
70379    if (isDef(invokerFns)) {
70380        // invoker
70381        return getHookArgumentsLength(Array.isArray(invokerFns) ? invokerFns[0] : invokerFns);
70382    }
70383    else {
70384        // @ts-expect-error
70385        return (fn._length || fn.length) > 1;
70386    }
70387}
70388function _enter(_, vnode) {
70389    if (vnode.data.show !== true) {
70390        enter(vnode);
70391    }
70392}
70393var transition = inBrowser
70394    ? {
70395        create: _enter,
70396        activate: _enter,
70397        remove: function (vnode, rm) {
70398            /* istanbul ignore else */
70399            if (vnode.data.show !== true) {
70400                // @ts-expect-error
70401                leave(vnode, rm);
70402            }
70403            else {
70404                rm();
70405            }
70406        }
70407    }
70408    : {};
70409
70410var platformModules = [attrs, klass$1, events, domProps, style$1, transition];
70411
70412// the directive module should be applied last, after all
70413// built-in modules have been applied.
70414var modules$1 = platformModules.concat(baseModules);
70415var patch = createPatchFunction({ nodeOps: nodeOps, modules: modules$1 });
70416
70417/**
70418 * Not type checking this file because flow doesn't like attaching
70419 * properties to Elements.
70420 */
70421/* istanbul ignore if */
70422if (isIE9) {
70423    // http://www.matts411.com/post/internet-explorer-9-oninput/
70424    document.addEventListener('selectionchange', function () {
70425        var el = document.activeElement;
70426        // @ts-expect-error
70427        if (el && el.vmodel) {
70428            trigger(el, 'input');
70429        }
70430    });
70431}
70432var directive = {
70433    inserted: function (el, binding, vnode, oldVnode) {
70434        if (vnode.tag === 'select') {
70435            // #6903
70436            if (oldVnode.elm && !oldVnode.elm._vOptions) {
70437                mergeVNodeHook(vnode, 'postpatch', function () {
70438                    directive.componentUpdated(el, binding, vnode);
70439                });
70440            }
70441            else {
70442                setSelected(el, binding, vnode.context);
70443            }
70444            el._vOptions = [].map.call(el.options, getValue);
70445        }
70446        else if (vnode.tag === 'textarea' || isTextInputType(el.type)) {
70447            el._vModifiers = binding.modifiers;
70448            if (!binding.modifiers.lazy) {
70449                el.addEventListener('compositionstart', onCompositionStart);
70450                el.addEventListener('compositionend', onCompositionEnd);
70451                // Safari < 10.2 & UIWebView doesn't fire compositionend when
70452                // switching focus before confirming composition choice
70453                // this also fixes the issue where some browsers e.g. iOS Chrome
70454                // fires "change" instead of "input" on autocomplete.
70455                el.addEventListener('change', onCompositionEnd);
70456                /* istanbul ignore if */
70457                if (isIE9) {
70458                    el.vmodel = true;
70459                }
70460            }
70461        }
70462    },
70463    componentUpdated: function (el, binding, vnode) {
70464        if (vnode.tag === 'select') {
70465            setSelected(el, binding, vnode.context);
70466            // in case the options rendered by v-for have changed,
70467            // it's possible that the value is out-of-sync with the rendered options.
70468            // detect such cases and filter out values that no longer has a matching
70469            // option in the DOM.
70470            var prevOptions_1 = el._vOptions;
70471            var curOptions_1 = (el._vOptions = [].map.call(el.options, getValue));
70472            if (curOptions_1.some(function (o, i) { return !looseEqual(o, prevOptions_1[i]); })) {
70473                // trigger change event if
70474                // no matching option found for at least one value
70475                var needReset = el.multiple
70476                    ? binding.value.some(function (v) { return hasNoMatchingOption(v, curOptions_1); })
70477                    : binding.value !== binding.oldValue &&
70478                        hasNoMatchingOption(binding.value, curOptions_1);
70479                if (needReset) {
70480                    trigger(el, 'change');
70481                }
70482            }
70483        }
70484    }
70485};
70486function setSelected(el, binding, vm) {
70487    actuallySetSelected(el, binding, vm);
70488    /* istanbul ignore if */
70489    if (isIE || isEdge) {
70490        setTimeout(function () {
70491            actuallySetSelected(el, binding, vm);
70492        }, 0);
70493    }
70494}
70495function actuallySetSelected(el, binding, vm) {
70496    var value = binding.value;
70497    var isMultiple = el.multiple;
70498    if (isMultiple && !Array.isArray(value)) {
70499         true &&
70500            warn$2("<select multiple v-model=\"".concat(binding.expression, "\"> ") +
70501                "expects an Array value for its binding, but got ".concat(Object.prototype.toString
70502                    .call(value)
70503                    .slice(8, -1)), vm);
70504        return;
70505    }
70506    var selected, option;
70507    for (var i = 0, l = el.options.length; i < l; i++) {
70508        option = el.options[i];
70509        if (isMultiple) {
70510            selected = looseIndexOf(value, getValue(option)) > -1;
70511            if (option.selected !== selected) {
70512                option.selected = selected;
70513            }
70514        }
70515        else {
70516            if (looseEqual(getValue(option), value)) {
70517                if (el.selectedIndex !== i) {
70518                    el.selectedIndex = i;
70519                }
70520                return;
70521            }
70522        }
70523    }
70524    if (!isMultiple) {
70525        el.selectedIndex = -1;
70526    }
70527}
70528function hasNoMatchingOption(value, options) {
70529    return options.every(function (o) { return !looseEqual(o, value); });
70530}
70531function getValue(option) {
70532    return '_value' in option ? option._value : option.value;
70533}
70534function onCompositionStart(e) {
70535    e.target.composing = true;
70536}
70537function onCompositionEnd(e) {
70538    // prevent triggering an input event for no reason
70539    if (!e.target.composing)
70540        return;
70541    e.target.composing = false;
70542    trigger(e.target, 'input');
70543}
70544function trigger(el, type) {
70545    var e = document.createEvent('HTMLEvents');
70546    e.initEvent(type, true, true);
70547    el.dispatchEvent(e);
70548}
70549
70550// recursively search for possible transition defined inside the component root
70551function locateNode(vnode) {
70552    // @ts-expect-error
70553    return vnode.componentInstance && (!vnode.data || !vnode.data.transition)
70554        ? locateNode(vnode.componentInstance._vnode)
70555        : vnode;
70556}
70557var show = {
70558    bind: function (el, _a, vnode) {
70559        var value = _a.value;
70560        vnode = locateNode(vnode);
70561        var transition = vnode.data && vnode.data.transition;
70562        var originalDisplay = (el.__vOriginalDisplay =
70563            el.style.display === 'none' ? '' : el.style.display);
70564        if (value && transition) {
70565            vnode.data.show = true;
70566            enter(vnode, function () {
70567                el.style.display = originalDisplay;
70568            });
70569        }
70570        else {
70571            el.style.display = value ? originalDisplay : 'none';
70572        }
70573    },
70574    update: function (el, _a, vnode) {
70575        var value = _a.value, oldValue = _a.oldValue;
70576        /* istanbul ignore if */
70577        if (!value === !oldValue)
70578            return;
70579        vnode = locateNode(vnode);
70580        var transition = vnode.data && vnode.data.transition;
70581        if (transition) {
70582            vnode.data.show = true;
70583            if (value) {
70584                enter(vnode, function () {
70585                    el.style.display = el.__vOriginalDisplay;
70586                });
70587            }
70588            else {
70589                leave(vnode, function () {
70590                    el.style.display = 'none';
70591                });
70592            }
70593        }
70594        else {
70595            el.style.display = value ? el.__vOriginalDisplay : 'none';
70596        }
70597    },
70598    unbind: function (el, binding, vnode, oldVnode, isDestroy) {
70599        if (!isDestroy) {
70600            el.style.display = el.__vOriginalDisplay;
70601        }
70602    }
70603};
70604
70605var platformDirectives = {
70606    model: directive,
70607    show: show
70608};
70609
70610// Provides transition support for a single element/component.
70611var transitionProps = {
70612    name: String,
70613    appear: Boolean,
70614    css: Boolean,
70615    mode: String,
70616    type: String,
70617    enterClass: String,
70618    leaveClass: String,
70619    enterToClass: String,
70620    leaveToClass: String,
70621    enterActiveClass: String,
70622    leaveActiveClass: String,
70623    appearClass: String,
70624    appearActiveClass: String,
70625    appearToClass: String,
70626    duration: [Number, String, Object]
70627};
70628// in case the child is also an abstract component, e.g. <keep-alive>
70629// we want to recursively retrieve the real component to be rendered
70630function getRealChild(vnode) {
70631    var compOptions = vnode && vnode.componentOptions;
70632    if (compOptions && compOptions.Ctor.options.abstract) {
70633        return getRealChild(getFirstComponentChild(compOptions.children));
70634    }
70635    else {
70636        return vnode;
70637    }
70638}
70639function extractTransitionData(comp) {
70640    var data = {};
70641    var options = comp.$options;
70642    // props
70643    for (var key in options.propsData) {
70644        data[key] = comp[key];
70645    }
70646    // events.
70647    // extract listeners and pass them directly to the transition methods
70648    var listeners = options._parentListeners;
70649    for (var key in listeners) {
70650        data[camelize(key)] = listeners[key];
70651    }
70652    return data;
70653}
70654function placeholder(h, rawChild) {
70655    // @ts-expect-error
70656    if (/\d-keep-alive$/.test(rawChild.tag)) {
70657        return h('keep-alive', {
70658            props: rawChild.componentOptions.propsData
70659        });
70660    }
70661}
70662function hasParentTransition(vnode) {
70663    while ((vnode = vnode.parent)) {
70664        if (vnode.data.transition) {
70665            return true;
70666        }
70667    }
70668}
70669function isSameChild(child, oldChild) {
70670    return oldChild.key === child.key && oldChild.tag === child.tag;
70671}
70672var isNotTextNode = function (c) { return c.tag || isAsyncPlaceholder(c); };
70673var isVShowDirective = function (d) { return d.name === 'show'; };
70674var Transition = {
70675    name: 'transition',
70676    props: transitionProps,
70677    abstract: true,
70678    render: function (h) {
70679        var _this = this;
70680        var children = this.$slots.default;
70681        if (!children) {
70682            return;
70683        }
70684        // filter out text nodes (possible whitespaces)
70685        children = children.filter(isNotTextNode);
70686        /* istanbul ignore if */
70687        if (!children.length) {
70688            return;
70689        }
70690        // warn multiple elements
70691        if ( true && children.length > 1) {
70692            warn$2('<transition> can only be used on a single element. Use ' +
70693                '<transition-group> for lists.', this.$parent);
70694        }
70695        var mode = this.mode;
70696        // warn invalid mode
70697        if ( true && mode && mode !== 'in-out' && mode !== 'out-in') {
70698            warn$2('invalid <transition> mode: ' + mode, this.$parent);
70699        }
70700        var rawChild = children[0];
70701        // if this is a component root node and the component's
70702        // parent container node also has transition, skip.
70703        if (hasParentTransition(this.$vnode)) {
70704            return rawChild;
70705        }
70706        // apply transition data to child
70707        // use getRealChild() to ignore abstract components e.g. keep-alive
70708        var child = getRealChild(rawChild);
70709        /* istanbul ignore if */
70710        if (!child) {
70711            return rawChild;
70712        }
70713        if (this._leaving) {
70714            return placeholder(h, rawChild);
70715        }
70716        // ensure a key that is unique to the vnode type and to this transition
70717        // component instance. This key will be used to remove pending leaving nodes
70718        // during entering.
70719        var id = "__transition-".concat(this._uid, "-");
70720        child.key =
70721            child.key == null
70722                ? child.isComment
70723                    ? id + 'comment'
70724                    : id + child.tag
70725                : isPrimitive(child.key)
70726                    ? String(child.key).indexOf(id) === 0
70727                        ? child.key
70728                        : id + child.key
70729                    : child.key;
70730        var data = ((child.data || (child.data = {})).transition =
70731            extractTransitionData(this));
70732        var oldRawChild = this._vnode;
70733        var oldChild = getRealChild(oldRawChild);
70734        // mark v-show
70735        // so that the transition module can hand over the control to the directive
70736        if (child.data.directives && child.data.directives.some(isVShowDirective)) {
70737            child.data.show = true;
70738        }
70739        if (oldChild &&
70740            oldChild.data &&
70741            !isSameChild(child, oldChild) &&
70742            !isAsyncPlaceholder(oldChild) &&
70743            // #6687 component root is a comment node
70744            !(oldChild.componentInstance &&
70745                oldChild.componentInstance._vnode.isComment)) {
70746            // replace old child transition data with fresh one
70747            // important for dynamic transitions!
70748            var oldData = (oldChild.data.transition = extend({}, data));
70749            // handle transition mode
70750            if (mode === 'out-in') {
70751                // return placeholder node and queue update when leave finishes
70752                this._leaving = true;
70753                mergeVNodeHook(oldData, 'afterLeave', function () {
70754                    _this._leaving = false;
70755                    _this.$forceUpdate();
70756                });
70757                return placeholder(h, rawChild);
70758            }
70759            else if (mode === 'in-out') {
70760                if (isAsyncPlaceholder(child)) {
70761                    return oldRawChild;
70762                }
70763                var delayedLeave_1;
70764                var performLeave = function () {
70765                    delayedLeave_1();
70766                };
70767                mergeVNodeHook(data, 'afterEnter', performLeave);
70768                mergeVNodeHook(data, 'enterCancelled', performLeave);
70769                mergeVNodeHook(oldData, 'delayLeave', function (leave) {
70770                    delayedLeave_1 = leave;
70771                });
70772            }
70773        }
70774        return rawChild;
70775    }
70776};
70777
70778// Provides transition support for list items.
70779var props = extend({
70780    tag: String,
70781    moveClass: String
70782}, transitionProps);
70783delete props.mode;
70784var TransitionGroup = {
70785    props: props,
70786    beforeMount: function () {
70787        var _this = this;
70788        var update = this._update;
70789        this._update = function (vnode, hydrating) {
70790            var restoreActiveInstance = setActiveInstance(_this);
70791            // force removing pass
70792            _this.__patch__(_this._vnode, _this.kept, false, // hydrating
70793            true // removeOnly (!important, avoids unnecessary moves)
70794            );
70795            _this._vnode = _this.kept;
70796            restoreActiveInstance();
70797            update.call(_this, vnode, hydrating);
70798        };
70799    },
70800    render: function (h) {
70801        var tag = this.tag || this.$vnode.data.tag || 'span';
70802        var map = Object.create(null);
70803        var prevChildren = (this.prevChildren = this.children);
70804        var rawChildren = this.$slots.default || [];
70805        var children = (this.children = []);
70806        var transitionData = extractTransitionData(this);
70807        for (var i = 0; i < rawChildren.length; i++) {
70808            var c = rawChildren[i];
70809            if (c.tag) {
70810                if (c.key != null && String(c.key).indexOf('__vlist') !== 0) {
70811                    children.push(c);
70812                    map[c.key] = c;
70813                    (c.data || (c.data = {})).transition = transitionData;
70814                }
70815                else if (true) {
70816                    var opts = c.componentOptions;
70817                    var name_1 = opts
70818                        ? getComponentName(opts.Ctor.options) || opts.tag || ''
70819                        : c.tag;
70820                    warn$2("<transition-group> children must be keyed: <".concat(name_1, ">"));
70821                }
70822            }
70823        }
70824        if (prevChildren) {
70825            var kept = [];
70826            var removed = [];
70827            for (var i = 0; i < prevChildren.length; i++) {
70828                var c = prevChildren[i];
70829                c.data.transition = transitionData;
70830                // @ts-expect-error .getBoundingClientRect is not typed in Node
70831                c.data.pos = c.elm.getBoundingClientRect();
70832                if (map[c.key]) {
70833                    kept.push(c);
70834                }
70835                else {
70836                    removed.push(c);
70837                }
70838            }
70839            this.kept = h(tag, null, kept);
70840            this.removed = removed;
70841        }
70842        return h(tag, null, children);
70843    },
70844    updated: function () {
70845        var children = this.prevChildren;
70846        var moveClass = this.moveClass || (this.name || 'v') + '-move';
70847        if (!children.length || !this.hasMove(children[0].elm, moveClass)) {
70848            return;
70849        }
70850        // we divide the work into three loops to avoid mixing DOM reads and writes
70851        // in each iteration - which helps prevent layout thrashing.
70852        children.forEach(callPendingCbs);
70853        children.forEach(recordPosition);
70854        children.forEach(applyTranslation);
70855        // force reflow to put everything in position
70856        // assign to this to avoid being removed in tree-shaking
70857        // $flow-disable-line
70858        this._reflow = document.body.offsetHeight;
70859        children.forEach(function (c) {
70860            if (c.data.moved) {
70861                var el_1 = c.elm;
70862                var s = el_1.style;
70863                addTransitionClass(el_1, moveClass);
70864                s.transform = s.WebkitTransform = s.transitionDuration = '';
70865                el_1.addEventListener(transitionEndEvent, (el_1._moveCb = function cb(e) {
70866                    if (e && e.target !== el_1) {
70867                        return;
70868                    }
70869                    if (!e || /transform$/.test(e.propertyName)) {
70870                        el_1.removeEventListener(transitionEndEvent, cb);
70871                        el_1._moveCb = null;
70872                        removeTransitionClass(el_1, moveClass);
70873                    }
70874                }));
70875            }
70876        });
70877    },
70878    methods: {
70879        hasMove: function (el, moveClass) {
70880            /* istanbul ignore if */
70881            if (!hasTransition) {
70882                return false;
70883            }
70884            /* istanbul ignore if */
70885            if (this._hasMove) {
70886                return this._hasMove;
70887            }
70888            // Detect whether an element with the move class applied has
70889            // CSS transitions. Since the element may be inside an entering
70890            // transition at this very moment, we make a clone of it and remove
70891            // all other transition classes applied to ensure only the move class
70892            // is applied.
70893            var clone = el.cloneNode();
70894            if (el._transitionClasses) {
70895                el._transitionClasses.forEach(function (cls) {
70896                    removeClass(clone, cls);
70897                });
70898            }
70899            addClass(clone, moveClass);
70900            clone.style.display = 'none';
70901            this.$el.appendChild(clone);
70902            var info = getTransitionInfo(clone);
70903            this.$el.removeChild(clone);
70904            return (this._hasMove = info.hasTransform);
70905        }
70906    }
70907};
70908function callPendingCbs(c) {
70909    /* istanbul ignore if */
70910    if (c.elm._moveCb) {
70911        c.elm._moveCb();
70912    }
70913    /* istanbul ignore if */
70914    if (c.elm._enterCb) {
70915        c.elm._enterCb();
70916    }
70917}
70918function recordPosition(c) {
70919    c.data.newPos = c.elm.getBoundingClientRect();
70920}
70921function applyTranslation(c) {
70922    var oldPos = c.data.pos;
70923    var newPos = c.data.newPos;
70924    var dx = oldPos.left - newPos.left;
70925    var dy = oldPos.top - newPos.top;
70926    if (dx || dy) {
70927        c.data.moved = true;
70928        var s = c.elm.style;
70929        s.transform = s.WebkitTransform = "translate(".concat(dx, "px,").concat(dy, "px)");
70930        s.transitionDuration = '0s';
70931    }
70932}
70933
70934var platformComponents = {
70935    Transition: Transition,
70936    TransitionGroup: TransitionGroup
70937};
70938
70939// install platform specific utils
70940Vue.config.mustUseProp = mustUseProp;
70941Vue.config.isReservedTag = isReservedTag;
70942Vue.config.isReservedAttr = isReservedAttr;
70943Vue.config.getTagNamespace = getTagNamespace;
70944Vue.config.isUnknownElement = isUnknownElement;
70945// install platform runtime directives & components
70946extend(Vue.options.directives, platformDirectives);
70947extend(Vue.options.components, platformComponents);
70948// install platform patch function
70949Vue.prototype.__patch__ = inBrowser ? patch : noop;
70950// public mount method
70951Vue.prototype.$mount = function (el, hydrating) {
70952    el = el && inBrowser ? query(el) : undefined;
70953    return mountComponent(this, el, hydrating);
70954};
70955// devtools global hook
70956/* istanbul ignore next */
70957if (inBrowser) {
70958    setTimeout(function () {
70959        if (config.devtools) {
70960            if (devtools) {
70961                devtools.emit('init', Vue);
70962            }
70963            else if (true) {
70964                // @ts-expect-error
70965                console[console.info ? 'info' : 'log']('Download the Vue Devtools extension for a better development experience:\n' +
70966                    'https://github.com/vuejs/vue-devtools');
70967            }
70968        }
70969        if ( true &&
70970            config.productionTip !== false &&
70971            typeof console !== 'undefined') {
70972            // @ts-expect-error
70973            console[console.info ? 'info' : 'log']("You are running Vue in development mode.\n" +
70974                "Make sure to turn on production mode when deploying for production.\n" +
70975                "See more tips at https://vuejs.org/guide/deployment.html");
70976        }
70977    }, 0);
70978}
70979
70980var defaultTagRE = /\{\{((?:.|\r?\n)+?)\}\}/g;
70981var regexEscapeRE = /[-.*+?^${}()|[\]\/\\]/g;
70982var buildRegex = cached(function (delimiters) {
70983    var open = delimiters[0].replace(regexEscapeRE, '\\$&');
70984    var close = delimiters[1].replace(regexEscapeRE, '\\$&');
70985    return new RegExp(open + '((?:.|\\n)+?)' + close, 'g');
70986});
70987function parseText(text, delimiters) {
70988    //@ts-expect-error
70989    var tagRE = delimiters ? buildRegex(delimiters) : defaultTagRE;
70990    if (!tagRE.test(text)) {
70991        return;
70992    }
70993    var tokens = [];
70994    var rawTokens = [];
70995    var lastIndex = (tagRE.lastIndex = 0);
70996    var match, index, tokenValue;
70997    while ((match = tagRE.exec(text))) {
70998        index = match.index;
70999        // push text token
71000        if (index > lastIndex) {
71001            rawTokens.push((tokenValue = text.slice(lastIndex, index)));
71002            tokens.push(JSON.stringify(tokenValue));
71003        }
71004        // tag token
71005        var exp = parseFilters(match[1].trim());
71006        tokens.push("_s(".concat(exp, ")"));
71007        rawTokens.push({ '@binding': exp });
71008        lastIndex = index + match[0].length;
71009    }
71010    if (lastIndex < text.length) {
71011        rawTokens.push((tokenValue = text.slice(lastIndex)));
71012        tokens.push(JSON.stringify(tokenValue));
71013    }
71014    return {
71015        expression: tokens.join('+'),
71016        tokens: rawTokens
71017    };
71018}
71019
71020function transformNode$1(el, options) {
71021    var warn = options.warn || baseWarn;
71022    var staticClass = getAndRemoveAttr(el, 'class');
71023    if ( true && staticClass) {
71024        var res = parseText(staticClass, options.delimiters);
71025        if (res) {
71026            warn("class=\"".concat(staticClass, "\": ") +
71027                'Interpolation inside attributes has been removed. ' +
71028                'Use v-bind or the colon shorthand instead. For example, ' +
71029                'instead of <div class="{{ val }}">, use <div :class="val">.', el.rawAttrsMap['class']);
71030        }
71031    }
71032    if (staticClass) {
71033        el.staticClass = JSON.stringify(staticClass.replace(/\s+/g, ' ').trim());
71034    }
71035    var classBinding = getBindingAttr(el, 'class', false /* getStatic */);
71036    if (classBinding) {
71037        el.classBinding = classBinding;
71038    }
71039}
71040function genData$2(el) {
71041    var data = '';
71042    if (el.staticClass) {
71043        data += "staticClass:".concat(el.staticClass, ",");
71044    }
71045    if (el.classBinding) {
71046        data += "class:".concat(el.classBinding, ",");
71047    }
71048    return data;
71049}
71050var klass = {
71051    staticKeys: ['staticClass'],
71052    transformNode: transformNode$1,
71053    genData: genData$2
71054};
71055
71056function transformNode(el, options) {
71057    var warn = options.warn || baseWarn;
71058    var staticStyle = getAndRemoveAttr(el, 'style');
71059    if (staticStyle) {
71060        /* istanbul ignore if */
71061        if (true) {
71062            var res = parseText(staticStyle, options.delimiters);
71063            if (res) {
71064                warn("style=\"".concat(staticStyle, "\": ") +
71065                    'Interpolation inside attributes has been removed. ' +
71066                    'Use v-bind or the colon shorthand instead. For example, ' +
71067                    'instead of <div style="{{ val }}">, use <div :style="val">.', el.rawAttrsMap['style']);
71068            }
71069        }
71070        el.staticStyle = JSON.stringify(parseStyleText(staticStyle));
71071    }
71072    var styleBinding = getBindingAttr(el, 'style', false /* getStatic */);
71073    if (styleBinding) {
71074        el.styleBinding = styleBinding;
71075    }
71076}
71077function genData$1(el) {
71078    var data = '';
71079    if (el.staticStyle) {
71080        data += "staticStyle:".concat(el.staticStyle, ",");
71081    }
71082    if (el.styleBinding) {
71083        data += "style:(".concat(el.styleBinding, "),");
71084    }
71085    return data;
71086}
71087var style = {
71088    staticKeys: ['staticStyle'],
71089    transformNode: transformNode,
71090    genData: genData$1
71091};
71092
71093var decoder;
71094var he = {
71095    decode: function (html) {
71096        decoder = decoder || document.createElement('div');
71097        decoder.innerHTML = html;
71098        return decoder.textContent;
71099    }
71100};
71101
71102var isUnaryTag = makeMap('area,base,br,col,embed,frame,hr,img,input,isindex,keygen,' +
71103    'link,meta,param,source,track,wbr');
71104// Elements that you can, intentionally, leave open
71105// (and which close themselves)
71106var canBeLeftOpenTag = makeMap('colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source');
71107// HTML5 tags https://html.spec.whatwg.org/multipage/indices.html#elements-3
71108// Phrasing Content https://html.spec.whatwg.org/multipage/dom.html#phrasing-content
71109var isNonPhrasingTag = makeMap('address,article,aside,base,blockquote,body,caption,col,colgroup,dd,' +
71110    'details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,' +
71111    'h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,' +
71112    'optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,' +
71113    'title,tr,track');
71114
71115/**
71116 * Not type-checking this file because it's mostly vendor code.
71117 */
71118// Regular Expressions for parsing tags and attributes
71119var attribute = /^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/;
71120var dynamicArgAttribute = /^\s*((?:v-[\w-]+:|@|:|#)\[[^=]+?\][^\s"'<>\/=]*)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/;
71121var ncname = "[a-zA-Z_][\\-\\.0-9_a-zA-Z".concat(unicodeRegExp.source, "]*");
71122var qnameCapture = "((?:".concat(ncname, "\\:)?").concat(ncname, ")");
71123var startTagOpen = new RegExp("^<".concat(qnameCapture));
71124var startTagClose = /^\s*(\/?)>/;
71125var endTag = new RegExp("^<\\/".concat(qnameCapture, "[^>]*>"));
71126var doctype = /^<!DOCTYPE [^>]+>/i;
71127// #7298: escape - to avoid being passed as HTML comment when inlined in page
71128var comment = /^<!\--/;
71129var conditionalComment = /^<!\[/;
71130// Special Elements (can contain anything)
71131var isPlainTextElement = makeMap('script,style,textarea', true);
71132var reCache = {};
71133var decodingMap = {
71134    '&lt;': '<',
71135    '&gt;': '>',
71136    '&quot;': '"',
71137    '&amp;': '&',
71138    '&#10;': '\n',
71139    '&#9;': '\t',
71140    '&#39;': "'"
71141};
71142var encodedAttr = /&(?:lt|gt|quot|amp|#39);/g;
71143var encodedAttrWithNewLines = /&(?:lt|gt|quot|amp|#39|#10|#9);/g;
71144// #5992
71145var isIgnoreNewlineTag = makeMap('pre,textarea', true);
71146var shouldIgnoreFirstNewline = function (tag, html) {
71147    return tag && isIgnoreNewlineTag(tag) && html[0] === '\n';
71148};
71149function decodeAttr(value, shouldDecodeNewlines) {
71150    var re = shouldDecodeNewlines ? encodedAttrWithNewLines : encodedAttr;
71151    return value.replace(re, function (match) { return decodingMap[match]; });
71152}
71153function parseHTML(html, options) {
71154    var stack = [];
71155    var expectHTML = options.expectHTML;
71156    var isUnaryTag = options.isUnaryTag || no;
71157    var canBeLeftOpenTag = options.canBeLeftOpenTag || no;
71158    var index = 0;
71159    var last, lastTag;
71160    var _loop_1 = function () {
71161        last = html;
71162        // Make sure we're not in a plaintext content element like script/style
71163        if (!lastTag || !isPlainTextElement(lastTag)) {
71164            var textEnd = html.indexOf('<');
71165            if (textEnd === 0) {
71166                // Comment:
71167                if (comment.test(html)) {
71168                    var commentEnd = html.indexOf('-->');
71169                    if (commentEnd >= 0) {
71170                        if (options.shouldKeepComment && options.comment) {
71171                            options.comment(html.substring(4, commentEnd), index, index + commentEnd + 3);
71172                        }
71173                        advance(commentEnd + 3);
71174                        return "continue";
71175                    }
71176                }
71177                // https://en.wikipedia.org/wiki/Conditional_comment#Downlevel-revealed_conditional_comment
71178                if (conditionalComment.test(html)) {
71179                    var conditionalEnd = html.indexOf(']>');
71180                    if (conditionalEnd >= 0) {
71181                        advance(conditionalEnd + 2);
71182                        return "continue";
71183                    }
71184                }
71185                // Doctype:
71186                var doctypeMatch = html.match(doctype);
71187                if (doctypeMatch) {
71188                    advance(doctypeMatch[0].length);
71189                    return "continue";
71190                }
71191                // End tag:
71192                var endTagMatch = html.match(endTag);
71193                if (endTagMatch) {
71194                    var curIndex = index;
71195                    advance(endTagMatch[0].length);
71196                    parseEndTag(endTagMatch[1], curIndex, index);
71197                    return "continue";
71198                }
71199                // Start tag:
71200                var startTagMatch = parseStartTag();
71201                if (startTagMatch) {
71202                    handleStartTag(startTagMatch);
71203                    if (shouldIgnoreFirstNewline(startTagMatch.tagName, html)) {
71204                        advance(1);
71205                    }
71206                    return "continue";
71207                }
71208            }
71209            var text = void 0, rest = void 0, next = void 0;
71210            if (textEnd >= 0) {
71211                rest = html.slice(textEnd);
71212                while (!endTag.test(rest) &&
71213                    !startTagOpen.test(rest) &&
71214                    !comment.test(rest) &&
71215                    !conditionalComment.test(rest)) {
71216                    // < in plain text, be forgiving and treat it as text
71217                    next = rest.indexOf('<', 1);
71218                    if (next < 0)
71219                        break;
71220                    textEnd += next;
71221                    rest = html.slice(textEnd);
71222                }
71223                text = html.substring(0, textEnd);
71224            }
71225            if (textEnd < 0) {
71226                text = html;
71227            }
71228            if (text) {
71229                advance(text.length);
71230            }
71231            if (options.chars && text) {
71232                options.chars(text, index - text.length, index);
71233            }
71234        }
71235        else {
71236            var endTagLength_1 = 0;
71237            var stackedTag_1 = lastTag.toLowerCase();
71238            var reStackedTag = reCache[stackedTag_1] ||
71239                (reCache[stackedTag_1] = new RegExp('([\\s\\S]*?)(</' + stackedTag_1 + '[^>]*>)', 'i'));
71240            var rest = html.replace(reStackedTag, function (all, text, endTag) {
71241                endTagLength_1 = endTag.length;
71242                if (!isPlainTextElement(stackedTag_1) && stackedTag_1 !== 'noscript') {
71243                    text = text
71244                        .replace(/<!\--([\s\S]*?)-->/g, '$1') // #7298
71245                        .replace(/<!\[CDATA\[([\s\S]*?)]]>/g, '$1');
71246                }
71247                if (shouldIgnoreFirstNewline(stackedTag_1, text)) {
71248                    text = text.slice(1);
71249                }
71250                if (options.chars) {
71251                    options.chars(text);
71252                }
71253                return '';
71254            });
71255            index += html.length - rest.length;
71256            html = rest;
71257            parseEndTag(stackedTag_1, index - endTagLength_1, index);
71258        }
71259        if (html === last) {
71260            options.chars && options.chars(html);
71261            if ( true && !stack.length && options.warn) {
71262                options.warn("Mal-formatted tag at end of template: \"".concat(html, "\""), {
71263                    start: index + html.length
71264                });
71265            }
71266            return "break";
71267        }
71268    };
71269    while (html) {
71270        var state_1 = _loop_1();
71271        if (state_1 === "break")
71272            break;
71273    }
71274    // Clean up any remaining tags
71275    parseEndTag();
71276    function advance(n) {
71277        index += n;
71278        html = html.substring(n);
71279    }
71280    function parseStartTag() {
71281        var start = html.match(startTagOpen);
71282        if (start) {
71283            var match = {
71284                tagName: start[1],
71285                attrs: [],
71286                start: index
71287            };
71288            advance(start[0].length);
71289            var end = void 0, attr = void 0;
71290            while (!(end = html.match(startTagClose)) &&
71291                (attr = html.match(dynamicArgAttribute) || html.match(attribute))) {
71292                attr.start = index;
71293                advance(attr[0].length);
71294                attr.end = index;
71295                match.attrs.push(attr);
71296            }
71297            if (end) {
71298                match.unarySlash = end[1];
71299                advance(end[0].length);
71300                match.end = index;
71301                return match;
71302            }
71303        }
71304    }
71305    function handleStartTag(match) {
71306        var tagName = match.tagName;
71307        var unarySlash = match.unarySlash;
71308        if (expectHTML) {
71309            if (lastTag === 'p' && isNonPhrasingTag(tagName)) {
71310                parseEndTag(lastTag);
71311            }
71312            if (canBeLeftOpenTag(tagName) && lastTag === tagName) {
71313                parseEndTag(tagName);
71314            }
71315        }
71316        var unary = isUnaryTag(tagName) || !!unarySlash;
71317        var l = match.attrs.length;
71318        var attrs = new Array(l);
71319        for (var i = 0; i < l; i++) {
71320            var args = match.attrs[i];
71321            var value = args[3] || args[4] || args[5] || '';
71322            var shouldDecodeNewlines = tagName === 'a' && args[1] === 'href'
71323                ? options.shouldDecodeNewlinesForHref
71324                : options.shouldDecodeNewlines;
71325            attrs[i] = {
71326                name: args[1],
71327                value: decodeAttr(value, shouldDecodeNewlines)
71328            };
71329            if ( true && options.outputSourceRange) {
71330                attrs[i].start = args.start + args[0].match(/^\s*/).length;
71331                attrs[i].end = args.end;
71332            }
71333        }
71334        if (!unary) {
71335            stack.push({
71336                tag: tagName,
71337                lowerCasedTag: tagName.toLowerCase(),
71338                attrs: attrs,
71339                start: match.start,
71340                end: match.end
71341            });
71342            lastTag = tagName;
71343        }
71344        if (options.start) {
71345            options.start(tagName, attrs, unary, match.start, match.end);
71346        }
71347    }
71348    function parseEndTag(tagName, start, end) {
71349        var pos, lowerCasedTagName;
71350        if (start == null)
71351            start = index;
71352        if (end == null)
71353            end = index;
71354        // Find the closest opened tag of the same type
71355        if (tagName) {
71356            lowerCasedTagName = tagName.toLowerCase();
71357            for (pos = stack.length - 1; pos >= 0; pos--) {
71358                if (stack[pos].lowerCasedTag === lowerCasedTagName) {
71359                    break;
71360                }
71361            }
71362        }
71363        else {
71364            // If no tag name is provided, clean shop
71365            pos = 0;
71366        }
71367        if (pos >= 0) {
71368            // Close all the open elements, up the stack
71369            for (var i = stack.length - 1; i >= pos; i--) {
71370                if ( true && (i > pos || !tagName) && options.warn) {
71371                    options.warn("tag <".concat(stack[i].tag, "> has no matching end tag."), {
71372                        start: stack[i].start,
71373                        end: stack[i].end
71374                    });
71375                }
71376                if (options.end) {
71377                    options.end(stack[i].tag, start, end);
71378                }
71379            }
71380            // Remove the open elements from the stack
71381            stack.length = pos;
71382            lastTag = pos && stack[pos - 1].tag;
71383        }
71384        else if (lowerCasedTagName === 'br') {
71385            if (options.start) {
71386                options.start(tagName, [], true, start, end);
71387            }
71388        }
71389        else if (lowerCasedTagName === 'p') {
71390            if (options.start) {
71391                options.start(tagName, [], false, start, end);
71392            }
71393            if (options.end) {
71394                options.end(tagName, start, end);
71395            }
71396        }
71397    }
71398}
71399
71400var onRE = /^@|^v-on:/;
71401var dirRE = /^v-|^@|^:|^#/;
71402var forAliasRE = /([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/;
71403var forIteratorRE = /,([^,\}\]]*)(?:,([^,\}\]]*))?$/;
71404var stripParensRE = /^\(|\)$/g;
71405var dynamicArgRE = /^\[.*\]$/;
71406var argRE = /:(.*)$/;
71407var bindRE = /^:|^\.|^v-bind:/;
71408var modifierRE = /\.[^.\]]+(?=[^\]]*$)/g;
71409var slotRE = /^v-slot(:|$)|^#/;
71410var lineBreakRE = /[\r\n]/;
71411var whitespaceRE = /[ \f\t\r\n]+/g;
71412var invalidAttributeRE = /[\s"'<>\/=]/;
71413var decodeHTMLCached = cached(he.decode);
71414var emptySlotScopeToken = "_empty_";
71415// configurable state
71416var warn;
71417var delimiters;
71418var transforms;
71419var preTransforms;
71420var postTransforms;
71421var platformIsPreTag;
71422var platformMustUseProp;
71423var platformGetTagNamespace;
71424var maybeComponent;
71425function createASTElement(tag, attrs, parent) {
71426    return {
71427        type: 1,
71428        tag: tag,
71429        attrsList: attrs,
71430        attrsMap: makeAttrsMap(attrs),
71431        rawAttrsMap: {},
71432        parent: parent,
71433        children: []
71434    };
71435}
71436/**
71437 * Convert HTML string to AST.
71438 */
71439function parse(template, options) {
71440    warn = options.warn || baseWarn;
71441    platformIsPreTag = options.isPreTag || no;
71442    platformMustUseProp = options.mustUseProp || no;
71443    platformGetTagNamespace = options.getTagNamespace || no;
71444    var isReservedTag = options.isReservedTag || no;
71445    maybeComponent = function (el) {
71446        return !!(el.component ||
71447            el.attrsMap[':is'] ||
71448            el.attrsMap['v-bind:is'] ||
71449            !(el.attrsMap.is ? isReservedTag(el.attrsMap.is) : isReservedTag(el.tag)));
71450    };
71451    transforms = pluckModuleFunction(options.modules, 'transformNode');
71452    preTransforms = pluckModuleFunction(options.modules, 'preTransformNode');
71453    postTransforms = pluckModuleFunction(options.modules, 'postTransformNode');
71454    delimiters = options.delimiters;
71455    var stack = [];
71456    var preserveWhitespace = options.preserveWhitespace !== false;
71457    var whitespaceOption = options.whitespace;
71458    var root;
71459    var currentParent;
71460    var inVPre = false;
71461    var inPre = false;
71462    var warned = false;
71463    function warnOnce(msg, range) {
71464        if (!warned) {
71465            warned = true;
71466            warn(msg, range);
71467        }
71468    }
71469    function closeElement(element) {
71470        trimEndingWhitespace(element);
71471        if (!inVPre && !element.processed) {
71472            element = processElement(element, options);
71473        }
71474        // tree management
71475        if (!stack.length && element !== root) {
71476            // allow root elements with v-if, v-else-if and v-else
71477            if (root.if && (element.elseif || element.else)) {
71478                if (true) {
71479                    checkRootConstraints(element);
71480                }
71481                addIfCondition(root, {
71482                    exp: element.elseif,
71483                    block: element
71484                });
71485            }
71486            else if (true) {
71487                warnOnce("Component template should contain exactly one root element. " +
71488                    "If you are using v-if on multiple elements, " +
71489                    "use v-else-if to chain them instead.", { start: element.start });
71490            }
71491        }
71492        if (currentParent && !element.forbidden) {
71493            if (element.elseif || element.else) {
71494                processIfConditions(element, currentParent);
71495            }
71496            else {
71497                if (element.slotScope) {
71498                    // scoped slot
71499                    // keep it in the children list so that v-else(-if) conditions can
71500                    // find it as the prev node.
71501                    var name_1 = element.slotTarget || '"default"';
71502                    (currentParent.scopedSlots || (currentParent.scopedSlots = {}))[name_1] = element;
71503                }
71504                currentParent.children.push(element);
71505                element.parent = currentParent;
71506            }
71507        }
71508        // final children cleanup
71509        // filter out scoped slots
71510        element.children = element.children.filter(function (c) { return !c.slotScope; });
71511        // remove trailing whitespace node again
71512        trimEndingWhitespace(element);
71513        // check pre state
71514        if (element.pre) {
71515            inVPre = false;
71516        }
71517        if (platformIsPreTag(element.tag)) {
71518            inPre = false;
71519        }
71520        // apply post-transforms
71521        for (var i = 0; i < postTransforms.length; i++) {
71522            postTransforms[i](element, options);
71523        }
71524    }
71525    function trimEndingWhitespace(el) {
71526        // remove trailing whitespace node
71527        if (!inPre) {
71528            var lastNode = void 0;
71529            while ((lastNode = el.children[el.children.length - 1]) &&
71530                lastNode.type === 3 &&
71531                lastNode.text === ' ') {
71532                el.children.pop();
71533            }
71534        }
71535    }
71536    function checkRootConstraints(el) {
71537        if (el.tag === 'slot' || el.tag === 'template') {
71538            warnOnce("Cannot use <".concat(el.tag, "> as component root element because it may ") +
71539                'contain multiple nodes.', { start: el.start });
71540        }
71541        if (el.attrsMap.hasOwnProperty('v-for')) {
71542            warnOnce('Cannot use v-for on stateful component root element because ' +
71543                'it renders multiple elements.', el.rawAttrsMap['v-for']);
71544        }
71545    }
71546    parseHTML(template, {
71547        warn: warn,
71548        expectHTML: options.expectHTML,
71549        isUnaryTag: options.isUnaryTag,
71550        canBeLeftOpenTag: options.canBeLeftOpenTag,
71551        shouldDecodeNewlines: options.shouldDecodeNewlines,
71552        shouldDecodeNewlinesForHref: options.shouldDecodeNewlinesForHref,
71553        shouldKeepComment: options.comments,
71554        outputSourceRange: options.outputSourceRange,
71555        start: function (tag, attrs, unary, start, end) {
71556            // check namespace.
71557            // inherit parent ns if there is one
71558            var ns = (currentParent && currentParent.ns) || platformGetTagNamespace(tag);
71559            // handle IE svg bug
71560            /* istanbul ignore if */
71561            if (isIE && ns === 'svg') {
71562                attrs = guardIESVGBug(attrs);
71563            }
71564            var element = createASTElement(tag, attrs, currentParent);
71565            if (ns) {
71566                element.ns = ns;
71567            }
71568            if (true) {
71569                if (options.outputSourceRange) {
71570                    element.start = start;
71571                    element.end = end;
71572                    element.rawAttrsMap = element.attrsList.reduce(function (cumulated, attr) {
71573                        cumulated[attr.name] = attr;
71574                        return cumulated;
71575                    }, {});
71576                }
71577                attrs.forEach(function (attr) {
71578                    if (invalidAttributeRE.test(attr.name)) {
71579                        warn("Invalid dynamic argument expression: attribute names cannot contain " +
71580                            "spaces, quotes, <, >, / or =.", options.outputSourceRange
71581                            ? {
71582                                start: attr.start + attr.name.indexOf("["),
71583                                end: attr.start + attr.name.length
71584                            }
71585                            : undefined);
71586                    }
71587                });
71588            }
71589            if (isForbiddenTag(element) && !isServerRendering()) {
71590                element.forbidden = true;
71591                 true &&
71592                    warn('Templates should only be responsible for mapping the state to the ' +
71593                        'UI. Avoid placing tags with side-effects in your templates, such as ' +
71594                        "<".concat(tag, ">") +
71595                        ', as they will not be parsed.', { start: element.start });
71596            }
71597            // apply pre-transforms
71598            for (var i = 0; i < preTransforms.length; i++) {
71599                element = preTransforms[i](element, options) || element;
71600            }
71601            if (!inVPre) {
71602                processPre(element);
71603                if (element.pre) {
71604                    inVPre = true;
71605                }
71606            }
71607            if (platformIsPreTag(element.tag)) {
71608                inPre = true;
71609            }
71610            if (inVPre) {
71611                processRawAttrs(element);
71612            }
71613            else if (!element.processed) {
71614                // structural directives
71615                processFor(element);
71616                processIf(element);
71617                processOnce(element);
71618            }
71619            if (!root) {
71620                root = element;
71621                if (true) {
71622                    checkRootConstraints(root);
71623                }
71624            }
71625            if (!unary) {
71626                currentParent = element;
71627                stack.push(element);
71628            }
71629            else {
71630                closeElement(element);
71631            }
71632        },
71633        end: function (tag, start, end) {
71634            var element = stack[stack.length - 1];
71635            // pop stack
71636            stack.length -= 1;
71637            currentParent = stack[stack.length - 1];
71638            if ( true && options.outputSourceRange) {
71639                element.end = end;
71640            }
71641            closeElement(element);
71642        },
71643        chars: function (text, start, end) {
71644            if (!currentParent) {
71645                if (true) {
71646                    if (text === template) {
71647                        warnOnce('Component template requires a root element, rather than just text.', { start: start });
71648                    }
71649                    else if ((text = text.trim())) {
71650                        warnOnce("text \"".concat(text, "\" outside root element will be ignored."), {
71651                            start: start
71652                        });
71653                    }
71654                }
71655                return;
71656            }
71657            // IE textarea placeholder bug
71658            /* istanbul ignore if */
71659            if (isIE &&
71660                currentParent.tag === 'textarea' &&
71661                currentParent.attrsMap.placeholder === text) {
71662                return;
71663            }
71664            var children = currentParent.children;
71665            if (inPre || text.trim()) {
71666                text = isTextTag(currentParent)
71667                    ? text
71668                    : decodeHTMLCached(text);
71669            }
71670            else if (!children.length) {
71671                // remove the whitespace-only node right after an opening tag
71672                text = '';
71673            }
71674            else if (whitespaceOption) {
71675                if (whitespaceOption === 'condense') {
71676                    // in condense mode, remove the whitespace node if it contains
71677                    // line break, otherwise condense to a single space
71678                    text = lineBreakRE.test(text) ? '' : ' ';
71679                }
71680                else {
71681                    text = ' ';
71682                }
71683            }
71684            else {
71685                text = preserveWhitespace ? ' ' : '';
71686            }
71687            if (text) {
71688                if (!inPre && whitespaceOption === 'condense') {
71689                    // condense consecutive whitespaces into single space
71690                    text = text.replace(whitespaceRE, ' ');
71691                }
71692                var res = void 0;
71693                var child = void 0;
71694                if (!inVPre && text !== ' ' && (res = parseText(text, delimiters))) {
71695                    child = {
71696                        type: 2,
71697                        expression: res.expression,
71698                        tokens: res.tokens,
71699                        text: text
71700                    };
71701                }
71702                else if (text !== ' ' ||
71703                    !children.length ||
71704                    children[children.length - 1].text !== ' ') {
71705                    child = {
71706                        type: 3,
71707                        text: text
71708                    };
71709                }
71710                if (child) {
71711                    if ( true && options.outputSourceRange) {
71712                        child.start = start;
71713                        child.end = end;
71714                    }
71715                    children.push(child);
71716                }
71717            }
71718        },
71719        comment: function (text, start, end) {
71720            // adding anything as a sibling to the root node is forbidden
71721            // comments should still be allowed, but ignored
71722            if (currentParent) {
71723                var child = {
71724                    type: 3,
71725                    text: text,
71726                    isComment: true
71727                };
71728                if ( true && options.outputSourceRange) {
71729                    child.start = start;
71730                    child.end = end;
71731                }
71732                currentParent.children.push(child);
71733            }
71734        }
71735    });
71736    return root;
71737}
71738function processPre(el) {
71739    if (getAndRemoveAttr(el, 'v-pre') != null) {
71740        el.pre = true;
71741    }
71742}
71743function processRawAttrs(el) {
71744    var list = el.attrsList;
71745    var len = list.length;
71746    if (len) {
71747        var attrs = (el.attrs = new Array(len));
71748        for (var i = 0; i < len; i++) {
71749            attrs[i] = {
71750                name: list[i].name,
71751                value: JSON.stringify(list[i].value)
71752            };
71753            if (list[i].start != null) {
71754                attrs[i].start = list[i].start;
71755                attrs[i].end = list[i].end;
71756            }
71757        }
71758    }
71759    else if (!el.pre) {
71760        // non root node in pre blocks with no attributes
71761        el.plain = true;
71762    }
71763}
71764function processElement(element, options) {
71765    processKey(element);
71766    // determine whether this is a plain element after
71767    // removing structural attributes
71768    element.plain =
71769        !element.key && !element.scopedSlots && !element.attrsList.length;
71770    processRef(element);
71771    processSlotContent(element);
71772    processSlotOutlet(element);
71773    processComponent(element);
71774    for (var i = 0; i < transforms.length; i++) {
71775        element = transforms[i](element, options) || element;
71776    }
71777    processAttrs(element);
71778    return element;
71779}
71780function processKey(el) {
71781    var exp = getBindingAttr(el, 'key');
71782    if (exp) {
71783        if (true) {
71784            if (el.tag === 'template') {
71785                warn("<template> cannot be keyed. Place the key on real elements instead.", getRawBindingAttr(el, 'key'));
71786            }
71787            if (el.for) {
71788                var iterator = el.iterator2 || el.iterator1;
71789                var parent_1 = el.parent;
71790                if (iterator &&
71791                    iterator === exp &&
71792                    parent_1 &&
71793                    parent_1.tag === 'transition-group') {
71794                    warn("Do not use v-for index as key on <transition-group> children, " +
71795                        "this is the same as not using keys.", getRawBindingAttr(el, 'key'), true /* tip */);
71796                }
71797            }
71798        }
71799        el.key = exp;
71800    }
71801}
71802function processRef(el) {
71803    var ref = getBindingAttr(el, 'ref');
71804    if (ref) {
71805        el.ref = ref;
71806        el.refInFor = checkInFor(el);
71807    }
71808}
71809function processFor(el) {
71810    var exp;
71811    if ((exp = getAndRemoveAttr(el, 'v-for'))) {
71812        var res = parseFor(exp);
71813        if (res) {
71814            extend(el, res);
71815        }
71816        else if (true) {
71817            warn("Invalid v-for expression: ".concat(exp), el.rawAttrsMap['v-for']);
71818        }
71819    }
71820}
71821function parseFor(exp) {
71822    var inMatch = exp.match(forAliasRE);
71823    if (!inMatch)
71824        return;
71825    var res = {};
71826    res.for = inMatch[2].trim();
71827    var alias = inMatch[1].trim().replace(stripParensRE, '');
71828    var iteratorMatch = alias.match(forIteratorRE);
71829    if (iteratorMatch) {
71830        res.alias = alias.replace(forIteratorRE, '').trim();
71831        res.iterator1 = iteratorMatch[1].trim();
71832        if (iteratorMatch[2]) {
71833            res.iterator2 = iteratorMatch[2].trim();
71834        }
71835    }
71836    else {
71837        res.alias = alias;
71838    }
71839    return res;
71840}
71841function processIf(el) {
71842    var exp = getAndRemoveAttr(el, 'v-if');
71843    if (exp) {
71844        el.if = exp;
71845        addIfCondition(el, {
71846            exp: exp,
71847            block: el
71848        });
71849    }
71850    else {
71851        if (getAndRemoveAttr(el, 'v-else') != null) {
71852            el.else = true;
71853        }
71854        var elseif = getAndRemoveAttr(el, 'v-else-if');
71855        if (elseif) {
71856            el.elseif = elseif;
71857        }
71858    }
71859}
71860function processIfConditions(el, parent) {
71861    var prev = findPrevElement(parent.children);
71862    if (prev && prev.if) {
71863        addIfCondition(prev, {
71864            exp: el.elseif,
71865            block: el
71866        });
71867    }
71868    else if (true) {
71869        warn("v-".concat(el.elseif ? 'else-if="' + el.elseif + '"' : 'else', " ") +
71870            "used on element <".concat(el.tag, "> without corresponding v-if."), el.rawAttrsMap[el.elseif ? 'v-else-if' : 'v-else']);
71871    }
71872}
71873function findPrevElement(children) {
71874    var i = children.length;
71875    while (i--) {
71876        if (children[i].type === 1) {
71877            return children[i];
71878        }
71879        else {
71880            if ( true && children[i].text !== ' ') {
71881                warn("text \"".concat(children[i].text.trim(), "\" between v-if and v-else(-if) ") +
71882                    "will be ignored.", children[i]);
71883            }
71884            children.pop();
71885        }
71886    }
71887}
71888function addIfCondition(el, condition) {
71889    if (!el.ifConditions) {
71890        el.ifConditions = [];
71891    }
71892    el.ifConditions.push(condition);
71893}
71894function processOnce(el) {
71895    var once = getAndRemoveAttr(el, 'v-once');
71896    if (once != null) {
71897        el.once = true;
71898    }
71899}
71900// handle content being passed to a component as slot,
71901// e.g. <template slot="xxx">, <div slot-scope="xxx">
71902function processSlotContent(el) {
71903    var slotScope;
71904    if (el.tag === 'template') {
71905        slotScope = getAndRemoveAttr(el, 'scope');
71906        /* istanbul ignore if */
71907        if ( true && slotScope) {
71908            warn("the \"scope\" attribute for scoped slots have been deprecated and " +
71909                "replaced by \"slot-scope\" since 2.5. The new \"slot-scope\" attribute " +
71910                "can also be used on plain elements in addition to <template> to " +
71911                "denote scoped slots.", el.rawAttrsMap['scope'], true);
71912        }
71913        el.slotScope = slotScope || getAndRemoveAttr(el, 'slot-scope');
71914    }
71915    else if ((slotScope = getAndRemoveAttr(el, 'slot-scope'))) {
71916        /* istanbul ignore if */
71917        if ( true && el.attrsMap['v-for']) {
71918            warn("Ambiguous combined usage of slot-scope and v-for on <".concat(el.tag, "> ") +
71919                "(v-for takes higher priority). Use a wrapper <template> for the " +
71920                "scoped slot to make it clearer.", el.rawAttrsMap['slot-scope'], true);
71921        }
71922        el.slotScope = slotScope;
71923    }
71924    // slot="xxx"
71925    var slotTarget = getBindingAttr(el, 'slot');
71926    if (slotTarget) {
71927        el.slotTarget = slotTarget === '""' ? '"default"' : slotTarget;
71928        el.slotTargetDynamic = !!(el.attrsMap[':slot'] || el.attrsMap['v-bind:slot']);
71929        // preserve slot as an attribute for native shadow DOM compat
71930        // only for non-scoped slots.
71931        if (el.tag !== 'template' && !el.slotScope) {
71932            addAttr(el, 'slot', slotTarget, getRawBindingAttr(el, 'slot'));
71933        }
71934    }
71935    // 2.6 v-slot syntax
71936    {
71937        if (el.tag === 'template') {
71938            // v-slot on <template>
71939            var slotBinding = getAndRemoveAttrByRegex(el, slotRE);
71940            if (slotBinding) {
71941                if (true) {
71942                    if (el.slotTarget || el.slotScope) {
71943                        warn("Unexpected mixed usage of different slot syntaxes.", el);
71944                    }
71945                    if (el.parent && !maybeComponent(el.parent)) {
71946                        warn("<template v-slot> can only appear at the root level inside " +
71947                            "the receiving component", el);
71948                    }
71949                }
71950                var _a = getSlotName(slotBinding), name_2 = _a.name, dynamic = _a.dynamic;
71951                el.slotTarget = name_2;
71952                el.slotTargetDynamic = dynamic;
71953                el.slotScope = slotBinding.value || emptySlotScopeToken; // force it into a scoped slot for perf
71954            }
71955        }
71956        else {
71957            // v-slot on component, denotes default slot
71958            var slotBinding = getAndRemoveAttrByRegex(el, slotRE);
71959            if (slotBinding) {
71960                if (true) {
71961                    if (!maybeComponent(el)) {
71962                        warn("v-slot can only be used on components or <template>.", slotBinding);
71963                    }
71964                    if (el.slotScope || el.slotTarget) {
71965                        warn("Unexpected mixed usage of different slot syntaxes.", el);
71966                    }
71967                    if (el.scopedSlots) {
71968                        warn("To avoid scope ambiguity, the default slot should also use " +
71969                            "<template> syntax when there are other named slots.", slotBinding);
71970                    }
71971                }
71972                // add the component's children to its default slot
71973                var slots = el.scopedSlots || (el.scopedSlots = {});
71974                var _b = getSlotName(slotBinding), name_3 = _b.name, dynamic = _b.dynamic;
71975                var slotContainer_1 = (slots[name_3] = createASTElement('template', [], el));
71976                slotContainer_1.slotTarget = name_3;
71977                slotContainer_1.slotTargetDynamic = dynamic;
71978                slotContainer_1.children = el.children.filter(function (c) {
71979                    if (!c.slotScope) {
71980                        c.parent = slotContainer_1;
71981                        return true;
71982                    }
71983                });
71984                slotContainer_1.slotScope = slotBinding.value || emptySlotScopeToken;
71985                // remove children as they are returned from scopedSlots now
71986                el.children = [];
71987                // mark el non-plain so data gets generated
71988                el.plain = false;
71989            }
71990        }
71991    }
71992}
71993function getSlotName(binding) {
71994    var name = binding.name.replace(slotRE, '');
71995    if (!name) {
71996        if (binding.name[0] !== '#') {
71997            name = 'default';
71998        }
71999        else if (true) {
72000            warn("v-slot shorthand syntax requires a slot name.", binding);
72001        }
72002    }
72003    return dynamicArgRE.test(name)
72004        ? // dynamic [name]
72005            { name: name.slice(1, -1), dynamic: true }
72006        : // static name
72007            { name: "\"".concat(name, "\""), dynamic: false };
72008}
72009// handle <slot/> outlets
72010function processSlotOutlet(el) {
72011    if (el.tag === 'slot') {
72012        el.slotName = getBindingAttr(el, 'name');
72013        if ( true && el.key) {
72014            warn("`key` does not work on <slot> because slots are abstract outlets " +
72015                "and can possibly expand into multiple elements. " +
72016                "Use the key on a wrapping element instead.", getRawBindingAttr(el, 'key'));
72017        }
72018    }
72019}
72020function processComponent(el) {
72021    var binding;
72022    if ((binding = getBindingAttr(el, 'is'))) {
72023        el.component = binding;
72024    }
72025    if (getAndRemoveAttr(el, 'inline-template') != null) {
72026        el.inlineTemplate = true;
72027    }
72028}
72029function processAttrs(el) {
72030    var list = el.attrsList;
72031    var i, l, name, rawName, value, modifiers, syncGen, isDynamic;
72032    for (i = 0, l = list.length; i < l; i++) {
72033        name = rawName = list[i].name;
72034        value = list[i].value;
72035        if (dirRE.test(name)) {
72036            // mark element as dynamic
72037            el.hasBindings = true;
72038            // modifiers
72039            modifiers = parseModifiers(name.replace(dirRE, ''));
72040            // support .foo shorthand syntax for the .prop modifier
72041            if (modifiers) {
72042                name = name.replace(modifierRE, '');
72043            }
72044            if (bindRE.test(name)) {
72045                // v-bind
72046                name = name.replace(bindRE, '');
72047                value = parseFilters(value);
72048                isDynamic = dynamicArgRE.test(name);
72049                if (isDynamic) {
72050                    name = name.slice(1, -1);
72051                }
72052                if ( true && value.trim().length === 0) {
72053                    warn("The value for a v-bind expression cannot be empty. Found in \"v-bind:".concat(name, "\""));
72054                }
72055                if (modifiers) {
72056                    if (modifiers.prop && !isDynamic) {
72057                        name = camelize(name);
72058                        if (name === 'innerHtml')
72059                            name = 'innerHTML';
72060                    }
72061                    if (modifiers.camel && !isDynamic) {
72062                        name = camelize(name);
72063                    }
72064                    if (modifiers.sync) {
72065                        syncGen = genAssignmentCode(value, "$event");
72066                        if (!isDynamic) {
72067                            addHandler(el, "update:".concat(camelize(name)), syncGen, null, false, warn, list[i]);
72068                            if (hyphenate(name) !== camelize(name)) {
72069                                addHandler(el, "update:".concat(hyphenate(name)), syncGen, null, false, warn, list[i]);
72070                            }
72071                        }
72072                        else {
72073                            // handler w/ dynamic event name
72074                            addHandler(el, "\"update:\"+(".concat(name, ")"), syncGen, null, false, warn, list[i], true // dynamic
72075                            );
72076                        }
72077                    }
72078                }
72079                if ((modifiers && modifiers.prop) ||
72080                    (!el.component && platformMustUseProp(el.tag, el.attrsMap.type, name))) {
72081                    addProp(el, name, value, list[i], isDynamic);
72082                }
72083                else {
72084                    addAttr(el, name, value, list[i], isDynamic);
72085                }
72086            }
72087            else if (onRE.test(name)) {
72088                // v-on
72089                name = name.replace(onRE, '');
72090                isDynamic = dynamicArgRE.test(name);
72091                if (isDynamic) {
72092                    name = name.slice(1, -1);
72093                }
72094                addHandler(el, name, value, modifiers, false, warn, list[i], isDynamic);
72095            }
72096            else {
72097                // normal directives
72098                name = name.replace(dirRE, '');
72099                // parse arg
72100                var argMatch = name.match(argRE);
72101                var arg = argMatch && argMatch[1];
72102                isDynamic = false;
72103                if (arg) {
72104                    name = name.slice(0, -(arg.length + 1));
72105                    if (dynamicArgRE.test(arg)) {
72106                        arg = arg.slice(1, -1);
72107                        isDynamic = true;
72108                    }
72109                }
72110                addDirective(el, name, rawName, value, arg, isDynamic, modifiers, list[i]);
72111                if ( true && name === 'model') {
72112                    checkForAliasModel(el, value);
72113                }
72114            }
72115        }
72116        else {
72117            // literal attribute
72118            if (true) {
72119                var res = parseText(value, delimiters);
72120                if (res) {
72121                    warn("".concat(name, "=\"").concat(value, "\": ") +
72122                        'Interpolation inside attributes has been removed. ' +
72123                        'Use v-bind or the colon shorthand instead. For example, ' +
72124                        'instead of <div id="{{ val }}">, use <div :id="val">.', list[i]);
72125                }
72126            }
72127            addAttr(el, name, JSON.stringify(value), list[i]);
72128            // #6887 firefox doesn't update muted state if set via attribute
72129            // even immediately after element creation
72130            if (!el.component &&
72131                name === 'muted' &&
72132                platformMustUseProp(el.tag, el.attrsMap.type, name)) {
72133                addProp(el, name, 'true', list[i]);
72134            }
72135        }
72136    }
72137}
72138function checkInFor(el) {
72139    var parent = el;
72140    while (parent) {
72141        if (parent.for !== undefined) {
72142            return true;
72143        }
72144        parent = parent.parent;
72145    }
72146    return false;
72147}
72148function parseModifiers(name) {
72149    var match = name.match(modifierRE);
72150    if (match) {
72151        var ret_1 = {};
72152        match.forEach(function (m) {
72153            ret_1[m.slice(1)] = true;
72154        });
72155        return ret_1;
72156    }
72157}
72158function makeAttrsMap(attrs) {
72159    var map = {};
72160    for (var i = 0, l = attrs.length; i < l; i++) {
72161        if ( true && map[attrs[i].name] && !isIE && !isEdge) {
72162            warn('duplicate attribute: ' + attrs[i].name, attrs[i]);
72163        }
72164        map[attrs[i].name] = attrs[i].value;
72165    }
72166    return map;
72167}
72168// for script (e.g. type="x/template") or style, do not decode content
72169function isTextTag(el) {
72170    return el.tag === 'script' || el.tag === 'style';
72171}
72172function isForbiddenTag(el) {
72173    return (el.tag === 'style' ||
72174        (el.tag === 'script' &&
72175            (!el.attrsMap.type || el.attrsMap.type === 'text/javascript')));
72176}
72177var ieNSBug = /^xmlns:NS\d+/;
72178var ieNSPrefix = /^NS\d+:/;
72179/* istanbul ignore next */
72180function guardIESVGBug(attrs) {
72181    var res = [];
72182    for (var i = 0; i < attrs.length; i++) {
72183        var attr = attrs[i];
72184        if (!ieNSBug.test(attr.name)) {
72185            attr.name = attr.name.replace(ieNSPrefix, '');
72186            res.push(attr);
72187        }
72188    }
72189    return res;
72190}
72191function checkForAliasModel(el, value) {
72192    var _el = el;
72193    while (_el) {
72194        if (_el.for && _el.alias === value) {
72195            warn("<".concat(el.tag, " v-model=\"").concat(value, "\">: ") +
72196                "You are binding v-model directly to a v-for iteration alias. " +
72197                "This will not be able to modify the v-for source array because " +
72198                "writing to the alias is like modifying a function local variable. " +
72199                "Consider using an array of objects and use v-model on an object property instead.", el.rawAttrsMap['v-model']);
72200        }
72201        _el = _el.parent;
72202    }
72203}
72204
72205/**
72206 * Expand input[v-model] with dynamic type bindings into v-if-else chains
72207 * Turn this:
72208 *   <input v-model="data[type]" :type="type">
72209 * into this:
72210 *   <input v-if="type === 'checkbox'" type="checkbox" v-model="data[type]">
72211 *   <input v-else-if="type === 'radio'" type="radio" v-model="data[type]">
72212 *   <input v-else :type="type" v-model="data[type]">
72213 */
72214function preTransformNode(el, options) {
72215    if (el.tag === 'input') {
72216        var map = el.attrsMap;
72217        if (!map['v-model']) {
72218            return;
72219        }
72220        var typeBinding = void 0;
72221        if (map[':type'] || map['v-bind:type']) {
72222            typeBinding = getBindingAttr(el, 'type');
72223        }
72224        if (!map.type && !typeBinding && map['v-bind']) {
72225            typeBinding = "(".concat(map['v-bind'], ").type");
72226        }
72227        if (typeBinding) {
72228            var ifCondition = getAndRemoveAttr(el, 'v-if', true);
72229            var ifConditionExtra = ifCondition ? "&&(".concat(ifCondition, ")") : "";
72230            var hasElse = getAndRemoveAttr(el, 'v-else', true) != null;
72231            var elseIfCondition = getAndRemoveAttr(el, 'v-else-if', true);
72232            // 1. checkbox
72233            var branch0 = cloneASTElement(el);
72234            // process for on the main node
72235            processFor(branch0);
72236            addRawAttr(branch0, 'type', 'checkbox');
72237            processElement(branch0, options);
72238            branch0.processed = true; // prevent it from double-processed
72239            branch0.if = "(".concat(typeBinding, ")==='checkbox'") + ifConditionExtra;
72240            addIfCondition(branch0, {
72241                exp: branch0.if,
72242                block: branch0
72243            });
72244            // 2. add radio else-if condition
72245            var branch1 = cloneASTElement(el);
72246            getAndRemoveAttr(branch1, 'v-for', true);
72247            addRawAttr(branch1, 'type', 'radio');
72248            processElement(branch1, options);
72249            addIfCondition(branch0, {
72250                exp: "(".concat(typeBinding, ")==='radio'") + ifConditionExtra,
72251                block: branch1
72252            });
72253            // 3. other
72254            var branch2 = cloneASTElement(el);
72255            getAndRemoveAttr(branch2, 'v-for', true);
72256            addRawAttr(branch2, ':type', typeBinding);
72257            processElement(branch2, options);
72258            addIfCondition(branch0, {
72259                exp: ifCondition,
72260                block: branch2
72261            });
72262            if (hasElse) {
72263                branch0.else = true;
72264            }
72265            else if (elseIfCondition) {
72266                branch0.elseif = elseIfCondition;
72267            }
72268            return branch0;
72269        }
72270    }
72271}
72272function cloneASTElement(el) {
72273    return createASTElement(el.tag, el.attrsList.slice(), el.parent);
72274}
72275var model = {
72276    preTransformNode: preTransformNode
72277};
72278
72279var modules = [klass, style, model];
72280
72281function text(el, dir) {
72282    if (dir.value) {
72283        addProp(el, 'textContent', "_s(".concat(dir.value, ")"), dir);
72284    }
72285}
72286
72287function html(el, dir) {
72288    if (dir.value) {
72289        addProp(el, 'innerHTML', "_s(".concat(dir.value, ")"), dir);
72290    }
72291}
72292
72293var directives = {
72294    model: model$1,
72295    text: text,
72296    html: html
72297};
72298
72299var baseOptions = {
72300    expectHTML: true,
72301    modules: modules,
72302    directives: directives,
72303    isPreTag: isPreTag,
72304    isUnaryTag: isUnaryTag,
72305    mustUseProp: mustUseProp,
72306    canBeLeftOpenTag: canBeLeftOpenTag,
72307    isReservedTag: isReservedTag,
72308    getTagNamespace: getTagNamespace,
72309    staticKeys: genStaticKeys$1(modules)
72310};
72311
72312var isStaticKey;
72313var isPlatformReservedTag;
72314var genStaticKeysCached = cached(genStaticKeys);
72315/**
72316 * Goal of the optimizer: walk the generated template AST tree
72317 * and detect sub-trees that are purely static, i.e. parts of
72318 * the DOM that never needs to change.
72319 *
72320 * Once we detect these sub-trees, we can:
72321 *
72322 * 1. Hoist them into constants, so that we no longer need to
72323 *    create fresh nodes for them on each re-render;
72324 * 2. Completely skip them in the patching process.
72325 */
72326function optimize(root, options) {
72327    if (!root)
72328        return;
72329    isStaticKey = genStaticKeysCached(options.staticKeys || '');
72330    isPlatformReservedTag = options.isReservedTag || no;
72331    // first pass: mark all non-static nodes.
72332    markStatic(root);
72333    // second pass: mark static roots.
72334    markStaticRoots(root, false);
72335}
72336function genStaticKeys(keys) {
72337    return makeMap('type,tag,attrsList,attrsMap,plain,parent,children,attrs,start,end,rawAttrsMap' +
72338        (keys ? ',' + keys : ''));
72339}
72340function markStatic(node) {
72341    node.static = isStatic(node);
72342    if (node.type === 1) {
72343        // do not make component slot content static. this avoids
72344        // 1. components not able to mutate slot nodes
72345        // 2. static slot content fails for hot-reloading
72346        if (!isPlatformReservedTag(node.tag) &&
72347            node.tag !== 'slot' &&
72348            node.attrsMap['inline-template'] == null) {
72349            return;
72350        }
72351        for (var i = 0, l = node.children.length; i < l; i++) {
72352            var child = node.children[i];
72353            markStatic(child);
72354            if (!child.static) {
72355                node.static = false;
72356            }
72357        }
72358        if (node.ifConditions) {
72359            for (var i = 1, l = node.ifConditions.length; i < l; i++) {
72360                var block = node.ifConditions[i].block;
72361                markStatic(block);
72362                if (!block.static) {
72363                    node.static = false;
72364                }
72365            }
72366        }
72367    }
72368}
72369function markStaticRoots(node, isInFor) {
72370    if (node.type === 1) {
72371        if (node.static || node.once) {
72372            node.staticInFor = isInFor;
72373        }
72374        // For a node to qualify as a static root, it should have children that
72375        // are not just static text. Otherwise the cost of hoisting out will
72376        // outweigh the benefits and it's better off to just always render it fresh.
72377        if (node.static &&
72378            node.children.length &&
72379            !(node.children.length === 1 && node.children[0].type === 3)) {
72380            node.staticRoot = true;
72381            return;
72382        }
72383        else {
72384            node.staticRoot = false;
72385        }
72386        if (node.children) {
72387            for (var i = 0, l = node.children.length; i < l; i++) {
72388                markStaticRoots(node.children[i], isInFor || !!node.for);
72389            }
72390        }
72391        if (node.ifConditions) {
72392            for (var i = 1, l = node.ifConditions.length; i < l; i++) {
72393                markStaticRoots(node.ifConditions[i].block, isInFor);
72394            }
72395        }
72396    }
72397}
72398function isStatic(node) {
72399    if (node.type === 2) {
72400        // expression
72401        return false;
72402    }
72403    if (node.type === 3) {
72404        // text
72405        return true;
72406    }
72407    return !!(node.pre ||
72408        (!node.hasBindings && // no dynamic bindings
72409            !node.if &&
72410            !node.for && // not v-if or v-for or v-else
72411            !isBuiltInTag(node.tag) && // not a built-in
72412            isPlatformReservedTag(node.tag) && // not a component
72413            !isDirectChildOfTemplateFor(node) &&
72414            Object.keys(node).every(isStaticKey)));
72415}
72416function isDirectChildOfTemplateFor(node) {
72417    while (node.parent) {
72418        node = node.parent;
72419        if (node.tag !== 'template') {
72420            return false;
72421        }
72422        if (node.for) {
72423            return true;
72424        }
72425    }
72426    return false;
72427}
72428
72429var fnExpRE = /^([\w$_]+|\([^)]*?\))\s*=>|^function(?:\s+[\w$]+)?\s*\(/;
72430var fnInvokeRE = /\([^)]*?\);*$/;
72431var simplePathRE = /^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/;
72432// KeyboardEvent.keyCode aliases
72433var keyCodes = {
72434    esc: 27,
72435    tab: 9,
72436    enter: 13,
72437    space: 32,
72438    up: 38,
72439    left: 37,
72440    right: 39,
72441    down: 40,
72442    delete: [8, 46]
72443};
72444// KeyboardEvent.key aliases
72445var keyNames = {
72446    // #7880: IE11 and Edge use `Esc` for Escape key name.
72447    esc: ['Esc', 'Escape'],
72448    tab: 'Tab',
72449    enter: 'Enter',
72450    // #9112: IE11 uses `Spacebar` for Space key name.
72451    space: [' ', 'Spacebar'],
72452    // #7806: IE11 uses key names without `Arrow` prefix for arrow keys.
72453    up: ['Up', 'ArrowUp'],
72454    left: ['Left', 'ArrowLeft'],
72455    right: ['Right', 'ArrowRight'],
72456    down: ['Down', 'ArrowDown'],
72457    // #9112: IE11 uses `Del` for Delete key name.
72458    delete: ['Backspace', 'Delete', 'Del']
72459};
72460// #4868: modifiers that prevent the execution of the listener
72461// need to explicitly return null so that we can determine whether to remove
72462// the listener for .once
72463var genGuard = function (condition) { return "if(".concat(condition, ")return null;"); };
72464var modifierCode = {
72465    stop: '$event.stopPropagation();',
72466    prevent: '$event.preventDefault();',
72467    self: genGuard("$event.target !== $event.currentTarget"),
72468    ctrl: genGuard("!$event.ctrlKey"),
72469    shift: genGuard("!$event.shiftKey"),
72470    alt: genGuard("!$event.altKey"),
72471    meta: genGuard("!$event.metaKey"),
72472    left: genGuard("'button' in $event && $event.button !== 0"),
72473    middle: genGuard("'button' in $event && $event.button !== 1"),
72474    right: genGuard("'button' in $event && $event.button !== 2")
72475};
72476function genHandlers(events, isNative) {
72477    var prefix = isNative ? 'nativeOn:' : 'on:';
72478    var staticHandlers = "";
72479    var dynamicHandlers = "";
72480    for (var name_1 in events) {
72481        var handlerCode = genHandler(events[name_1]);
72482        //@ts-expect-error
72483        if (events[name_1] && events[name_1].dynamic) {
72484            dynamicHandlers += "".concat(name_1, ",").concat(handlerCode, ",");
72485        }
72486        else {
72487            staticHandlers += "\"".concat(name_1, "\":").concat(handlerCode, ",");
72488        }
72489    }
72490    staticHandlers = "{".concat(staticHandlers.slice(0, -1), "}");
72491    if (dynamicHandlers) {
72492        return prefix + "_d(".concat(staticHandlers, ",[").concat(dynamicHandlers.slice(0, -1), "])");
72493    }
72494    else {
72495        return prefix + staticHandlers;
72496    }
72497}
72498function genHandler(handler) {
72499    if (!handler) {
72500        return 'function(){}';
72501    }
72502    if (Array.isArray(handler)) {
72503        return "[".concat(handler.map(function (handler) { return genHandler(handler); }).join(','), "]");
72504    }
72505    var isMethodPath = simplePathRE.test(handler.value);
72506    var isFunctionExpression = fnExpRE.test(handler.value);
72507    var isFunctionInvocation = simplePathRE.test(handler.value.replace(fnInvokeRE, ''));
72508    if (!handler.modifiers) {
72509        if (isMethodPath || isFunctionExpression) {
72510            return handler.value;
72511        }
72512        return "function($event){".concat(isFunctionInvocation ? "return ".concat(handler.value) : handler.value, "}"); // inline statement
72513    }
72514    else {
72515        var code = '';
72516        var genModifierCode = '';
72517        var keys = [];
72518        var _loop_1 = function (key) {
72519            if (modifierCode[key]) {
72520                genModifierCode += modifierCode[key];
72521                // left/right
72522                if (keyCodes[key]) {
72523                    keys.push(key);
72524                }
72525            }
72526            else if (key === 'exact') {
72527                var modifiers_1 = handler.modifiers;
72528                genModifierCode += genGuard(['ctrl', 'shift', 'alt', 'meta']
72529                    .filter(function (keyModifier) { return !modifiers_1[keyModifier]; })
72530                    .map(function (keyModifier) { return "$event.".concat(keyModifier, "Key"); })
72531                    .join('||'));
72532            }
72533            else {
72534                keys.push(key);
72535            }
72536        };
72537        for (var key in handler.modifiers) {
72538            _loop_1(key);
72539        }
72540        if (keys.length) {
72541            code += genKeyFilter(keys);
72542        }
72543        // Make sure modifiers like prevent and stop get executed after key filtering
72544        if (genModifierCode) {
72545            code += genModifierCode;
72546        }
72547        var handlerCode = isMethodPath
72548            ? "return ".concat(handler.value, ".apply(null, arguments)")
72549            : isFunctionExpression
72550                ? "return (".concat(handler.value, ").apply(null, arguments)")
72551                : isFunctionInvocation
72552                    ? "return ".concat(handler.value)
72553                    : handler.value;
72554        return "function($event){".concat(code).concat(handlerCode, "}");
72555    }
72556}
72557function genKeyFilter(keys) {
72558    return (
72559    // make sure the key filters only apply to KeyboardEvents
72560    // #9441: can't use 'keyCode' in $event because Chrome autofill fires fake
72561    // key events that do not have keyCode property...
72562    "if(!$event.type.indexOf('key')&&" +
72563        "".concat(keys.map(genFilterCode).join('&&'), ")return null;"));
72564}
72565function genFilterCode(key) {
72566    var keyVal = parseInt(key, 10);
72567    if (keyVal) {
72568        return "$event.keyCode!==".concat(keyVal);
72569    }
72570    var keyCode = keyCodes[key];
72571    var keyName = keyNames[key];
72572    return ("_k($event.keyCode," +
72573        "".concat(JSON.stringify(key), ",") +
72574        "".concat(JSON.stringify(keyCode), ",") +
72575        "$event.key," +
72576        "".concat(JSON.stringify(keyName)) +
72577        ")");
72578}
72579
72580function on(el, dir) {
72581    if ( true && dir.modifiers) {
72582        warn$2("v-on without argument does not support modifiers.");
72583    }
72584    el.wrapListeners = function (code) { return "_g(".concat(code, ",").concat(dir.value, ")"); };
72585}
72586
72587function bind(el, dir) {
72588    el.wrapData = function (code) {
72589        return "_b(".concat(code, ",'").concat(el.tag, "',").concat(dir.value, ",").concat(dir.modifiers && dir.modifiers.prop ? 'true' : 'false').concat(dir.modifiers && dir.modifiers.sync ? ',true' : '', ")");
72590    };
72591}
72592
72593var baseDirectives = {
72594    on: on,
72595    bind: bind,
72596    cloak: noop
72597};
72598
72599var CodegenState = /** @class */ (function () {
72600    function CodegenState(options) {
72601        this.options = options;
72602        this.warn = options.warn || baseWarn;
72603        this.transforms = pluckModuleFunction(options.modules, 'transformCode');
72604        this.dataGenFns = pluckModuleFunction(options.modules, 'genData');
72605        this.directives = extend(extend({}, baseDirectives), options.directives);
72606        var isReservedTag = options.isReservedTag || no;
72607        this.maybeComponent = function (el) {
72608            return !!el.component || !isReservedTag(el.tag);
72609        };
72610        this.onceId = 0;
72611        this.staticRenderFns = [];
72612        this.pre = false;
72613    }
72614    return CodegenState;
72615}());
72616function generate(ast, options) {
72617    var state = new CodegenState(options);
72618    // fix #11483, Root level <script> tags should not be rendered.
72619    var code = ast
72620        ? ast.tag === 'script'
72621            ? 'null'
72622            : genElement(ast, state)
72623        : '_c("div")';
72624    return {
72625        render: "with(this){return ".concat(code, "}"),
72626        staticRenderFns: state.staticRenderFns
72627    };
72628}
72629function genElement(el, state) {
72630    if (el.parent) {
72631        el.pre = el.pre || el.parent.pre;
72632    }
72633    if (el.staticRoot && !el.staticProcessed) {
72634        return genStatic(el, state);
72635    }
72636    else if (el.once && !el.onceProcessed) {
72637        return genOnce(el, state);
72638    }
72639    else if (el.for && !el.forProcessed) {
72640        return genFor(el, state);
72641    }
72642    else if (el.if && !el.ifProcessed) {
72643        return genIf(el, state);
72644    }
72645    else if (el.tag === 'template' && !el.slotTarget && !state.pre) {
72646        return genChildren(el, state) || 'void 0';
72647    }
72648    else if (el.tag === 'slot') {
72649        return genSlot(el, state);
72650    }
72651    else {
72652        // component or element
72653        var code = void 0;
72654        if (el.component) {
72655            code = genComponent(el.component, el, state);
72656        }
72657        else {
72658            var data = void 0;
72659            var maybeComponent = state.maybeComponent(el);
72660            if (!el.plain || (el.pre && maybeComponent)) {
72661                data = genData(el, state);
72662            }
72663            var tag 
72664            // check if this is a component in <script setup>
72665            = void 0;
72666            // check if this is a component in <script setup>
72667            var bindings = state.options.bindings;
72668            if (maybeComponent && bindings && bindings.__isScriptSetup !== false) {
72669                tag = checkBindingType(bindings, el.tag);
72670            }
72671            if (!tag)
72672                tag = "'".concat(el.tag, "'");
72673            var children = el.inlineTemplate ? null : genChildren(el, state, true);
72674            code = "_c(".concat(tag).concat(data ? ",".concat(data) : '' // data
72675            ).concat(children ? ",".concat(children) : '' // children
72676            , ")");
72677        }
72678        // module transforms
72679        for (var i = 0; i < state.transforms.length; i++) {
72680            code = state.transforms[i](el, code);
72681        }
72682        return code;
72683    }
72684}
72685function checkBindingType(bindings, key) {
72686    var camelName = camelize(key);
72687    var PascalName = capitalize(camelName);
72688    var checkType = function (type) {
72689        if (bindings[key] === type) {
72690            return key;
72691        }
72692        if (bindings[camelName] === type) {
72693            return camelName;
72694        }
72695        if (bindings[PascalName] === type) {
72696            return PascalName;
72697        }
72698    };
72699    var fromConst = checkType("setup-const" /* BindingTypes.SETUP_CONST */) ||
72700        checkType("setup-reactive-const" /* BindingTypes.SETUP_REACTIVE_CONST */);
72701    if (fromConst) {
72702        return fromConst;
72703    }
72704    var fromMaybeRef = checkType("setup-let" /* BindingTypes.SETUP_LET */) ||
72705        checkType("setup-ref" /* BindingTypes.SETUP_REF */) ||
72706        checkType("setup-maybe-ref" /* BindingTypes.SETUP_MAYBE_REF */);
72707    if (fromMaybeRef) {
72708        return fromMaybeRef;
72709    }
72710}
72711// hoist static sub-trees out
72712function genStatic(el, state) {
72713    el.staticProcessed = true;
72714    // Some elements (templates) need to behave differently inside of a v-pre
72715    // node.  All pre nodes are static roots, so we can use this as a location to
72716    // wrap a state change and reset it upon exiting the pre node.
72717    var originalPreState = state.pre;
72718    if (el.pre) {
72719        state.pre = el.pre;
72720    }
72721    state.staticRenderFns.push("with(this){return ".concat(genElement(el, state), "}"));
72722    state.pre = originalPreState;
72723    return "_m(".concat(state.staticRenderFns.length - 1).concat(el.staticInFor ? ',true' : '', ")");
72724}
72725// v-once
72726function genOnce(el, state) {
72727    el.onceProcessed = true;
72728    if (el.if && !el.ifProcessed) {
72729        return genIf(el, state);
72730    }
72731    else if (el.staticInFor) {
72732        var key = '';
72733        var parent_1 = el.parent;
72734        while (parent_1) {
72735            if (parent_1.for) {
72736                key = parent_1.key;
72737                break;
72738            }
72739            parent_1 = parent_1.parent;
72740        }
72741        if (!key) {
72742             true &&
72743                state.warn("v-once can only be used inside v-for that is keyed. ", el.rawAttrsMap['v-once']);
72744            return genElement(el, state);
72745        }
72746        return "_o(".concat(genElement(el, state), ",").concat(state.onceId++, ",").concat(key, ")");
72747    }
72748    else {
72749        return genStatic(el, state);
72750    }
72751}
72752function genIf(el, state, altGen, altEmpty) {
72753    el.ifProcessed = true; // avoid recursion
72754    return genIfConditions(el.ifConditions.slice(), state, altGen, altEmpty);
72755}
72756function genIfConditions(conditions, state, altGen, altEmpty) {
72757    if (!conditions.length) {
72758        return altEmpty || '_e()';
72759    }
72760    var condition = conditions.shift();
72761    if (condition.exp) {
72762        return "(".concat(condition.exp, ")?").concat(genTernaryExp(condition.block), ":").concat(genIfConditions(conditions, state, altGen, altEmpty));
72763    }
72764    else {
72765        return "".concat(genTernaryExp(condition.block));
72766    }
72767    // v-if with v-once should generate code like (a)?_m(0):_m(1)
72768    function genTernaryExp(el) {
72769        return altGen
72770            ? altGen(el, state)
72771            : el.once
72772                ? genOnce(el, state)
72773                : genElement(el, state);
72774    }
72775}
72776function genFor(el, state, altGen, altHelper) {
72777    var exp = el.for;
72778    var alias = el.alias;
72779    var iterator1 = el.iterator1 ? ",".concat(el.iterator1) : '';
72780    var iterator2 = el.iterator2 ? ",".concat(el.iterator2) : '';
72781    if ( true &&
72782        state.maybeComponent(el) &&
72783        el.tag !== 'slot' &&
72784        el.tag !== 'template' &&
72785        !el.key) {
72786        state.warn("<".concat(el.tag, " v-for=\"").concat(alias, " in ").concat(exp, "\">: component lists rendered with ") +
72787            "v-for should have explicit keys. " +
72788            "See https://v2.vuejs.org/v2/guide/list.html#key for more info.", el.rawAttrsMap['v-for'], true /* tip */);
72789    }
72790    el.forProcessed = true; // avoid recursion
72791    return ("".concat(altHelper || '_l', "((").concat(exp, "),") +
72792        "function(".concat(alias).concat(iterator1).concat(iterator2, "){") +
72793        "return ".concat((altGen || genElement)(el, state)) +
72794        '})');
72795}
72796function genData(el, state) {
72797    var data = '{';
72798    // directives first.
72799    // directives may mutate the el's other properties before they are generated.
72800    var dirs = genDirectives(el, state);
72801    if (dirs)
72802        data += dirs + ',';
72803    // key
72804    if (el.key) {
72805        data += "key:".concat(el.key, ",");
72806    }
72807    // ref
72808    if (el.ref) {
72809        data += "ref:".concat(el.ref, ",");
72810    }
72811    if (el.refInFor) {
72812        data += "refInFor:true,";
72813    }
72814    // pre
72815    if (el.pre) {
72816        data += "pre:true,";
72817    }
72818    // record original tag name for components using "is" attribute
72819    if (el.component) {
72820        data += "tag:\"".concat(el.tag, "\",");
72821    }
72822    // module data generation functions
72823    for (var i = 0; i < state.dataGenFns.length; i++) {
72824        data += state.dataGenFns[i](el);
72825    }
72826    // attributes
72827    if (el.attrs) {
72828        data += "attrs:".concat(genProps(el.attrs), ",");
72829    }
72830    // DOM props
72831    if (el.props) {
72832        data += "domProps:".concat(genProps(el.props), ",");
72833    }
72834    // event handlers
72835    if (el.events) {
72836        data += "".concat(genHandlers(el.events, false), ",");
72837    }
72838    if (el.nativeEvents) {
72839        data += "".concat(genHandlers(el.nativeEvents, true), ",");
72840    }
72841    // slot target
72842    // only for non-scoped slots
72843    if (el.slotTarget && !el.slotScope) {
72844        data += "slot:".concat(el.slotTarget, ",");
72845    }
72846    // scoped slots
72847    if (el.scopedSlots) {
72848        data += "".concat(genScopedSlots(el, el.scopedSlots, state), ",");
72849    }
72850    // component v-model
72851    if (el.model) {
72852        data += "model:{value:".concat(el.model.value, ",callback:").concat(el.model.callback, ",expression:").concat(el.model.expression, "},");
72853    }
72854    // inline-template
72855    if (el.inlineTemplate) {
72856        var inlineTemplate = genInlineTemplate(el, state);
72857        if (inlineTemplate) {
72858            data += "".concat(inlineTemplate, ",");
72859        }
72860    }
72861    data = data.replace(/,$/, '') + '}';
72862    // v-bind dynamic argument wrap
72863    // v-bind with dynamic arguments must be applied using the same v-bind object
72864    // merge helper so that class/style/mustUseProp attrs are handled correctly.
72865    if (el.dynamicAttrs) {
72866        data = "_b(".concat(data, ",\"").concat(el.tag, "\",").concat(genProps(el.dynamicAttrs), ")");
72867    }
72868    // v-bind data wrap
72869    if (el.wrapData) {
72870        data = el.wrapData(data);
72871    }
72872    // v-on data wrap
72873    if (el.wrapListeners) {
72874        data = el.wrapListeners(data);
72875    }
72876    return data;
72877}
72878function genDirectives(el, state) {
72879    var dirs = el.directives;
72880    if (!dirs)
72881        return;
72882    var res = 'directives:[';
72883    var hasRuntime = false;
72884    var i, l, dir, needRuntime;
72885    for (i = 0, l = dirs.length; i < l; i++) {
72886        dir = dirs[i];
72887        needRuntime = true;
72888        var gen = state.directives[dir.name];
72889        if (gen) {
72890            // compile-time directive that manipulates AST.
72891            // returns true if it also needs a runtime counterpart.
72892            needRuntime = !!gen(el, dir, state.warn);
72893        }
72894        if (needRuntime) {
72895            hasRuntime = true;
72896            res += "{name:\"".concat(dir.name, "\",rawName:\"").concat(dir.rawName, "\"").concat(dir.value
72897                ? ",value:(".concat(dir.value, "),expression:").concat(JSON.stringify(dir.value))
72898                : '').concat(dir.arg ? ",arg:".concat(dir.isDynamicArg ? dir.arg : "\"".concat(dir.arg, "\"")) : '').concat(dir.modifiers ? ",modifiers:".concat(JSON.stringify(dir.modifiers)) : '', "},");
72899        }
72900    }
72901    if (hasRuntime) {
72902        return res.slice(0, -1) + ']';
72903    }
72904}
72905function genInlineTemplate(el, state) {
72906    var ast = el.children[0];
72907    if ( true && (el.children.length !== 1 || ast.type !== 1)) {
72908        state.warn('Inline-template components must have exactly one child element.', { start: el.start });
72909    }
72910    if (ast && ast.type === 1) {
72911        var inlineRenderFns = generate(ast, state.options);
72912        return "inlineTemplate:{render:function(){".concat(inlineRenderFns.render, "},staticRenderFns:[").concat(inlineRenderFns.staticRenderFns
72913            .map(function (code) { return "function(){".concat(code, "}"); })
72914            .join(','), "]}");
72915    }
72916}
72917function genScopedSlots(el, slots, state) {
72918    // by default scoped slots are considered "stable", this allows child
72919    // components with only scoped slots to skip forced updates from parent.
72920    // but in some cases we have to bail-out of this optimization
72921    // for example if the slot contains dynamic names, has v-if or v-for on them...
72922    var needsForceUpdate = el.for ||
72923        Object.keys(slots).some(function (key) {
72924            var slot = slots[key];
72925            return (slot.slotTargetDynamic || slot.if || slot.for || containsSlotChild(slot) // is passing down slot from parent which may be dynamic
72926            );
72927        });
72928    // #9534: if a component with scoped slots is inside a conditional branch,
72929    // it's possible for the same component to be reused but with different
72930    // compiled slot content. To avoid that, we generate a unique key based on
72931    // the generated code of all the slot contents.
72932    var needsKey = !!el.if;
72933    // OR when it is inside another scoped slot or v-for (the reactivity may be
72934    // disconnected due to the intermediate scope variable)
72935    // #9438, #9506
72936    // TODO: this can be further optimized by properly analyzing in-scope bindings
72937    // and skip force updating ones that do not actually use scope variables.
72938    if (!needsForceUpdate) {
72939        var parent_2 = el.parent;
72940        while (parent_2) {
72941            if ((parent_2.slotScope && parent_2.slotScope !== emptySlotScopeToken) ||
72942                parent_2.for) {
72943                needsForceUpdate = true;
72944                break;
72945            }
72946            if (parent_2.if) {
72947                needsKey = true;
72948            }
72949            parent_2 = parent_2.parent;
72950        }
72951    }
72952    var generatedSlots = Object.keys(slots)
72953        .map(function (key) { return genScopedSlot(slots[key], state); })
72954        .join(',');
72955    return "scopedSlots:_u([".concat(generatedSlots, "]").concat(needsForceUpdate ? ",null,true" : "").concat(!needsForceUpdate && needsKey ? ",null,false,".concat(hash(generatedSlots)) : "", ")");
72956}
72957function hash(str) {
72958    var hash = 5381;
72959    var i = str.length;
72960    while (i) {
72961        hash = (hash * 33) ^ str.charCodeAt(--i);
72962    }
72963    return hash >>> 0;
72964}
72965function containsSlotChild(el) {
72966    if (el.type === 1) {
72967        if (el.tag === 'slot') {
72968            return true;
72969        }
72970        return el.children.some(containsSlotChild);
72971    }
72972    return false;
72973}
72974function genScopedSlot(el, state) {
72975    var isLegacySyntax = el.attrsMap['slot-scope'];
72976    if (el.if && !el.ifProcessed && !isLegacySyntax) {
72977        return genIf(el, state, genScopedSlot, "null");
72978    }
72979    if (el.for && !el.forProcessed) {
72980        return genFor(el, state, genScopedSlot);
72981    }
72982    var slotScope = el.slotScope === emptySlotScopeToken ? "" : String(el.slotScope);
72983    var fn = "function(".concat(slotScope, "){") +
72984        "return ".concat(el.tag === 'template'
72985            ? el.if && isLegacySyntax
72986                ? "(".concat(el.if, ")?").concat(genChildren(el, state) || 'undefined', ":undefined")
72987                : genChildren(el, state) || 'undefined'
72988            : genElement(el, state), "}");
72989    // reverse proxy v-slot without scope on this.$slots
72990    var reverseProxy = slotScope ? "" : ",proxy:true";
72991    return "{key:".concat(el.slotTarget || "\"default\"", ",fn:").concat(fn).concat(reverseProxy, "}");
72992}
72993function genChildren(el, state, checkSkip, altGenElement, altGenNode) {
72994    var children = el.children;
72995    if (children.length) {
72996        var el_1 = children[0];
72997        // optimize single v-for
72998        if (children.length === 1 &&
72999            el_1.for &&
73000            el_1.tag !== 'template' &&
73001            el_1.tag !== 'slot') {
73002            var normalizationType_1 = checkSkip
73003                ? state.maybeComponent(el_1)
73004                    ? ",1"
73005                    : ",0"
73006                : "";
73007            return "".concat((altGenElement || genElement)(el_1, state)).concat(normalizationType_1);
73008        }
73009        var normalizationType = checkSkip
73010            ? getNormalizationType(children, state.maybeComponent)
73011            : 0;
73012        var gen_1 = altGenNode || genNode;
73013        return "[".concat(children.map(function (c) { return gen_1(c, state); }).join(','), "]").concat(normalizationType ? ",".concat(normalizationType) : '');
73014    }
73015}
73016// determine the normalization needed for the children array.
73017// 0: no normalization needed
73018// 1: simple normalization needed (possible 1-level deep nested array)
73019// 2: full normalization needed
73020function getNormalizationType(children, maybeComponent) {
73021    var res = 0;
73022    for (var i = 0; i < children.length; i++) {
73023        var el = children[i];
73024        if (el.type !== 1) {
73025            continue;
73026        }
73027        if (needsNormalization(el) ||
73028            (el.ifConditions &&
73029                el.ifConditions.some(function (c) { return needsNormalization(c.block); }))) {
73030            res = 2;
73031            break;
73032        }
73033        if (maybeComponent(el) ||
73034            (el.ifConditions && el.ifConditions.some(function (c) { return maybeComponent(c.block); }))) {
73035            res = 1;
73036        }
73037    }
73038    return res;
73039}
73040function needsNormalization(el) {
73041    return el.for !== undefined || el.tag === 'template' || el.tag === 'slot';
73042}
73043function genNode(node, state) {
73044    if (node.type === 1) {
73045        return genElement(node, state);
73046    }
73047    else if (node.type === 3 && node.isComment) {
73048        return genComment(node);
73049    }
73050    else {
73051        return genText(node);
73052    }
73053}
73054function genText(text) {
73055    return "_v(".concat(text.type === 2
73056        ? text.expression // no need for () because already wrapped in _s()
73057        : transformSpecialNewlines(JSON.stringify(text.text)), ")");
73058}
73059function genComment(comment) {
73060    return "_e(".concat(JSON.stringify(comment.text), ")");
73061}
73062function genSlot(el, state) {
73063    var slotName = el.slotName || '"default"';
73064    var children = genChildren(el, state);
73065    var res = "_t(".concat(slotName).concat(children ? ",function(){return ".concat(children, "}") : '');
73066    var attrs = el.attrs || el.dynamicAttrs
73067        ? genProps((el.attrs || []).concat(el.dynamicAttrs || []).map(function (attr) { return ({
73068            // slot props are camelized
73069            name: camelize(attr.name),
73070            value: attr.value,
73071            dynamic: attr.dynamic
73072        }); }))
73073        : null;
73074    var bind = el.attrsMap['v-bind'];
73075    if ((attrs || bind) && !children) {
73076        res += ",null";
73077    }
73078    if (attrs) {
73079        res += ",".concat(attrs);
73080    }
73081    if (bind) {
73082        res += "".concat(attrs ? '' : ',null', ",").concat(bind);
73083    }
73084    return res + ')';
73085}
73086// componentName is el.component, take it as argument to shun flow's pessimistic refinement
73087function genComponent(componentName, el, state) {
73088    var children = el.inlineTemplate ? null : genChildren(el, state, true);
73089    return "_c(".concat(componentName, ",").concat(genData(el, state)).concat(children ? ",".concat(children) : '', ")");
73090}
73091function genProps(props) {
73092    var staticProps = "";
73093    var dynamicProps = "";
73094    for (var i = 0; i < props.length; i++) {
73095        var prop = props[i];
73096        var value = transformSpecialNewlines(prop.value);
73097        if (prop.dynamic) {
73098            dynamicProps += "".concat(prop.name, ",").concat(value, ",");
73099        }
73100        else {
73101            staticProps += "\"".concat(prop.name, "\":").concat(value, ",");
73102        }
73103    }
73104    staticProps = "{".concat(staticProps.slice(0, -1), "}");
73105    if (dynamicProps) {
73106        return "_d(".concat(staticProps, ",[").concat(dynamicProps.slice(0, -1), "])");
73107    }
73108    else {
73109        return staticProps;
73110    }
73111}
73112// #3895, #4268
73113function transformSpecialNewlines(text) {
73114    return text.replace(/\u2028/g, '\\u2028').replace(/\u2029/g, '\\u2029');
73115}
73116
73117// these keywords should not appear inside expressions, but operators like
73118// typeof, instanceof and in are allowed
73119var prohibitedKeywordRE = new RegExp('\\b' +
73120    ('do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,' +
73121        'super,throw,while,yield,delete,export,import,return,switch,default,' +
73122        'extends,finally,continue,debugger,function,arguments')
73123        .split(',')
73124        .join('\\b|\\b') +
73125    '\\b');
73126// these unary operators should not be used as property/method names
73127var unaryOperatorsRE = new RegExp('\\b' +
73128    'delete,typeof,void'.split(',').join('\\s*\\([^\\)]*\\)|\\b') +
73129    '\\s*\\([^\\)]*\\)');
73130// strip strings in expressions
73131var stripStringRE = /'(?:[^'\\]|\\.)*'|"(?:[^"\\]|\\.)*"|`(?:[^`\\]|\\.)*\$\{|\}(?:[^`\\]|\\.)*`|`(?:[^`\\]|\\.)*`/g;
73132// detect problematic expressions in a template
73133function detectErrors(ast, warn) {
73134    if (ast) {
73135        checkNode(ast, warn);
73136    }
73137}
73138function checkNode(node, warn) {
73139    if (node.type === 1) {
73140        for (var name_1 in node.attrsMap) {
73141            if (dirRE.test(name_1)) {
73142                var value = node.attrsMap[name_1];
73143                if (value) {
73144                    var range = node.rawAttrsMap[name_1];
73145                    if (name_1 === 'v-for') {
73146                        checkFor(node, "v-for=\"".concat(value, "\""), warn, range);
73147                    }
73148                    else if (name_1 === 'v-slot' || name_1[0] === '#') {
73149                        checkFunctionParameterExpression(value, "".concat(name_1, "=\"").concat(value, "\""), warn, range);
73150                    }
73151                    else if (onRE.test(name_1)) {
73152                        checkEvent(value, "".concat(name_1, "=\"").concat(value, "\""), warn, range);
73153                    }
73154                    else {
73155                        checkExpression(value, "".concat(name_1, "=\"").concat(value, "\""), warn, range);
73156                    }
73157                }
73158            }
73159        }
73160        if (node.children) {
73161            for (var i = 0; i < node.children.length; i++) {
73162                checkNode(node.children[i], warn);
73163            }
73164        }
73165    }
73166    else if (node.type === 2) {
73167        checkExpression(node.expression, node.text, warn, node);
73168    }
73169}
73170function checkEvent(exp, text, warn, range) {
73171    var stripped = exp.replace(stripStringRE, '');
73172    var keywordMatch = stripped.match(unaryOperatorsRE);
73173    if (keywordMatch && stripped.charAt(keywordMatch.index - 1) !== '$') {
73174        warn("avoid using JavaScript unary operator as property name: " +
73175            "\"".concat(keywordMatch[0], "\" in expression ").concat(text.trim()), range);
73176    }
73177    checkExpression(exp, text, warn, range);
73178}
73179function checkFor(node, text, warn, range) {
73180    checkExpression(node.for || '', text, warn, range);
73181    checkIdentifier(node.alias, 'v-for alias', text, warn, range);
73182    checkIdentifier(node.iterator1, 'v-for iterator', text, warn, range);
73183    checkIdentifier(node.iterator2, 'v-for iterator', text, warn, range);
73184}
73185function checkIdentifier(ident, type, text, warn, range) {
73186    if (typeof ident === 'string') {
73187        try {
73188            new Function("var ".concat(ident, "=_"));
73189        }
73190        catch (e) {
73191            warn("invalid ".concat(type, " \"").concat(ident, "\" in expression: ").concat(text.trim()), range);
73192        }
73193    }
73194}
73195function checkExpression(exp, text, warn, range) {
73196    try {
73197        new Function("return ".concat(exp));
73198    }
73199    catch (e) {
73200        var keywordMatch = exp
73201            .replace(stripStringRE, '')
73202            .match(prohibitedKeywordRE);
73203        if (keywordMatch) {
73204            warn("avoid using JavaScript keyword as property name: " +
73205                "\"".concat(keywordMatch[0], "\"\n  Raw expression: ").concat(text.trim()), range);
73206        }
73207        else {
73208            warn("invalid expression: ".concat(e.message, " in\n\n") +
73209                "    ".concat(exp, "\n\n") +
73210                "  Raw expression: ".concat(text.trim(), "\n"), range);
73211        }
73212    }
73213}
73214function checkFunctionParameterExpression(exp, text, warn, range) {
73215    try {
73216        new Function(exp, '');
73217    }
73218    catch (e) {
73219        warn("invalid function parameter expression: ".concat(e.message, " in\n\n") +
73220            "    ".concat(exp, "\n\n") +
73221            "  Raw expression: ".concat(text.trim(), "\n"), range);
73222    }
73223}
73224
73225var range = 2;
73226function generateCodeFrame(source, start, end) {
73227    if (start === void 0) { start = 0; }
73228    if (end === void 0) { end = source.length; }
73229    var lines = source.split(/\r?\n/);
73230    var count = 0;
73231    var res = [];
73232    for (var i = 0; i < lines.length; i++) {
73233        count += lines[i].length + 1;
73234        if (count >= start) {
73235            for (var j = i - range; j <= i + range || end > count; j++) {
73236                if (j < 0 || j >= lines.length)
73237                    continue;
73238                res.push("".concat(j + 1).concat(repeat(" ", 3 - String(j + 1).length), "|  ").concat(lines[j]));
73239                var lineLength = lines[j].length;
73240                if (j === i) {
73241                    // push underline
73242                    var pad = start - (count - lineLength) + 1;
73243                    var length_1 = end > count ? lineLength - pad : end - start;
73244                    res.push("   |  " + repeat(" ", pad) + repeat("^", length_1));
73245                }
73246                else if (j > i) {
73247                    if (end > count) {
73248                        var length_2 = Math.min(end - count, lineLength);
73249                        res.push("   |  " + repeat("^", length_2));
73250                    }
73251                    count += lineLength + 1;
73252                }
73253            }
73254            break;
73255        }
73256    }
73257    return res.join('\n');
73258}
73259function repeat(str, n) {
73260    var result = '';
73261    if (n > 0) {
73262        // eslint-disable-next-line no-constant-condition
73263        while (true) {
73264            // eslint-disable-line
73265            if (n & 1)
73266                result += str;
73267            n >>>= 1;
73268            if (n <= 0)
73269                break;
73270            str += str;
73271        }
73272    }
73273    return result;
73274}
73275
73276function createFunction(code, errors) {
73277    try {
73278        return new Function(code);
73279    }
73280    catch (err) {
73281        errors.push({ err: err, code: code });
73282        return noop;
73283    }
73284}
73285function createCompileToFunctionFn(compile) {
73286    var cache = Object.create(null);
73287    return function compileToFunctions(template, options, vm) {
73288        options = extend({}, options);
73289        var warn = options.warn || warn$2;
73290        delete options.warn;
73291        /* istanbul ignore if */
73292        if (true) {
73293            // detect possible CSP restriction
73294            try {
73295                new Function('return 1');
73296            }
73297            catch (e) {
73298                if (e.toString().match(/unsafe-eval|CSP/)) {
73299                    warn('It seems you are using the standalone build of Vue.js in an ' +
73300                        'environment with Content Security Policy that prohibits unsafe-eval. ' +
73301                        'The template compiler cannot work in this environment. Consider ' +
73302                        'relaxing the policy to allow unsafe-eval or pre-compiling your ' +
73303                        'templates into render functions.');
73304                }
73305            }
73306        }
73307        // check cache
73308        var key = options.delimiters
73309            ? String(options.delimiters) + template
73310            : template;
73311        if (cache[key]) {
73312            return cache[key];
73313        }
73314        // compile
73315        var compiled = compile(template, options);
73316        // check compilation errors/tips
73317        if (true) {
73318            if (compiled.errors && compiled.errors.length) {
73319                if (options.outputSourceRange) {
73320                    compiled.errors.forEach(function (e) {
73321                        warn("Error compiling template:\n\n".concat(e.msg, "\n\n") +
73322                            generateCodeFrame(template, e.start, e.end), vm);
73323                    });
73324                }
73325                else {
73326                    warn("Error compiling template:\n\n".concat(template, "\n\n") +
73327                        compiled.errors.map(function (e) { return "- ".concat(e); }).join('\n') +
73328                        '\n', vm);
73329                }
73330            }
73331            if (compiled.tips && compiled.tips.length) {
73332                if (options.outputSourceRange) {
73333                    compiled.tips.forEach(function (e) { return tip(e.msg, vm); });
73334                }
73335                else {
73336                    compiled.tips.forEach(function (msg) { return tip(msg, vm); });
73337                }
73338            }
73339        }
73340        // turn code into functions
73341        var res = {};
73342        var fnGenErrors = [];
73343        res.render = createFunction(compiled.render, fnGenErrors);
73344        res.staticRenderFns = compiled.staticRenderFns.map(function (code) {
73345            return createFunction(code, fnGenErrors);
73346        });
73347        // check function generation errors.
73348        // this should only happen if there is a bug in the compiler itself.
73349        // mostly for codegen development use
73350        /* istanbul ignore if */
73351        if (true) {
73352            if ((!compiled.errors || !compiled.errors.length) && fnGenErrors.length) {
73353                warn("Failed to generate render function:\n\n" +
73354                    fnGenErrors
73355                        .map(function (_a) {
73356                        var err = _a.err, code = _a.code;
73357                        return "".concat(err.toString(), " in\n\n").concat(code, "\n");
73358                    })
73359                        .join('\n'), vm);
73360            }
73361        }
73362        return (cache[key] = res);
73363    };
73364}
73365
73366function createCompilerCreator(baseCompile) {
73367    return function createCompiler(baseOptions) {
73368        function compile(template, options) {
73369            var finalOptions = Object.create(baseOptions);
73370            var errors = [];
73371            var tips = [];
73372            var warn = function (msg, range, tip) {
73373                (tip ? tips : errors).push(msg);
73374            };
73375            if (options) {
73376                if ( true && options.outputSourceRange) {
73377                    // $flow-disable-line
73378                    var leadingSpaceLength_1 = template.match(/^\s*/)[0].length;
73379                    warn = function (msg, range, tip) {
73380                        var data = typeof msg === 'string' ? { msg: msg } : msg;
73381                        if (range) {
73382                            if (range.start != null) {
73383                                data.start = range.start + leadingSpaceLength_1;
73384                            }
73385                            if (range.end != null) {
73386                                data.end = range.end + leadingSpaceLength_1;
73387                            }
73388                        }
73389                        (tip ? tips : errors).push(data);
73390                    };
73391                }
73392                // merge custom modules
73393                if (options.modules) {
73394                    finalOptions.modules = (baseOptions.modules || []).concat(options.modules);
73395                }
73396                // merge custom directives
73397                if (options.directives) {
73398                    finalOptions.directives = extend(Object.create(baseOptions.directives || null), options.directives);
73399                }
73400                // copy other options
73401                for (var key in options) {
73402                    if (key !== 'modules' && key !== 'directives') {
73403                        finalOptions[key] = options[key];
73404                    }
73405                }
73406            }
73407            finalOptions.warn = warn;
73408            var compiled = baseCompile(template.trim(), finalOptions);
73409            if (true) {
73410                detectErrors(compiled.ast, warn);
73411            }
73412            compiled.errors = errors;
73413            compiled.tips = tips;
73414            return compiled;
73415        }
73416        return {
73417            compile: compile,
73418            compileToFunctions: createCompileToFunctionFn(compile)
73419        };
73420    };
73421}
73422
73423// `createCompilerCreator` allows creating compilers that use alternative
73424// parser/optimizer/codegen, e.g the SSR optimizing compiler.
73425// Here we just export a default compiler using the default parts.
73426var createCompiler = createCompilerCreator(function baseCompile(template, options) {
73427    var ast = parse(template.trim(), options);
73428    if (options.optimize !== false) {
73429        optimize(ast, options);
73430    }
73431    var code = generate(ast, options);
73432    return {
73433        ast: ast,
73434        render: code.render,
73435        staticRenderFns: code.staticRenderFns
73436    };
73437});
73438
73439var _a = createCompiler(baseOptions), compileToFunctions = _a.compileToFunctions;
73440
73441// check whether current browser encodes a char inside attribute values
73442var div;
73443function getShouldDecode(href) {
73444    div = div || document.createElement('div');
73445    div.innerHTML = href ? "<a href=\"\n\"/>" : "<div a=\"\n\"/>";
73446    return div.innerHTML.indexOf('&#10;') > 0;
73447}
73448// #3663: IE encodes newlines inside attribute values while other browsers don't
73449var shouldDecodeNewlines = inBrowser ? getShouldDecode(false) : false;
73450// #6828: chrome encodes content in a[href]
73451var shouldDecodeNewlinesForHref = inBrowser
73452    ? getShouldDecode(true)
73453    : false;
73454
73455var idToTemplate = cached(function (id) {
73456    var el = query(id);
73457    return el && el.innerHTML;
73458});
73459var mount = Vue.prototype.$mount;
73460Vue.prototype.$mount = function (el, hydrating) {
73461    el = el && query(el);
73462    /* istanbul ignore if */
73463    if (el === document.body || el === document.documentElement) {
73464         true &&
73465            warn$2("Do not mount Vue to <html> or <body> - mount to normal elements instead.");
73466        return this;
73467    }
73468    var options = this.$options;
73469    // resolve template/el and convert to render function
73470    if (!options.render) {
73471        var template = options.template;
73472        if (template) {
73473            if (typeof template === 'string') {
73474                if (template.charAt(0) === '#') {
73475                    template = idToTemplate(template);
73476                    /* istanbul ignore if */
73477                    if ( true && !template) {
73478                        warn$2("Template element not found or is empty: ".concat(options.template), this);
73479                    }
73480                }
73481            }
73482            else if (template.nodeType) {
73483                template = template.innerHTML;
73484            }
73485            else {
73486                if (true) {
73487                    warn$2('invalid template option:' + template, this);
73488                }
73489                return this;
73490            }
73491        }
73492        else if (el) {
73493            // @ts-expect-error
73494            template = getOuterHTML(el);
73495        }
73496        if (template) {
73497            /* istanbul ignore if */
73498            if ( true && config.performance && mark) {
73499                mark('compile');
73500            }
73501            var _a = compileToFunctions(template, {
73502                outputSourceRange: "development" !== 'production',
73503                shouldDecodeNewlines: shouldDecodeNewlines,
73504                shouldDecodeNewlinesForHref: shouldDecodeNewlinesForHref,
73505                delimiters: options.delimiters,
73506                comments: options.comments
73507            }, this), render = _a.render, staticRenderFns = _a.staticRenderFns;
73508            options.render = render;
73509            options.staticRenderFns = staticRenderFns;
73510            /* istanbul ignore if */
73511            if ( true && config.performance && mark) {
73512                mark('compile end');
73513                measure("vue ".concat(this._name, " compile"), 'compile', 'compile end');
73514            }
73515        }
73516    }
73517    return mount.call(this, el, hydrating);
73518};
73519/**
73520 * Get outerHTML of elements, taking care
73521 * of SVG elements in IE as well.
73522 */
73523function getOuterHTML(el) {
73524    if (el.outerHTML) {
73525        return el.outerHTML;
73526    }
73527    else {
73528        var container = document.createElement('div');
73529        container.appendChild(el.cloneNode(true));
73530        return container.innerHTML;
73531    }
73532}
73533Vue.compile = compileToFunctions;
73534
73535
73536
73537
73538/***/ }),
73539
73540/***/ "./resources/js sync recursive \\.vue$i":
73541/*!************************************!*\
73542  !*** ./resources/js/ sync \.vue$i ***!
73543  \************************************/
73544/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
73545
73546var map = {
73547	"./components/ChatMessage.vue": "./resources/js/components/ChatMessage.vue",
73548	"./components/ChatRoom.vue": "./resources/js/components/ChatRoom.vue",
73549	"./components/ChatRoomList.vue": "./resources/js/components/ChatRoomList.vue",
73550	"./components/ChatRoomSetting.vue": "./resources/js/components/ChatRoomSetting.vue",
73551	"./components/ChatSelectUserModal.vue": "./resources/js/components/ChatSelectUserModal.vue",
73552	"./components/ChatZoominModal.vue": "./resources/js/components/ChatZoominModal.vue",
73553	"./components/CollectList.vue": "./resources/js/components/CollectList.vue",
73554	"./components/CompleteModal.vue": "./resources/js/components/CompleteModal.vue",
73555	"./components/CopyUrlButton.vue": "./resources/js/components/CopyUrlButton.vue",
73556	"./components/Coupon.vue": "./resources/js/components/Coupon.vue",
73557	"./components/CouponList.vue": "./resources/js/components/CouponList.vue",
73558	"./components/NewUser.vue": "./resources/js/components/NewUser.vue",
73559	"./components/Post.vue": "./resources/js/components/Post.vue",
73560	"./components/PostComment.vue": "./resources/js/components/PostComment.vue",
73561	"./components/PostCommentList.vue": "./resources/js/components/PostCommentList.vue",
73562	"./components/PostList.vue": "./resources/js/components/PostList.vue",
73563	"./components/PostReplyList.vue": "./resources/js/components/PostReplyList.vue",
73564	"./components/ProfileEditModal.vue": "./resources/js/components/ProfileEditModal.vue",
73565	"./components/ReportDetailModal.vue": "./resources/js/components/ReportDetailModal.vue",
73566	"./components/ReportModal.vue": "./resources/js/components/ReportModal.vue",
73567	"./components/SocialCompleteModal.vue": "./resources/js/components/SocialCompleteModal.vue",
73568	"./components/SocialConfirmModal.vue": "./resources/js/components/SocialConfirmModal.vue",
73569	"./components/SocialContent.vue": "./resources/js/components/SocialContent.vue",
73570	"./components/SocialContentInput.vue": "./resources/js/components/SocialContentInput.vue",
73571	"./components/SocialControlModal.vue": "./resources/js/components/SocialControlModal.vue",
73572	"./components/SocialFileInput.vue": "./resources/js/components/SocialFileInput.vue",
73573	"./components/SocialFirstModal.vue": "./resources/js/components/SocialFirstModal.vue",
73574	"./components/SocialMessagePage.vue": "./resources/js/components/SocialMessagePage.vue",
73575	"./components/SocialNavbar.vue": "./resources/js/components/SocialNavbar.vue",
73576	"./components/SocialNotification.vue": "./resources/js/components/SocialNotification.vue",
73577	"./components/SocialNotificationModal.vue": "./resources/js/components/SocialNotificationModal.vue",
73578	"./components/SocialPage.vue": "./resources/js/components/SocialPage.vue",
73579	"./components/SocialPlaceModal.vue": "./resources/js/components/SocialPlaceModal.vue",
73580	"./components/SocialPlacePage.vue": "./resources/js/components/SocialPlacePage.vue",
73581	"./components/SocialPost.vue": "./resources/js/components/SocialPost.vue",
73582	"./components/SocialPostComment.vue": "./resources/js/components/SocialPostComment.vue",
73583	"./components/SocialPostCommentList.vue": "./resources/js/components/SocialPostCommentList.vue",
73584	"./components/SocialPostEditModal.vue": "./resources/js/components/SocialPostEditModal.vue",
73585	"./components/SocialPostError.vue": "./resources/js/components/SocialPostError.vue",
73586	"./components/SocialPostList.vue": "./resources/js/components/SocialPostList.vue",
73587	"./components/SocialPostPage.vue": "./resources/js/components/SocialPostPage.vue",
73588	"./components/SocialPostReplyList.vue": "./resources/js/components/SocialPostReplyList.vue",
73589	"./components/SocialSearchModal.vue": "./resources/js/components/SocialSearchModal.vue",
73590	"./components/SocialSelectUserModal.vue": "./resources/js/components/SocialSelectUserModal.vue",
73591	"./components/SocialShareModal.vue": "./resources/js/components/SocialShareModal.vue",
73592	"./components/SocialTagPage.vue": "./resources/js/components/SocialTagPage.vue",
73593	"./components/SocialUpload.vue": "./resources/js/components/SocialUpload.vue",
73594	"./components/SocialUploadFailModal.vue": "./resources/js/components/SocialUploadFailModal.vue",
73595	"./components/SocialUploadingModal.vue": "./resources/js/components/SocialUploadingModal.vue",
73596	"./components/SocialUserModal.vue": "./resources/js/components/SocialUserModal.vue",
73597	"./components/SocialUserPage.vue": "./resources/js/components/SocialUserPage.vue",
73598	"./components/TimeFormat.vue": "./resources/js/components/TimeFormat.vue"
73599};
73600
73601
73602function webpackContext(req) {
73603	var id = webpackContextResolve(req);
73604	return __webpack_require__(id);
73605}
73606function webpackContextResolve(req) {
73607	if(!__webpack_require__.o(map, req)) {
73608		var e = new Error("Cannot find module '" + req + "'");
73609		e.code = 'MODULE_NOT_FOUND';
73610		throw e;
73611	}
73612	return map[req];
73613}
73614webpackContext.keys = function webpackContextKeys() {
73615	return Object.keys(map);
73616};
73617webpackContext.resolve = webpackContextResolve;
73618module.exports = webpackContext;
73619webpackContext.id = "./resources/js sync recursive \\.vue$i";
73620
73621/***/ }),
73622
vendor: 2,233 bytes, lines 73623-73632
73623/***/ "./node_modules/axios/package.json":
73624/*!*****************************************!*\
73625  !*** ./node_modules/axios/package.json ***!
73626  \*****************************************/
73627/***/ ((module) => {
73628
73629"use strict";
73630module.exports = /*#__PURE__*/JSON.parse('{"name":"axios","version":"0.21.4","description":"Promise based HTTP client for the browser and node.js","main":"index.js","scripts":{"test":"grunt test","start":"node ./sandbox/server.js","build":"NODE_ENV=production grunt build","preversion":"npm test","version":"npm run build && grunt version && git add -A dist && git add CHANGELOG.md bower.json package.json","postversion":"git push && git push --tags","examples":"node ./examples/server.js","coveralls":"cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","fix":"eslint --fix lib/**/*.js"},"repository":{"type":"git","url":"https://github.com/axios/axios.git"},"keywords":["xhr","http","ajax","promise","node"],"author":"Matt Zabriskie","license":"MIT","bugs":{"url":"https://github.com/axios/axios/issues"},"homepage":"https://axios-http.com","devDependencies":{"coveralls":"^3.0.0","es6-promise":"^4.2.4","grunt":"^1.3.0","grunt-banner":"^0.6.0","grunt-cli":"^1.2.0","grunt-contrib-clean":"^1.1.0","grunt-contrib-watch":"^1.0.0","grunt-eslint":"^23.0.0","grunt-karma":"^4.0.0","grunt-mocha-test":"^0.13.3","grunt-ts":"^6.0.0-beta.19","grunt-webpack":"^4.0.2","istanbul-instrumenter-loader":"^1.0.0","jasmine-core":"^2.4.1","karma":"^6.3.2","karma-chrome-launcher":"^3.1.0","karma-firefox-launcher":"^2.1.0","karma-jasmine":"^1.1.1","karma-jasmine-ajax":"^0.1.13","karma-safari-launcher":"^1.0.0","karma-sauce-launcher":"^4.3.6","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.8","karma-webpack":"^4.0.2","load-grunt-tasks":"^3.5.2","minimist":"^1.2.0","mocha":"^8.2.1","sinon":"^4.5.0","terser-webpack-plugin":"^4.2.3","typescript":"^4.0.5","url-search-params":"^0.10.0","webpack":"^4.44.2","webpack-dev-server":"^3.11.0"},"browser":{"./lib/adapters/http.js":"./lib/adapters/xhr.js"},"jsdelivr":"dist/axios.min.js","unpkg":"dist/axios.min.js","typings":"./index.d.ts","dependencies":{"follow-redirects":"^1.14.0"},"bundlesize":[{"path":"./dist/axios.min.js","threshold":"5kB"}]}');
73631
73632/***/ })
73632
73633
73634/******/ 	});
73635/************************************************************************/
73636/******/ 	// The module cache
73637/******/ 	var __webpack_module_cache__ = {};
73638/******/ 	
73639/******/ 	// The require function
73640/******/ 	function __webpack_require__(moduleId) {
73641/******/ 		// Check if module is in cache
73642/******/ 		var cachedModule = __webpack_module_cache__[moduleId];
73643/******/ 		if (cachedModule !== undefined) {
73644/******/ 			return cachedModule.exports;
73645/******/ 		}
73646/******/ 		// Create a new module (and put it into the cache)
73647/******/ 		var module = __webpack_module_cache__[moduleId] = {
73648/******/ 			id: moduleId,
73649/******/ 			loaded: false,
73650/******/ 			exports: {}
73651/******/ 		};
73652/******/ 	
73653/******/ 		// Execute the module function
73654/******/ 		__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);
73655/******/ 	
73656/******/ 		// Flag the module as loaded
73657/******/ 		module.loaded = true;
73658/******/ 	
73659/******/ 		// Return the exports of the module
73660/******/ 		return module.exports;
73661/******/ 	}
73662/******/ 	
73663/************************************************************************/
73664/******/ 	/* webpack/runtime/compat get default export */
73665/******/ 	(() => {
73666/******/ 		// getDefaultExport function for compatibility with non-harmony modules
73667/******/ 		__webpack_require__.n = (module) => {
73668/******/ 			var getter = module && module.__esModule ?
73669/******/ 				() => (module['default']) :
73670/******/ 				() => (module);
73671/******/ 			__webpack_require__.d(getter, { a: getter });
73672/******/ 			return getter;
73673/******/ 		};
73674/******/ 	})();
73675/******/ 	
73676/******/ 	/* webpack/runtime/define property getters */
73677/******/ 	(() => {
73678/******/ 		// define getter functions for harmony exports
73679/******/ 		__webpack_require__.d = (exports, definition) => {
73680/******/ 			for(var key in definition) {
73681/******/ 				if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
73682/******/ 					Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
73683/******/ 				}
73684/******/ 			}
73685/******/ 		};
73686/******/ 	})();
73687/******/ 	
73688/******/ 	/* webpack/runtime/global */
73689/******/ 	(() => {
73690/******/ 		__webpack_require__.g = (function() {
73691/******/ 			if (typeof globalThis === 'object') return globalThis;
73692/******/ 			try {
73693/******/ 				return this || new Function('return this')();
73694/******/ 			} catch (e) {
73695/******/ 				if (typeof window === 'object') return window;
73696/******/ 			}
73697/******/ 		})();
73698/******/ 	})();
73699/******/ 	
73700/******/ 	/* webpack/runtime/hasOwnProperty shorthand */
73701/******/ 	(() => {
73702/******/ 		__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
73703/******/ 	})();
73704/******/ 	
73705/******/ 	/* webpack/runtime/make namespace object */
73706/******/ 	(() => {
73707/******/ 		// define __esModule on exports
73708/******/ 		__webpack_require__.r = (exports) => {
73709/******/ 			if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
73710/******/ 				Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
73711/******/ 			}
73712/******/ 			Object.defineProperty(exports, '__esModule', { value: true });
73713/******/ 		};
73714/******/ 	})();
73715/******/ 	
73716/******/ 	/* webpack/runtime/node module decorator */
73717/******/ 	(() => {
73718/******/ 		__webpack_require__.nmd = (module) => {
73719/******/ 			module.paths = [];
73720/******/ 			if (!module.children) module.children = [];
73721/******/ 			return module;
73722/******/ 		};
73723/******/ 	})();
73724/******/ 	
73725/******/ 	/* webpack/runtime/nonce */
73726/******/ 	(() => {
73727/******/ 		__webpack_require__.nc = undefined;
73728/******/ 	})();
73729/******/ 	
73730/************************************************************************/
73731var __webpack_exports__ = {};
73732// This entry needs to be wrapped in an IIFE because it needs to be in strict mode.
73733(() => {
73734"use strict";
73735/*!*****************************!*\
73736  !*** ./resources/js/app.js ***!
73737  \*****************************/
73738__webpack_require__.r(__webpack_exports__);
73739/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.esm.js");
73740/* harmony import */ var vue_router__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vue-router */ "./node_modules/vue-router/dist/vue-router.esm.js");
73741/* harmony import */ var _components_SocialPage__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/SocialPage */ "./resources/js/components/SocialPage.vue");
73742/* harmony import */ var _components_SocialMessagePage__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/SocialMessagePage */ "./resources/js/components/SocialMessagePage.vue");
73743/* harmony import */ var _components_SocialPostPage__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/SocialPostPage */ "./resources/js/components/SocialPostPage.vue");
73744/* harmony import */ var _components_SocialTagPage__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/SocialTagPage */ "./resources/js/components/SocialTagPage.vue");
73745/* harmony import */ var _components_SocialPlacePage__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/SocialPlacePage */ "./resources/js/components/SocialPlacePage.vue");
73746/* harmony import */ var _components_SocialUserPage__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./components/SocialUserPage */ "./resources/js/components/SocialUserPage.vue");
73747/**
73748 * First we will load all of this project's JavaScript dependencies which
73749 * includes Vue and other libraries. It is a great starting point when
73750 * building robust, powerful web applications using Vue and Laravel.
73751 */
73752
73753__webpack_require__(/*! ./bootstrap */ "./resources/js/bootstrap.js");
73754
73755
73756window.Vue = vue__WEBPACK_IMPORTED_MODULE_0__["default"];
73757vue__WEBPACK_IMPORTED_MODULE_0__["default"].use(vue_router__WEBPACK_IMPORTED_MODULE_1__["default"]);
73758
73759/**
73760 * The following block of code may be used to automatically register your
73761 * Vue components. It will recursively scan this directory for the Vue
73762 * components and automatically register them with their "basename".
73763 *
73764 * Eg. ./components/ExampleComponent.vue -> <example-component></example-component>
73765 */
73766
73767var files = __webpack_require__("./resources/js sync recursive \\.vue$i");
73768files.keys().map(function (key) {
73769  return vue__WEBPACK_IMPORTED_MODULE_0__["default"].component(key.split("/").pop().split(".")[0], files(key)["default"]);
73770});
73771
73772
73773
73774
73775
73776
73777var router = new vue_router__WEBPACK_IMPORTED_MODULE_1__["default"]({
73778  mode: "history",
73779  routes: [{
73780    path: "/social",
73781    name: "social",
73782    component: _components_SocialPage__WEBPACK_IMPORTED_MODULE_2__["default"],
73783    meta: {
73784      keepAlive: true
73785    }
73786  }, {
73787    path: "/social/message/:id?",
73788    name: "socialMessage",
73789    component: _components_SocialMessagePage__WEBPACK_IMPORTED_MODULE_3__["default"]
73790  }, {
73791    path: "/social/post/:id/:commentId?",
73792    name: "socialPost",
73793    component: _components_SocialPostPage__WEBPACK_IMPORTED_MODULE_4__["default"]
73794  }, {
73795    path: "/social/tag/:name",
73796    name: "socialTag",
73797    component: _components_SocialTagPage__WEBPACK_IMPORTED_MODULE_5__["default"]
73798  }, {
73799    path: "/social/place/:id",
73800    name: "socialPlace",
73801    component: _components_SocialPlacePage__WEBPACK_IMPORTED_MODULE_6__["default"]
73802  }, {
73803    path: "/social/user/:name",
73804    name: "socialUser",
73805    component: _components_SocialUserPage__WEBPACK_IMPORTED_MODULE_7__["default"]
73806  }]
73807});
73808
73809/**
73810 * Next, we will create a fresh Vue application instance and attach it to
73811 * the page. Then, you may begin adding components to this application
73812 * or customize the JavaScript scaffolding to fit your unique needs.
73813 */
73814
73815var app = new vue__WEBPACK_IMPORTED_MODULE_0__["default"]({
73816  el: "#app",
73817  router: router
73818});
73819})();
73820
73821/******/ })()
73822;

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