PageSourceSearch

https://www.getkicks.io/626928144fca5a8f28449426/js/webflow.708fb3e30.js

js getkicks.io collected 2026-10-05 17:59:18 UTC 675,349 bytes, 21,491 lines download raw bytes

vendor: 4,773 bytes, lines 1-128
1/*!
2 * Webflow: Front-end site library
3 * @license MIT
4 * Inline scripts may access the api using an async handler:
5 *   var Webflow = Webflow || [];
6 *   Webflow.push(readyFunction);
7 */
8/******/ (function(modules) { // webpackBootstrap
9/******/ 	// The module cache
10/******/ 	var installedModules = {};
11/******/
12/******/ 	// The require function
13/******/ 	function __webpack_require__(moduleId) {
14/******/
15/******/ 		// Check if module is in cache
16/******/ 		if(installedModules[moduleId]) {
17/******/ 			return installedModules[moduleId].exports;
18/******/ 		}
19/******/ 		// Create a new module (and put it into the cache)
20/******/ 		var module = installedModules[moduleId] = {
21/******/ 			i: moduleId,
22/******/ 			l: false,
23/******/ 			exports: {}
24/******/ 		};
25/******/
26/******/ 		// Execute the module function
27/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
28/******/
29/******/ 		// Flag the module as loaded
30/******/ 		module.l = true;
31/******/
32/******/ 		// Return the exports of the module
33/******/ 		return module.exports;
34/******/ 	}
35/******/
36/******/
37/******/ 	// expose the modules object (__webpack_modules__)
38/******/ 	__webpack_require__.m = modules;
39/******/
40/******/ 	// expose the module cache
41/******/ 	__webpack_require__.c = installedModules;
42/******/
43/******/ 	// define getter function for harmony exports
44/******/ 	__webpack_require__.d = function(exports, name, getter) {
45/******/ 		if(!__webpack_require__.o(exports, name)) {
46/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
47/******/ 		}
48/******/ 	};
49/******/
50/******/ 	// define __esModule on exports
51/******/ 	__webpack_require__.r = function(exports) {
52/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
53/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
54/******/ 		}
55/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
56/******/ 	};
57/******/
58/******/ 	// create a fake namespace object
59/******/ 	// mode & 1: value is a module id, require it
60/******/ 	// mode & 2: merge all properties of value into the ns
61/******/ 	// mode & 4: return value when already ns object
62/******/ 	// mode & 8|1: behave like require
63/******/ 	__webpack_require__.t = function(value, mode) {
64/******/ 		if(mode & 1) value = __webpack_require__(value);
65/******/ 		if(mode & 8) return value;
66/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
67/******/ 		var ns = Object.create(null);
68/******/ 		__webpack_require__.r(ns);
69/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
70/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
71/******/ 		return ns;
72/******/ 	};
73/******/
74/******/ 	// getDefaultExport function for compatibility with non-harmony modules
75/******/ 	__webpack_require__.n = function(module) {
76/******/ 		var getter = module && module.__esModule ?
77/******/ 			function getDefault() { return module['default']; } :
78/******/ 			function getModuleExports() { return module; };
79/******/ 		__webpack_require__.d(getter, 'a', getter);
80/******/ 		return getter;
81/******/ 	};
82/******/
83/******/ 	// Object.prototype.hasOwnProperty.call
84/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
85/******/
86/******/ 	// __webpack_public_path__
87/******/ 	__webpack_require__.p = "";
88/******/
89/******/
90/******/ 	// Load entry module and return exports
91/******/ 	return __webpack_require__(__webpack_require__.s = 129);
92/******/ })
93/************************************************************************/
94/******/ ([
95/* 0 */
96/***/ (function(module, exports) {
97
98function _interopRequireDefault(obj) {
99  return obj && obj.__esModule ? obj : {
100    "default": obj
101  };
102}
103
104module.exports = _interopRequireDefault;
105
106/***/ }),
107/* 1 */
108/***/ (function(module, exports, __webpack_require__) {
109
110/* WEBPACK VAR INJECTION */(function(global) {var check = function (it) {
111  return it && it.Math == Math && it;
112};
113
114// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
115module.exports =
116  // eslint-disable-next-line es/no-global-this -- safe
117  check(typeof globalThis == 'object' && globalThis) ||
118  check(typeof window == 'object' && window) ||
119  // eslint-disable-next-line no-restricted-globals -- safe
120  check(typeof self == 'object' && self) ||
121  check(typeof global == 'object' && global) ||
122  // eslint-disable-next-line no-new-func -- fallback
123  (function () { return this; })() || Function('return this')();
124
125/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(25)))
126
127/***/ }),
128/* 2 */
129/***/ (function(module, exports) {
130
131/**
132 * Checks if `value` is classified as an `Array` object.
133 *
134 * @static
135 * @memberOf _
136 * @since 0.1.0
137 * @category Lang
138 * @param {*} value The value to check.
139 * @returns {boolean} Returns `true` if `value` is an array, else `false`.
140 * @example
141 *
142 * _.isArray([1, 2, 3]);
143 * // => true
144 *
145 * _.isArray(document.body.children);
146 * // => false
147 *
148 * _.isArray('abc');
149 * // => false
150 *
151 * _.isArray(_.noop);
152 * // => false
153 */
154var isArray = Array.isArray;
155
156module.exports = isArray;
157
158
159/***/ }),
160/* 3 */
161/***/ (function(module, exports, __webpack_require__) {
162
163"use strict";
164 // @wf-will-never-add-flow-to-this-file
165
166/* globals window, document, navigator, WEBFLOW_ENV_TEST */
167
168/* eslint-disable no-var */
169
170/**
171 * Webflow: Core site library
172 */
173
174var Webflow = {};
175var modules = {};
176var primary = [];
177var secondary = window.Webflow || [];
178var $ = window.jQuery;
179var $win = $(window);
180var $doc = $(document);
181var isFunction = $.isFunction;
182
183var _ = Webflow._ = __webpack_require__(133);
184
185var tram = Webflow.tram = __webpack_require__(69) && $.tram;
186var domready = false;
187var destroyed = false;
188tram.config.hideBackface = false;
189tram.config.keepInherited = true;
190/**
191 * Webflow.define - Define a named module
192 * @param  {string} name
193 * @param  {function} factory
194 * @param  {object} options
195 * @return {object}
196 */
197
198Webflow.define = function (name, factory, options) {
199  if (modules[name]) {
200    unbindModule(modules[name]);
201  }
202
203  var instance = modules[name] = factory($, _, options) || {};
204  bindModule(instance);
205  return instance;
206};
207/**
208 * Webflow.require - Require a named module
209 * @param  {string} name
210 * @return {object}
211 */
212
213
214Webflow.require = function (name) {
215  return modules[name];
216};
217
218function bindModule(module) {
219  // If running in Webflow app, subscribe to design/preview events
220  if (Webflow.env()) {
221    isFunction(module.design) && $win.on('__wf_design', module.design);
222    isFunction(module.preview) && $win.on('__wf_preview', module.preview);
223  } // Subscribe to front-end destroy event
224
225
226  isFunction(module.destroy) && $win.on('__wf_destroy', module.destroy); // Look for ready method on module
227
228  if (module.ready && isFunction(module.ready)) {
229    addReady(module);
230  }
231}
232
233function addReady(module) {
234  // If domready has already happened, run ready method
235  if (domready) {
236    module.ready();
237    return;
238  } // Otherwise add ready method to the primary queue (only once)
239
240
241  if (_.contains(primary, module.ready)) {
242    return;
243  }
244
245  primary.push(module.ready);
246}
247
248function unbindModule(module) {
249  // Unsubscribe module from window events
250  isFunction(module.design) && $win.off('__wf_design', module.design);
251  isFunction(module.preview) && $win.off('__wf_preview', module.preview);
252  isFunction(module.destroy) && $win.off('__wf_destroy', module.destroy); // Remove ready method from primary queue
253
254  if (module.ready && isFunction(module.ready)) {
255    removeReady(module);
256  }
257}
258
259function removeReady(module) {
260  primary = _.filter(primary, function (readyFn) {
261    return readyFn !== module.ready;
262  });
263}
264/**
265 * Webflow.push - Add a ready handler into secondary queue
266 * @param {function} ready  Callback to invoke on domready
267 */
268
269
270Webflow.push = function (ready) {
271  // If domready has already happened, invoke handler
272  if (domready) {
273    isFunction(ready) && ready();
274    return;
275  } // Otherwise push into secondary queue
276
277
278  secondary.push(ready);
279};
280/**
281 * Webflow.env - Get the state of the Webflow app
282 * @param {string} mode [optional]
283 * @return {boolean}
284 */
285
286
287Webflow.env = function (mode) {
288  var designFlag = window.__wf_design;
289  var inApp = typeof designFlag !== 'undefined';
290
291  if (!mode) {
292    return inApp;
293  }
294
295  if (mode === 'design') {
296    return inApp && designFlag;
297  }
298
299  if (mode === 'preview') {
300    return inApp && !designFlag;
301  }
302
303  if (mode === 'slug') {
304    return inApp && window.__wf_slug;
305  }
306
307  if (mode === 'editor') {
308    return window.WebflowEditor;
309  }
310
311  if (mode === 'test') {
312    return  false || window.__wf_test;
313  }
314
315  if (mode === 'frame') {
316    return window !== window.top;
317  }
318}; // Feature detects + browser sniffs  ಠ_ಠ
319
320
321var userAgent = navigator.userAgent.toLowerCase();
322var touch = Webflow.env.touch = 'ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch;
323var chrome = Webflow.env.chrome = /chrome/.test(userAgent) && /Google/.test(navigator.vendor) && parseInt(userAgent.match(/chrome\/(\d+)\./)[1], 10);
324var ios = Webflow.env.ios = /(ipod|iphone|ipad)/.test(userAgent);
325Webflow.env.safari = /safari/.test(userAgent) && !chrome && !ios; // Maintain current touch target to prevent late clicks on touch devices
326
327var touchTarget; // Listen for both events to support touch/mouse hybrid devices
328
329touch && $doc.on('touchstart mousedown', function (evt) {
330  touchTarget = evt.target;
331});
332/**
333 * Webflow.validClick - validate click target against current touch target
334 * @param  {HTMLElement} clickTarget  Element being clicked
335 * @return {Boolean}  True if click target is valid (always true on non-touch)
336 */
337
338Webflow.validClick = touch ? function (clickTarget) {
339  return clickTarget === touchTarget || $.contains(clickTarget, touchTarget);
340} : function () {
341  return true;
342};
343/**
344 * Webflow.resize, Webflow.scroll - throttled event proxies
345 */
346
347var resizeEvents = 'resize.webflow orientationchange.webflow load.webflow';
348var scrollEvents = 'scroll.webflow ' + resizeEvents;
349Webflow.resize = eventProxy($win, resizeEvents);
350Webflow.scroll = eventProxy($win, scrollEvents);
351Webflow.redraw = eventProxy(); // Create a proxy instance for throttled events
352
353function eventProxy(target, types) {
354  // Set up throttled method (using custom frame-based _.throttle)
355  var handlers = [];
356  var proxy = {};
357  proxy.up = _.throttle(function (evt) {
358    _.each(handlers, function (h) {
359      h(evt);
360    });
361  }); // Bind events to target
362
363  if (target && types) {
364    target.on(types, proxy.up);
365  }
366  /**
367   * Add an event handler
368   * @param  {function} handler
369   */
370
371
372  proxy.on = function (handler) {
373    if (typeof handler !== 'function') {
374      return;
375    }
376
377    if (_.contains(handlers, handler)) {
378      return;
379    }
380
381    handlers.push(handler);
382  };
383  /**
384   * Remove an event handler
385   * @param  {function} handler
386   */
387
388
389  proxy.off = function (handler) {
390    // If no arguments supplied, clear all handlers
391    if (!arguments.length) {
392      handlers = [];
393      return;
394    } // Otherwise, remove handler from the list
395
396
397    handlers = _.filter(handlers, function (h) {
398      return h !== handler;
399    });
400  };
401
402  return proxy;
403} // Webflow.location - Wrap window.location in api
404
405
406Webflow.location = function (url) {
407  window.location = url;
408};
409
410if (Webflow.env()) {
411  // Ignore redirects inside a Webflow design/edit environment
412  Webflow.location = function () {};
413} // Webflow.ready - Call primary and secondary handlers
414
415
416Webflow.ready = function () {
417  domready = true; // Restore modules after destroy
418
419  if (destroyed) {
420    restoreModules(); // Otherwise run primary ready methods
421  } else {
422    _.each(primary, callReady);
423  } // Run secondary ready methods
424
425
426  _.each(secondary, callReady); // Trigger resize
427
428
429  Webflow.resize.up();
430};
431
432function callReady(readyFn) {
433  isFunction(readyFn) && readyFn();
434}
435
436function restoreModules() {
437  destroyed = false;
438
439  _.each(modules, bindModule);
440}
441/**
442 * Webflow.load - Add a window load handler that will run even if load event has already happened
443 * @param  {function} handler
444 */
445
446
447var deferLoad;
448
449Webflow.load = function (handler) {
450  deferLoad.then(handler);
451};
452
453function bindLoad() {
454  // Reject any previous deferred (to support destroy)
455  if (deferLoad) {
456    deferLoad.reject();
457    $win.off('load', deferLoad.resolve);
458  } // Create deferred and bind window load event
459
460
461  deferLoad = new $.Deferred();
462  $win.on('load', deferLoad.resolve);
463} // Webflow.destroy - Trigger a destroy event for all modules
464
465
466Webflow.destroy = function (options) {
467  options = options || {};
468  destroyed = true;
469  $win.triggerHandler('__wf_destroy'); // Allow domready reset for tests
470
471  if (options.domready != null) {
472    domready = options.domready;
473  } // Unbind modules
474
475
476  _.each(modules, unbindModule); // Clear any proxy event handlers
477
478
479  Webflow.resize.off();
480  Webflow.scroll.off();
481  Webflow.redraw.off(); // Clear any queued ready methods
482
483  primary = [];
484  secondary = []; // If load event has not yet fired, replace the deferred
485
486  if (deferLoad.state() === 'pending') {
487    bindLoad();
488  }
489}; // Listen for domready
490
491
492$(Webflow.ready); // Listen for window.onload and resolve deferred
493
494bindLoad(); // Export commonjs module
495
496module.exports = window.Webflow = Webflow;
497
498/***/ }),
499/* 4 */
500/***/ (function(module, exports, __webpack_require__) {
501
502"use strict";
503
504
505var _interopRequireWildcard = __webpack_require__(18);
506
507Object.defineProperty(exports, "__esModule", {
508  value: true
509});
510var _exportNames = {
511  IX2EngineActionTypes: true,
512  IX2EngineConstants: true
513};
514exports.IX2EngineConstants = exports.IX2EngineActionTypes = void 0;
515
516var _triggerEvents = __webpack_require__(190);
517
518Object.keys(_triggerEvents).forEach(function (key) {
519  if (key === "default" || key === "__esModule") return;
520  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
521  Object.defineProperty(exports, key, {
522    enumerable: true,
523    get: function get() {
524      return _triggerEvents[key];
525    }
526  });
527});
528
529var _animationActions = __webpack_require__(94);
530
531Object.keys(_animationActions).forEach(function (key) {
532  if (key === "default" || key === "__esModule") return;
533  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
534  Object.defineProperty(exports, key, {
535    enumerable: true,
536    get: function get() {
537      return _animationActions[key];
538    }
539  });
540});
541
542var _triggerInteractions = __webpack_require__(191);
543
544Object.keys(_triggerInteractions).forEach(function (key) {
545  if (key === "default" || key === "__esModule") return;
546  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
547  Object.defineProperty(exports, key, {
548    enumerable: true,
549    get: function get() {
550      return _triggerInteractions[key];
551    }
552  });
553});
554
555var _reducedMotion = __webpack_require__(192);
556
557Object.keys(_reducedMotion).forEach(function (key) {
558  if (key === "default" || key === "__esModule") return;
559  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
560  Object.defineProperty(exports, key, {
561    enumerable: true,
562    get: function get() {
563      return _reducedMotion[key];
564    }
565  });
566});
567
568var IX2EngineActionTypes = _interopRequireWildcard(__webpack_require__(193));
569
570exports.IX2EngineActionTypes = IX2EngineActionTypes;
571
572var IX2EngineConstants = _interopRequireWildcard(__webpack_require__(194));
573
574exports.IX2EngineConstants = IX2EngineConstants;
575
576/***/ }),
577/* 5 */
578/***/ (function(module, exports) {
579
580var FunctionPrototype = Function.prototype;
581var bind = FunctionPrototype.bind;
582var call = FunctionPrototype.call;
583var callBind = bind && bind.bind(call);
584
585module.exports = bind ? function (fn) {
586  return fn && callBind(call, fn);
587} : function (fn) {
588  return fn && function () {
589    return call.apply(fn, arguments);
590  };
591};
592
593
594/***/ }),
595/* 6 */
596/***/ (function(module, exports, __webpack_require__) {
597
598var freeGlobal = __webpack_require__(99);
599
600/** Detect free variable `self`. */
601var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
602
603/** Used as a reference to the global object. */
604var root = freeGlobal || freeSelf || Function('return this')();
605
606module.exports = root;
607
608
609/***/ }),
610/* 7 */
611/***/ (function(module, exports) {
612
613// `IsCallable` abstract operation
614// https://tc39.es/ecma262/#sec-iscallable
615module.exports = function (argument) {
616  return typeof argument == 'function';
617};
618
619
620/***/ }),
621/* 8 */
622/***/ (function(module, exports) {
623
624/**
625 * Checks if `value` is the
626 * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
627 * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
628 *
629 * @static
630 * @memberOf _
631 * @since 0.1.0
632 * @category Lang
633 * @param {*} value The value to check.
634 * @returns {boolean} Returns `true` if `value` is an object, else `false`.
635 * @example
636 *
637 * _.isObject({});
638 * // => true
639 *
640 * _.isObject([1, 2, 3]);
641 * // => true
642 *
643 * _.isObject(_.noop);
644 * // => true
645 *
646 * _.isObject(null);
647 * // => false
648 */
649function isObject(value) {
650  var type = typeof value;
651  return value != null && (type == 'object' || type == 'function');
652}
653
654module.exports = isObject;
655
656
657/***/ }),
658/* 9 */
659/***/ (function(module, exports, __webpack_require__) {
660
661var uncurryThis = __webpack_require__(5);
662var toObject = __webpack_require__(158);
663
664var hasOwnProperty = uncurryThis({}.hasOwnProperty);
665
666// `HasOwnProperty` abstract operation
667// https://tc39.es/ecma262/#sec-hasownproperty
668module.exports = Object.hasOwn || function hasOwn(it, key) {
669  return hasOwnProperty(toObject(it), key);
670};
671
672
673/***/ }),
674/* 10 */
675/***/ (function(module, exports, __webpack_require__) {
676
677var baseMatches = __webpack_require__(197),
678    baseMatchesProperty = __webpack_require__(251),
679    identity = __webpack_require__(63),
680    isArray = __webpack_require__(2),
681    property = __webpack_require__(260);
682
683/**
684 * The base implementation of `_.iteratee`.
685 *
686 * @private
687 * @param {*} [value=_.identity] The value to convert to an iteratee.
688 * @returns {Function} Returns the iteratee.
689 */
690function baseIteratee(value) {
691  // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.
692  // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.
693  if (typeof value == 'function') {
694    return value;
695  }
696  if (value == null) {
697    return identity;
698  }
699  if (typeof value == 'object') {
700    return isArray(value)
701      ? baseMatchesProperty(value[0], value[1])
702      : baseMatches(value);
703  }
704  return property(value);
705}
706
707module.exports = baseIteratee;
708
709
710/***/ }),
711/* 11 */
712/***/ (function(module, exports, __webpack_require__) {
713
714var baseIsNative = __webpack_require__(209),
715    getValue = __webpack_require__(214);
716
717/**
718 * Gets the native function at `key` of `object`.
719 *
720 * @private
721 * @param {Object} object The object to query.
722 * @param {string} key The key of the method to get.
723 * @returns {*} Returns the function if it's native, else `undefined`.
724 */
725function getNative(object, key) {
726  var value = getValue(object, key);
727  return baseIsNative(value) ? value : undefined;
728}
729
730module.exports = getNative;
731
732
733/***/ }),
734/* 12 */
vendor: 2,251 bytes, lines 735-815
735/***/ (function(module, exports) {
736
737/**
738 * Checks if `value` is object-like. A value is object-like if it's not `null`
739 * and has a `typeof` result of "object".
740 *
741 * @static
742 * @memberOf _
743 * @since 4.0.0
744 * @category Lang
745 * @param {*} value The value to check.
746 * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
747 * @example
748 *
749 * _.isObjectLike({});
750 * // => true
751 *
752 * _.isObjectLike([1, 2, 3]);
753 * // => true
754 *
755 * _.isObjectLike(_.noop);
756 * // => false
757 *
758 * _.isObjectLike(null);
759 * // => false
760 */
761function isObjectLike(value) {
762  return value != null && typeof value == 'object';
763}
764
765module.exports = isObjectLike;
766
767
768/***/ }),
769/* 13 */
770/***/ (function(module, exports) {
771
772function _typeof2(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof2(obj); }
773
774function _typeof(obj) {
775  if (typeof Symbol === "function" && _typeof2(Symbol.iterator) === "symbol") {
776    module.exports = _typeof = function _typeof(obj) {
777      return _typeof2(obj);
778    };
779  } else {
780    module.exports = _typeof = function _typeof(obj) {
781      return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : _typeof2(obj);
782    };
783  }
784
785  return _typeof(obj);
786}
787
788module.exports = _typeof;
789
790/***/ }),
791/* 14 */
792/***/ (function(module, exports, __webpack_require__) {
793
794var fails = __webpack_require__(19);
795
796// Detect IE8's incomplete defineProperty implementation
797module.exports = !fails(function () {
798  // eslint-disable-next-line es/no-object-defineproperty -- required for testing
799  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;
800});
801
802
803/***/ }),
804/* 15 */
805/***/ (function(module, exports, __webpack_require__) {
806
807"use strict";
808
809
810var _interopRequireWildcard = __webpack_require__(18);
811
812Object.defineProperty(exports, "__esModule", {
813  value: true
814});
815exports.IX2VanillaUtils = exports.IX2VanillaPlugins = exports.IX2ElementsReducer = exports.IX2EasingUtils = exports.IX2Easings = exp
815orts.IX2BrowserSupport = void 0;
816
817var IX2BrowserSupport = _interopRequireWildcard(__webpack_require__(48));
818
819exports.IX2BrowserSupport = IX2BrowserSupport;
820
821var IX2Easings = _interopRequireWildcard(__webpack_require__(116));
822
823exports.IX2Easings = IX2Easings;
824
825var IX2EasingUtils = _interopRequireWildcard(__webpack_require__(118));
826
827exports.IX2EasingUtils = IX2EasingUtils;
828
829var IX2ElementsReducer = _interopRequireWildcard(__webpack_require__(269));
830
831exports.IX2ElementsReducer = IX2ElementsReducer;
832
833var IX2VanillaPlugins = _interopRequireWildcard(__webpack_require__(120));
834
835exports.IX2VanillaPlugins = IX2VanillaPlugins;
836
837var IX2VanillaUtils = _interopRequireWildcard(__webpack_require__(271));
838
839exports.IX2VanillaUtils = IX2VanillaUtils;
840
841/***/ }),
842/* 16 */
843/***/ (function(module, exports, __webpack_require__) {
844
845var Symbol = __webpack_require__(23),
846    getRawTag = __webpack_require__(210),
847    objectToString = __webpack_require__(211);
848
849/** `Object#toString` result references. */
850var nullTag = '[object Null]',
851    undefinedTag = '[object Undefined]';
852
853/** Built-in value references. */
854var symToStringTag = Symbol ? Symbol.toStringTag : undefined;
855
856/**
857 * The base implementation of `getTag` without fallbacks for buggy environments.
858 *
859 * @private
860 * @param {*} value The value to query.
861 * @returns {string} Returns the `toStringTag`.
862 */
863function baseGetTag(value) {
864  if (value == null) {
865    return value === undefined ? undefinedTag : nullTag;
866  }
867  return (symToStringTag && symToStringTag in Object(value))
868    ? getRawTag(value)
869    : objectToString(value);
870}
871
872module.exports = baseGetTag;
873
874
875/***/ }),
876/* 17 */
877/***/ (function(module, exports, __webpack_require__) {
878
879var isFunction = __webpack_require__(98),
880    isLength = __webpack_require__(56);
881
882/**
883 * Checks if `value` is array-like. A value is considered array-like if it's
884 * not a function and has a `value.length` that's an integer greater than or
885 * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
886 *
887 * @static
888 * @memberOf _
889 * @since 4.0.0
890 * @category Lang
891 * @param {*} value The value to check.
892 * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
893 * @example
894 *
895 * _.isArrayLike([1, 2, 3]);
896 * // => true
897 *
898 * _.isArrayLike(document.body.children);
899 * // => true
900 *
901 * _.isArrayLike('abc');
902 * // => true
903 *
904 * _.isArrayLike(_.noop);
905 * // => false
906 */
907function isArrayLike(value) {
908  return value != null && isLength(value.length) && !isFunction(value);
909}
910
911module.exports = isArrayLike;
912
913
914/***/ }),
915/* 18 */
916/***/ (function(module, exports) {
917
918function _interopRequireWildcard(obj) {
919  if (obj && obj.__esModule) {
920    return obj;
921  } else {
922    var newObj = {};
923
924    if (obj != null) {
925      for (var key in obj) {
926        if (Object.prototype.hasOwnProperty.call(obj, key)) {
927          var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
928
929          if (desc.get || desc.set) {
930            Object.defineProperty(newObj, key, desc);
931          } else {
932            newObj[key] = obj[key];
933          }
934        }
935      }
936    }
937
938    newObj["default"] = obj;
939    return newObj;
940  }
941}
942
943module.exports = _interopRequireWildcard;
944
945/***/ }),
946/* 19 */
947/***/ (function(module, exports) {
948
949module.exports = function (exec) {
950  try {
951    return !!exec();
952  } catch (error) {
953    return true;
954  }
955};
956
957
958/***/ }),
959/* 20 */
960/***/ (function(module, exports, __webpack_require__) {
961
962var isCallable = __webpack_require__(7);
963
964module.exports = function (it) {
965  return typeof it == 'object' ? it !== null : isCallable(it);
966};
967
968
969/***/ }),
970/* 21 */
971/***/ (function(module, exports) {
972
973function _defineProperty(obj, key, value) {
974  if (key in obj) {
975    Object.defineProperty(obj, key, {
976      value: value,
977      enumerable: true,
978      configurable: true,
979      writable: true
980    });
981  } else {
982    obj[key] = value;
983  }
984
985  return obj;
986}
987
988module.exports = _defineProperty;
989
990/***/ }),
991/* 22 */
992/***/ (function(module, exports, __webpack_require__) {
993
994"use strict";
995
996
997Object.defineProperty(exports, "__esModule", {
998  value: true
999});
1000
1001var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
1002
1003exports.clone = clone;
1004exports.addLast = addLast;
1005exports.addFirst = addFirst;
1006exports.removeLast = removeLast;
1007exports.removeFirst = removeFirst;
1008exports.insert = insert;
1009exports.removeAt = removeAt;
1010exports.replaceAt = replaceAt;
1011exports.getIn = getIn;
1012exports.set = set;
1013exports.setIn = setIn;
1014exports.update = update;
1015exports.updateIn = updateIn;
1016exports.merge = merge;
1017exports.mergeDeep = mergeDeep;
1018exports.mergeIn = mergeIn;
1019exports.omit = omit;
1020exports.addDefaults = addDefaults;
1021
1022
1023/*!
1024 * Timm
1025 *
1026 * Immutability helpers with fast reads and acceptable writes.
1027 *
1028 * @copyright Guillermo Grau Panea 2016
1029 * @license MIT
1030 */
1031
1032var INVALID_ARGS = 'INVALID_ARGS';
1033
1034// ===============================================
1035// ### Helpers
1036// ===============================================
1037
1038
1039function throwStr(msg) {
1040  throw new Error(msg);
1041}
1042
1043function getKeysAndSymbols(obj) {
1044  var keys = Object.keys(obj);
1045  if (Object.getOwnPropertySymbols) {
1046    return keys.concat(Object.getOwnPropertySymbols(obj));
1047  }
1048  return keys;
1049}
1050
1051var hasOwnProperty = {}.hasOwnProperty;
1052
1053function clone(obj) {
1054  if (Array.isArray(obj)) return obj.slice();
1055  var keys = getKeysAndSymbols(obj);
1056  var out = {};
1057  for (var i = 0; i < keys.length; i++) {
1058    var key = keys[i];
1059    out[key] = obj[key];
1060  }
1061  return out;
1062}
1063
1064function doMerge(fAddDefaults, fDeep, first) {
1065  var out = first;
1066  !(out != null) && throwStr( false ? undefined : INVALID_ARGS);
1067  var fChanged = false;
1068
1069  for (var _len = arguments.length, rest = Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {
1070    rest[_key - 3] = arguments[_key];
1071  }
1072
1073  for (var idx = 0; idx < rest.length; idx++) {
1074    var obj = rest[idx];
1075    if (obj == null) continue;
1076    var keys = getKeysAndSymbols(obj);
1077    if (!keys.length) continue;
1078    for (var j = 0; j <= keys.length; j++) {
1079      var key = keys[j];
1080      if (fAddDefaults && out[key] !== undefined) continue;
1081      var nextVal = obj[key];
1082      if (fDeep && isObject(out[key]) && isObject(nextVal)) {
1083        nextVal = doMerge(fAddDefaults, fDeep, out[key], nextVal);
1084      }
1085      if (nextVal === undefined || nextVal === out[key]) continue;
1086      if (!fChanged) {
1087        fChanged = true;
1088        out = clone(out);
1089      }
1090      out[key] = nextVal;
1091    }
1092  }
1093  return out;
1094}
1095
1096function isObject(o) {
1097  var type = typeof o === 'undefined' ? 'undefined' : _typeof(o);
1098  return o != null && (type === 'object' || type === 'function');
1099}
1100
1101// _deepFreeze = (obj) ->
1102//   Object.freeze obj
1103//   for key in Object.getOwnPropertyNames obj
1104//     val = obj[key]
1105//     if isObject(val) and not Object.isFrozen val
1106//       _deepFreeze val
1107//   obj
1108
1109// ===============================================
1110// -- ### Arrays
1111// ===============================================
1112
1113// -- #### addLast()
1114// -- Returns a new array with an appended item or items.
1115// --
1116// -- Usage: `addLast<T>(array: Array<T>, val: Array<T>|T): Array<T>`
1117// --
1118// -- ```js
1119// -- arr = ['a', 'b']
1120// -- arr2 = addLast(arr, 'c')
1121// -- // ['a', 'b', 'c']
1122// -- arr2 === arr
1123// -- // false
1124// -- arr3 = addLast(arr, ['c', 'd'])
1125// -- // ['a', 'b', 'c', 'd']
1126// -- ```
1127// `array.concat(val)` also handles the scalar case,
1128// but is apparently very slow
1129function addLast(array, val) {
1130  if (Array.isArray(val)) return array.concat(val);
1131  return array.concat([val]);
1132}
1133
1134// -- #### addFirst()
1135// -- Returns a new array with a prepended item or items.
1136// --
1137// -- Usage: `addFirst<T>(array: Array<T>, val: Array<T>|T): Array<T>`
1138// --
1139// -- ```js
1140// -- arr = ['a', 'b']
1141// -- arr2 = addFirst(arr, 'c')
1142// -- // ['c', 'a', 'b']
1143// -- arr2 === arr
1144// -- // false
1145// -- arr3 = addFirst(arr, ['c', 'd'])
1146// -- // ['c', 'd', 'a', 'b']
1147// -- ```
1148function addFirst(array, val) {
1149  if (Array.isArray(val)) return val.concat(array);
1150  return [val].concat(array);
1151}
1152
1153// -- #### removeLast()
1154// -- Returns a new array removing the last item.
1155// --
1156// -- Usage: `removeLast<T>(array: Array<T>): Array<T>`
1157// --
1158// -- ```js
1159// -- arr = ['a', 'b']
1160// -- arr2 = removeLast(arr)
1161// -- // ['a']
1162// -- arr2 === arr
1163// -- // false
1164// --
1165// -- // The same array is returned if there are no changes:
1166// -- arr3 = []
1167// -- removeLast(arr3) === arr3
1168// -- // true
1169// -- ```
1170function removeLast(array) {
1171  if (!array.length) return array;
1172  return array.slice(0, array.length - 1);
1173}
1174
1175// -- #### removeFirst()
1176// -- Returns a new array removing the first item.
1177// --
1178// -- Usage: `removeFirst<T>(array: Array<T>): Array<T>`
1179// --
1180// -- ```js
1181// -- arr = ['a', 'b']
1182// -- arr2 = removeFirst(arr)
1183// -- // ['b']
1184// -- arr2 === arr
1185// -- // false
1186// --
1187// -- // The same array is returned if there are no changes:
1188// -- arr3 = []
1189// -- removeFirst(arr3) === arr3
1190// -- // true
1191// -- ```
1192function removeFirst(array) {
1193  if (!array.length) return array;
1194  return array.slice(1);
1195}
1196
1197// -- #### insert()
1198// -- Returns a new array obtained by inserting an item or items
1199// -- at a specified index.
1200// --
1201// -- Usage: `insert<T>(array: Array<T>, idx: number, val: Array<T>|T): Array<T>`
1202// --
1203// -- ```js
1204// -- arr = ['a', 'b', 'c']
1205// -- arr2 = insert(arr, 1, 'd')
1206// -- // ['a', 'd', 'b', 'c']
1207// -- arr2 === arr
1208// -- // false
1209// -- insert(arr, 1, ['d', 'e'])
1210// -- // ['a', 'd', 'e', 'b', 'c']
1211// -- ```
1212function insert(array, idx, val) {
1213  return array.slice(0, idx).concat(Array.isArray(val) ? val : [val]).concat(array.slice(idx));
1214}
1215
1216// -- #### removeAt()
1217// -- Returns a new array obtained by removing an item at
1218// -- a specified index.
1219// --
1220// -- Usage: `removeAt<T>(array: Array<T>, idx: number): Array<T>`
1221// --
1222// -- ```js
1223// -- arr = ['a', 'b', 'c']
1224// -- arr2 = removeAt(arr, 1)
1225// -- // ['a', 'c']
1226// -- arr2 === arr
1227// -- // false
1228// --
1229// -- // The same array is returned if there are no changes:
1230// -- removeAt(arr, 4) === arr
1231// -- // true
1232// -- ```
1233function removeAt(array, idx) {
1234  if (idx >= array.length || idx < 0) return array;
1235  return array.slice(0, idx).concat(array.slice(idx + 1));
1236}
1237
1238// -- #### replaceAt()
1239// -- Returns a new array obtained by replacing an item at
1240// -- a specified index. If the provided item is the same as
1241// -- (*referentially equal to*) the previous item at that position,
1242// -- the original array is returned.
1243// --
1244// -- Usage: `replaceAt<T>(array: Array<T>, idx: number, newItem: T): Array<T>`
1245// --
1246// -- ```js
1247// -- arr = ['a', 'b', 'c']
1248// -- arr2 = replaceAt(arr, 1, 'd')
1249// -- // ['a', 'd', 'c']
1250// -- arr2 === arr
1251// -- // false
1252// --
1253// -- // The same object is returned if there are no changes:
1254// -- replaceAt(arr, 1, 'b') === arr
1255// -- // true
1256// -- ```
1257function replaceAt(array, idx, newItem) {
1258  if (array[idx] === newItem) return array;
1259  var len = array.length;
1260  var result = Array(len);
1261  for (var i = 0; i < len; i++) {
1262    result[i] = array[i];
1263  }
1264  result[idx] = newItem;
1265  return result;
1266}
1267
1268// ===============================================
1269// -- ### Collections (objects and arrays)
1270// ===============================================
1271// -- The following types are used throughout this section
1272// -- ```js
1273// -- type ArrayOrObject = Array<any>|Object;
1274// -- type Key = number|string;
1275// -- ```
1276
1277// -- #### getIn()
1278// -- Returns a value from an object at a given path. Works with
1279// -- nested arrays and objects. If the path does not exist, it returns
1280// -- `undefined`.
1281// --
1282// -- Usage: `getIn(obj: ?ArrayOrObject, path: Array<Key>): any`
1283// --
1284// -- ```js
1285// -- obj = { a: 1, b: 2, d: { d1: 3, d2: 4 }, e: ['a', 'b', 'c'] }
1286// -- getIn(obj, ['d', 'd1'])
1287// -- // 3
1288// -- getIn(obj, ['e', 1])
1289// -- // 'b'
1290// -- ```
1291function getIn(obj, path) {
1292  !Array.isArray(path) && throwStr( false ? undefined : INVALID_ARGS);
1293  if (obj == null) return undefined;
1294  var ptr = obj;
1295  for (var i = 0; i < path.length; i++) {
1296    var key = path[i];
1297    ptr = ptr != null ? ptr[key] : undefined;
1298    if (ptr === undefined) return ptr;
1299  }
1300  return ptr;
1301}
1302
1303// -- #### set()
1304// -- Returns a new object with a modified attribute.
1305// -- If the provided value is the same as (*referentially equal to*)
1306// -- the previous value, the original object is returned.
1307// --
1308// -- Usage: `set<T>(obj: ?T, key: Key, val: any): T`
1309// --
1310// -- ```js
1311// -- obj = { a: 1, b: 2, c: 3 }
1312// -- obj2 = set(obj, 'b', 5)
1313// -- // { a: 1, b: 5, c: 3 }
1314// -- obj2 === obj
1315// -- // false
1316// --
1317// -- // The same object is returned if there are no changes:
1318// -- set(obj, 'b', 2) === obj
1319// -- // true
1320// -- ```
1321function set(obj, key, val) {
1322  var fallback = typeof key === 'number' ? [] : {};
1323  var finalObj = obj == null ? fallback : obj;
1324  if (finalObj[key] === val) return finalObj;
1325  var obj2 = clone(finalObj);
1326  obj2[key] = val;
1327  return obj2;
1328}
1329
1330// -- #### setIn()
1331// -- Returns a new object with a modified **nested** attribute.
1332// --
1333// -- Notes:
1334// --
1335// -- * If the provided value is the same as (*referentially equal to*)
1336// -- the previous value, the original object is returned.
1337// -- * If the path does not exist, it will be created before setting
1338// -- the new value.
1339// --
1340// -- Usage: `setIn<T: ArrayOrObject>(obj: T, path: Array<Key>, val: any): T`
1341// --
1342// -- ```js
1343// -- obj = { a: 1, b: 2, d: { d1: 3, d2: 4 }, e: { e1: 'foo', e2: 'bar' } }
1344// -- obj2 = setIn(obj, ['d', 'd1'], 4)
1345// -- // { a: 1, b: 2, d: { d1: 4, d2: 4 }, e: { e1: 'foo', e2: 'bar' } }
1346// -- obj2 === obj
1347// -- // false
1348// -- obj2.d === obj.d
1349// -- // false
1350// -- obj2.e === obj.e
1351// -- // true
1352// --
1353// -- // The same object is returned if there are no changes:
1354// -- obj3 = setIn(obj, ['d', 'd1'], 3)
1355// -- // { a: 1, b: 2, d: { d1: 3, d2: 4 }, e: { e1: 'foo', e2: 'bar' } }
1356// -- obj3 === obj
1357// -- // true
1358// -- obj3.d === obj.d
1359// -- // true
1360// -- obj3.e === obj.e
1361// -- // true
1362// --
1363// -- // ... unknown paths create intermediate keys. Numeric segments are treated as array indices:
1364// -- setIn({ a: 3 }, ['unknown', 0, 'path'], 4)
1365// -- // { a: 3, unknown: [{ path: 4 }] }
1366// -- ```
1367function doSetIn(obj, path, val, idx) {
1368  var newValue = void 0;
1369  var key = path[idx];
1370  if (idx === path.length - 1) {
1371    newValue = val;
1372  } else {
1373    var nestedObj = isObject(obj) && isObject(obj[key]) ? obj[key] : typeof path[idx + 1] === 'number' ? [] : {};
1374    newValue = doSetIn(nestedObj, path, val, idx + 1);
1375  }
1376  return set(obj, key, newValue);
1377}
1378
1379function setIn(obj, path, val) {
1380  if (!path.length) return val;
1381  return doSetIn(obj, path, val, 0);
1382}
1383
1384// -- #### update()
1385// -- Returns a new object with a modified attribute,
1386// -- calculated via a user-provided callback based on the current value.
1387// -- If the calculated value is the same as (*referentially equal to*)
1388// -- the previous value, the original object is returned.
1389// --
1390// -- Usage: `update<T: ArrayOrObject>(obj: T, key: Key,
1391// -- fnUpdate: (prevValue: any) => any): T`
1392// --
1393// -- ```js
1394// -- obj = { a: 1, b: 2, c: 3 }
1395// -- obj2 = update(obj, 'b', (val) => val + 1)
1396// -- // { a: 1, b: 3, c: 3 }
1397// -- obj2 === obj
1398// -- // false
1399// --
1400// -- // The same object is returned if there are no changes:
1401// -- update(obj, 'b', (val) => val) === obj
1402// -- // true
1403// -- ```
1404function update(obj, key, fnUpdate) {
1405  var prevVal = obj == null ? undefined : obj[key];
1406  var nextVal = fnUpdate(prevVal);
1407  return set(obj, key, nextVal);
1408}
1409
1410// -- #### updateIn()
1411// -- Returns a new object with a modified **nested** attribute,
1412// -- calculated via a user-provided callback based on the current value.
1413// -- If the calculated value is the same as (*referentially equal to*)
1414// -- the previous value, the original object is returned.
1415// --
1416// -- Usage: `updateIn<T: ArrayOrObject>(obj: T, path: Array<Key>,
1417// -- fnUpdate: (prevValue: any) => any): T`
1418// --
1419// -- ```js
1420// -- obj = { a: 1, d: { d1: 3, d2: 4 } }
1421// -- obj2 = updateIn(obj, ['d', 'd1'], (val) => val + 1)
1422// -- // { a: 1, d: { d1: 4, d2: 4 } }
1423// -- obj2 === obj
1424// -- // false
1425// --
1426// -- // The same object is returned if there are no changes:
1427// -- obj3 = updateIn(obj, ['d', 'd1'], (val) => val)
1428// -- // { a: 1, d: { d1: 3, d2: 4 } }
1429// -- obj3 === obj
1430// -- // true
1431// -- ```
1432function updateIn(obj, path, fnUpdate) {
1433  var prevVal = getIn(obj, path);
1434  var nextVal = fnUpdate(prevVal);
1435  return setIn(obj, path, nextVal);
1436}
1437
1438// -- #### merge()
1439// -- Returns a new object built as follows: the overlapping keys from the
1440// -- second one overwrite the corresponding entries from the first one.
1441// -- Similar to `Object.assign()`, but immutable.
1442// --
1443// -- Usage:
1444// --
1445// -- * `merge(obj1: Object, obj2: ?Object): Object`
1446// -- * `merge(obj1: Object, ...objects: Array<?Object>): Object`
1447// --
1448// -- The unmodified `obj1` is returned if `obj2` does not *provide something
1449// -- new to* `obj1`, i.e. if either of the following
1450// -- conditions are true:
1451// --
1452// -- * `obj2` is `null` or `undefined`
1453// -- * `obj2` is an object, but it is empty
1454// -- * All attributes of `obj2` are `undefined`
1455// -- * All attributes of `obj2` are referentially equal to the
1456// --   corresponding attributes of `obj1`
1457// --
1458// -- Note that `undefined` attributes in `obj2` do not modify the
1459// -- corresponding attributes in `obj1`.
1460// --
1461// -- ```js
1462// -- obj1 = { a: 1, b: 2, c: 3 }
1463// -- obj2 = { c: 4, d: 5 }
1464// -- obj3 = merge(obj1, obj2)
1465// -- // { a: 1, b: 2, c: 4, d: 5 }
1466// -- obj3 === obj1
1467// -- // false
1468// --
1469// -- // The same object is returned if there are no changes:
1470// -- merge(obj1, { c: 3 }) === obj1
1471// -- // true
1472// -- ```
1473function merge(a, b, c, d, e, f) {
1474  for (var _len2 = arguments.length, rest = Array(_len2 > 6 ? _len2 - 6 : 0), _key2 = 6; _key2 < _len2; _key2++) {
1475    rest[_key2 - 6] = arguments[_key2];
1476  }
1477
1478  return rest.length ? doMerge.call.apply(doMerge, [null, false, false, a, b, c, d, e, f].concat(rest)) : doMerge(false, false, a, b, c, d, e, f);
1479}
1480
1481// -- #### mergeDeep()
1482// -- Returns a new object built as follows: the overlapping keys from the
1483// -- second one overwrite the corresponding entries from the first one.
1484// -- If both the first and second entries are objects they are merged recursively.
1485// -- Similar to `Object.assign()`, but immutable, and deeply merging.
1486// --
1487// -- Usage:
1488// --
1489// -- * `mergeDeep(obj1: Object, obj2: ?Object): Object`
1490// -- * `mergeDeep(obj1: Object, ...objects: Array<?Object>): Object`
1491// --
1492// -- The unmodified `obj1` is returned if `obj2` does not *provide something
1493// -- new to* `obj1`, i.e. if either of the following
1494// -- conditions are true:
1495// --
1496// -- * `obj2` is `null` or `undefined`
1497// -- * `obj2` is an object, but it is empty
1498// -- * All attributes of `obj2` are `undefined`
1499// -- * All attributes of `obj2` are referentially equal to the
1500// --   corresponding attributes of `obj1`
1501// --
1502// -- Note that `undefined` attributes in `obj2` do not modify the
1503// -- corresponding attributes in `obj1`.
1504// --
1505// -- ```js
1506// -- obj1 = { a: 1, b: 2, c: { a: 1 } }
1507// -- obj2 = { b: 3, c: { b: 2 } }
1508// -- obj3 = mergeDeep(obj1, obj2)
1509// -- // { a: 1, b: 3, c: { a: 1, b: 2 }  }
1510// -- obj3 === obj1
1511// -- // false
1512// --
1513// -- // The same object is returned if there are no changes:
1514// -- mergeDeep(obj1, { c: { a: 1 } }) === obj1
1515// -- // true
1516// -- ```
1517function mergeDeep(a, b, c, d, e, f) {
1518  for (var _len3 = arguments.length, rest = Array(_len3 > 6 ? _len3 - 6 : 0), _key3 = 6; _key3 < _len3; _key3++) {
1519    rest[_key3 - 6] = arguments[_key3];
1520  }
1521
1522  return rest.length ? doMerge.call.apply(doMerge, [null, false, true, a, b, c, d, e, f].concat(rest)) : doMerge(false, true, a, b, c, d, e, f);
1523}
1524
1525// -- #### mergeIn()
1526// -- Similar to `merge()`, but merging the value at a given nested path.
1527// -- Note that the returned type is the same as that of the first argument.
1528// --
1529// -- Usage:
1530// --
1531// -- * `mergeIn<T: ArrayOrObject>(obj1: T, path: Array<Key>, obj2: ?Object): T`
1532// -- * `mergeIn<T: ArrayOrObject>(obj1: T, path: Array<Key>,
1533// -- ...objects: Array<?Object>): T`
1534// --
1535// -- ```js
1536// -- obj1 = { a: 1, d: { b: { d1: 3, d2: 4 } } }
1537// -- obj2 = { d3: 5 }
1538// -- obj3 = mergeIn(obj1, ['d', 'b'], obj2)
1539// -- // { a: 1, d: { b: { d1: 3, d2: 4, d3: 5 } } }
1540// -- obj3 === obj1
1541// -- // false
1542// --
1543// -- // The same object is returned if there are no changes:
1544// -- mergeIn(obj1, ['d', 'b'], { d2: 4 }) === obj1
1545// -- // true
1546// -- ```
1547function mergeIn(a, path, b, c, d, e, f) {
1548  var prevVal = getIn(a, path);
1549  if (prevVal == null) prevVal = {};
1550  var nextVal = void 0;
1551
1552  for (var _len4 = arguments.length, rest = Array(_len4 > 7 ? _len4 - 7 : 0), _key4 = 7; _key4 < _len4; _key4++) {
1553    rest[_key4 - 7] = arguments[_key4];
1554  }
1555
1556  if (rest.length) {
1557    nextVal = doMerge.call.apply(doMerge, [null, false, false, prevVal, b, c, d, e, f].concat(rest));
1558  } else {
1559    nextVal = doMerge(false, false, prevVal, b, c, d, e, f);
1560  }
1561  return setIn(a, path, nextVal);
1562}
1563
1564// -- #### omit()
1565// -- Returns an object excluding one or several attributes.
1566// --
1567// -- Usage: `omit(obj: Object, attrs: Array<string>|string): Object`
1568//
1569// -- ```js
1570// -- obj = { a: 1, b: 2, c: 3, d: 4 }
1571// -- omit(obj, 'a')
1572// -- // { b: 2, c: 3, d: 4 }
1573// -- omit(obj, ['b', 'c'])
1574// -- // { a: 1, d: 4 }
1575// --
1576// -- // The same object is returned if there are no changes:
1577// -- omit(obj, 'z') === obj1
1578// -- // true
1579// -- ```
1580function omit(obj, attrs) {
1581  var omitList = Array.isArray(attrs) ? attrs : [attrs];
1582  var fDoSomething = false;
1583  for (var i = 0; i < omitList.length; i++) {
1584    if (hasOwnProperty.call(obj, omitList[i])) {
1585      fDoSomething = true;
1586      break;
1587    }
1588  }
1589  if (!fDoSomething) return obj;
1590  var out = {};
1591  var keys = getKeysAndSymbols(obj);
1592  for (var _i = 0; _i < keys.length; _i++) {
1593    var key = keys[_i];
1594    if (omitList.indexOf(key) >= 0) continue;
1595    out[key] = obj[key];
1596  }
1597  return out;
1598}
1599
1600// -- #### addDefaults()
1601// -- Returns a new object built as follows: `undefined` keys in the first one
1602// -- are filled in with the corresponding values from the second one
1603// -- (even if they are `null`).
1604// --
1605// -- Usage:
1606// --
1607// -- * `addDefaults(obj: Object, defaults: Object): Object`
1608// -- * `addDefaults(obj: Object, ...defaultObjects: Array<?Object>): Object`
1609// --
1610// -- ```js
1611// -- obj1 = { a: 1, b: 2, c: 3 }
1612// -- obj2 = { c: 4, d: 5, e: null }
1613// -- obj3 = addDefaults(obj1, obj2)
1614// -- // { a: 1, b: 2, c: 3, d: 5, e: null }
1615// -- obj3 === obj1
1616// -- // false
1617// --
1618// -- // The same object is returned if there are no changes:
1619// -- addDefaults(obj1, { c: 4 }) === obj1
1620// -- // true
1621// -- ```
1622function addDefaults(a, b, c, d, e, f) {
1623  for (var _len5 = arguments.length, rest = Array(_len5 > 6 ? _len5 - 6 : 0), _key5 = 6; _key5 < _len5; _key5++) {
1624    rest[_key5 - 6] = arguments[_key5];
1625  }
1626
1627  return rest.length ? doMerge.call.apply(doMerge, [null, true, false, a, b, c, d, e, f].concat(rest)) : doMerge(true, false, a, b, c, d, e, f);
1628}
1629
1630// ===============================================
1631// ### Public API
1632// ===============================================
1633var timm = {
1634  clone: clone,
1635  addLast: addLast,
1636  addFirst: addFirst,
1637  removeLast: removeLast,
1638  removeFirst: removeFirst,
1639  insert: insert,
1640  removeAt: removeAt,
1641  replaceAt: replaceAt,
1642
1643  getIn: getIn,
1644  // eslint-disable-next-line object-shorthand
1645  set: set, // so that flow doesn't complain
1646  setIn: setIn,
1647  update: update,
1648  updateIn: updateIn,
1649  merge: merge,
1650  mergeDeep: mergeDeep,
1651  mergeIn: mergeIn,
1652  omit: omit,
1653  addDefaults: addDefaults
1654};
1655
1656exports.default = timm;
1657
1658
1659/***/ }),
1660/* 23 */
1661/***/ (function(module, exports, __webpack_require__) {
1662
1663var root = __webpack_require__(6);
1664
1665/** Built-in value references. */
1666var Symbol = root.Symbol;
1667
1668module.exports = Symbol;
1669
1670
1671/***/ }),
1672/* 24 */
1673/***/ (function(module, exports, __webpack_require__) {
1674
1675var isSymbol = __webpack_require__(38);
1676
1677/** Used as references for various `Number` constants. */
1678var INFINITY = 1 / 0;
1679
1680/**
1681 * Converts `value` to a string key if it's not a string or symbol.
1682 *
1683 * @private
1684 * @param {*} value The value to inspect.
1685 * @returns {string|symbol} Returns the key.
1686 */
1687function toKey(value) {
1688  if (typeof value == 'string' || isSymbol(value)) {
1689    return value;
1690  }
1691  var result = (value + '');
1692  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
1693}
1694
1695module.exports = toKey;
1696
1697
1698/***/ }),
1699/* 25 */
1700/***/ (function(module, exports) {
1701
1702var g;
1703
1704// This works in non-strict mode
1705g = (function() {
1706	return this;
1707})();
1708
1709try {
1710	// This works if eval is allowed (see CSP)
1711	g = g || new Function("return this")();
1712} catch (e) {
1713	// This works if the window reference is available
1714	if (typeof window === "object") g = window;
1715}
1716
1717// g can still be undefined, but nothing to do about it...
1718// We return undefined, instead of nothing here, so it's
1719// easier to handle this case. if(!global) { ...}
1720
1721module.exports = g;
1722
1723
1724/***/ }),
1725/* 26 */
1726/***/ (function(module, exports, __webpack_require__) {
1727
1728// toObject with fallback for non-array-like ES3 strings
1729var IndexedObject = __webpack_require__(147);
1730var requireObjectCoercible = __webpack_require__(72);
1731
1732module.exports = function (it) {
1733  return IndexedObject(requireObjectCoercible(it));
1734};
1735
1736
1737/***/ }),
1738/* 27 */
1739/***/ (function(module, exports, __webpack_require__) {
1740
1741var global = __webpack_require__(1);
1742var isCallable = __webpack_require__(7);
1743
1744var aFunction = function (argument) {
1745  return isCallable(argument) ? argument : undefined;
1746};
1747
1748module.exports = function (namespace, method) {
1749  return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];
1750};
1751
1752
1753/***/ }),
1754/* 28 */
1755/***/ (function(module, exports, __webpack_require__) {
1756
1757var global = __webpack_require__(1);
1758var DESCRIPTORS = __webpack_require__(14);
1759var IE8_DOM_DEFINE = __webpack_require__(80);
1760var anObject = __webpack_require__(29);
1761var toPropertyKey = __webpack_require__(73);
1762
1763var TypeError = global.TypeError;
1764// eslint-disable-next-line es/no-object-defineproperty -- safe
1765var $defineProperty = Object.defineProperty;
1766
1767// `Object.defineProperty` method
1768// https://tc39.es/ecma262/#sec-object.defineproperty
1769exports.f = DESCRIPTORS ? $defineProperty : function defineProperty(O, P, Attributes) {
1770  anObject(O);
1771  P = toPropertyKey(P);
1772  anObject(Attributes);
1773  if (IE8_DOM_DEFINE) try {
1774    return $defineProperty(O, P, Attributes);
1775  } catch (error) { /* empty */ }
1776  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');
1777  if ('value' in Attributes) O[P] = Attributes.value;
1778  return O;
1779};
1780
1781
1782/***/ }),
1783/* 29 */
1784/***/ (function(module, exports, __webpack_require__) {
1785
1786var global = __webpack_require__(1);
1787var isObject = __webpack_require__(20);
1788
1789var String = global.String;
1790var TypeError = global.TypeError;
1791
1792// `Assert: Type(argument) is Object`
1793module.exports = function (argument) {
1794  if (isObject(argument)) return argument;
1795  throw TypeError(String(argument) + ' is not an object');
1796};
1797
1798
1799/***/ }),
1800/* 30 */
1801/***/ (function(module, exports) {
1802
1803function _extends() {
1804  module.exports = _extends = Object.assign || function (target) {
1805    for (var i = 1; i < arguments.length; i++) {
1806      var source = arguments[i];
1807
1808      for (var key in source) {
1809        if (Object.prototype.hasOwnProperty.call(source, key)) {
1810          target[key] = source[key];
1811        }
1812      }
1813    }
1814
1815    return target;
1816  };
1817
1818  return _extends.apply(this, arguments);
1819}
1820
1821module.exports = _extends;
1822
1823/***/ }),
1824/* 31 */
1825/***/ (function(module, exports, __webpack_require__) {
1826
1827var listCacheClear = __webpack_require__(199),
1828    listCacheDelete = __webpack_require__(200),
1829    listCacheGet = __webpack_require__(201),
1830    listCacheHas = __webpack_require__(202),
1831    listCacheSet = __webpack_require__(203);
1832
1833/**
1834 * Creates an list cache object.
1835 *
1836 * @private
1837 * @constructor
1838 * @param {Array} [entries] The key-value pairs to cache.
1839 */
1840function ListCache(entries) {
1841  var index = -1,
1842      length = entries == null ? 0 : entries.length;
1843
1844  this.clear();
1845  while (++index < length) {
1846    var entry = entries[index];
1847    this.set(entry[0], entry[1]);
1848  }
1849}
1850
1851// Add methods to `ListCache`.
1852ListCache.prototype.clear = listCacheClear;
1853ListCache.prototype['delete'] = listCacheDelete;
1854ListCache.prototype.get = listCacheGet;
1855ListCache.prototype.has = listCacheHas;
1856ListCache.prototype.set = listCacheSet;
1857
1858module.exports = ListCache;
1859
1860
1861/***/ }),
1862/* 32 */
1863/***/ (function(module, exports, __webpack_require__) {
1864
1865var eq = __webpack_require__(49);
1866
1867/**
1868 * Gets the index at which the `key` is found in `array` of key-value pairs.
1869 *
1870 * @private
1871 * @param {Array} array The array to inspect.
1872 * @param {*}
vendor: 4,608 bytes, lines 1872-2075
1872 key The key to search for.
1873 * @returns {number} Returns the index of the matched value, else `-1`.
1874 */
1875function assocIndexOf(array, key) {
1876  var length = array.length;
1877  while (length--) {
1878    if (eq(array[length][0], key)) {
1879      return length;
1880    }
1881  }
1882  return -1;
1883}
1884
1885module.exports = assocIndexOf;
1886
1887
1888/***/ }),
1889/* 33 */
1890/***/ (function(module, exports, __webpack_require__) {
1891
1892var getNative = __webpack_require__(11);
1893
1894/* Built-in method references that are verified to be native. */
1895var nativeCreate = getNative(Object, 'create');
1896
1897module.exports = nativeCreate;
1898
1899
1900/***/ }),
1901/* 34 */
1902/***/ (function(module, exports, __webpack_require__) {
1903
1904var isKeyable = __webpack_require__(223);
1905
1906/**
1907 * Gets the data for `map`.
1908 *
1909 * @private
1910 * @param {Object} map The map to query.
1911 * @param {string} key The reference key.
1912 * @returns {*} Returns the map data.
1913 */
1914function getMapData(map, key) {
1915  var data = map.__data__;
1916  return isKeyable(key)
1917    ? data[typeof key == 'string' ? 'string' : 'hash']
1918    : data.map;
1919}
1920
1921module.exports = getMapData;
1922
1923
1924/***/ }),
1925/* 35 */
1926/***/ (function(module, exports, __webpack_require__) {
1927
1928var arrayLikeKeys = __webpack_require__(106),
1929    baseKeys = __webpack_require__(57),
1930    isArrayLike = __webpack_require__(17);
1931
1932/**
1933 * Creates an array of the own enumerable property names of `object`.
1934 *
1935 * **Note:** Non-object values are coerced to objects. See the
1936 * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
1937 * for more details.
1938 *
1939 * @static
1940 * @since 0.1.0
1941 * @memberOf _
1942 * @category Object
1943 * @param {Object} object The object to query.
1944 * @returns {Array} Returns the array of property names.
1945 * @example
1946 *
1947 * function Foo() {
1948 *   this.a = 1;
1949 *   this.b = 2;
1950 * }
1951 *
1952 * Foo.prototype.c = 3;
1953 *
1954 * _.keys(new Foo);
1955 * // => ['a', 'b'] (iteration order is not guaranteed)
1956 *
1957 * _.keys('hi');
1958 * // => ['0', '1']
1959 */
1960function keys(object) {
1961  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
1962}
1963
1964module.exports = keys;
1965
1966
1967/***/ }),
1968/* 36 */
1969/***/ (function(module, exports, __webpack_require__) {
1970
1971var baseIsArguments = __webpack_require__(241),
1972    isObjectLike = __webpack_require__(12);
1973
1974/** Used for built-in method references. */
1975var objectProto = Object.prototype;
1976
1977/** Used to check objects for own properties. */
1978var hasOwnProperty = objectProto.hasOwnProperty;
1979
1980/** Built-in value references. */
1981var propertyIsEnumerable = objectProto.propertyIsEnumerable;
1982
1983/**
1984 * Checks if `value` is likely an `arguments` object.
1985 *
1986 * @static
1987 * @memberOf _
1988 * @since 0.1.0
1989 * @category Lang
1990 * @param {*} value The value to check.
1991 * @returns {boolean} Returns `true` if `value` is an `arguments` object,
1992 *  else `false`.
1993 * @example
1994 *
1995 * _.isArguments(function() { return arguments; }());
1996 * // => true
1997 *
1998 * _.isArguments([1, 2, 3]);
1999 * // => false
2000 */
2001var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {
2002  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&
2003    !propertyIsEnumerable.call(value, 'callee');
2004};
2005
2006module.exports = isArguments;
2007
2008
2009/***/ }),
2010/* 37 */
2011/***/ (function(module, exports, __webpack_require__) {
2012
2013var isArray = __webpack_require__(2),
2014    isKey = __webpack_require__(62),
2015    stringToPath = __webpack_require__(252),
2016    toString = __webpack_require__(255);
2017
2018/**
2019 * Casts `value` to a path array if it's not one.
2020 *
2021 * @private
2022 * @param {*} value The value to inspect.
2023 * @param {Object} [object] The object to query keys on.
2024 * @returns {Array} Returns the cast property path array.
2025 */
2026function castPath(value, object) {
2027  if (isArray(value)) {
2028    return value;
2029  }
2030  return isKey(value, object) ? [value] : stringToPath(toString(value));
2031}
2032
2033module.exports = castPath;
2034
2035
2036/***/ }),
2037/* 38 */
2038/***/ (function(module, exports, __webpack_require__) {
2039
2040var baseGetTag = __webpack_require__(16),
2041    isObjectLike = __webpack_require__(12);
2042
2043/** `Object#toString` result references. */
2044var symbolTag = '[object Symbol]';
2045
2046/**
2047 * Checks if `value` is classified as a `Symbol` primitive or object.
2048 *
2049 * @static
2050 * @memberOf _
2051 * @since 4.0.0
2052 * @category Lang
2053 * @param {*} value The value to check.
2054 * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
2055 * @example
2056 *
2057 * _.isSymbol(Symbol.iterator);
2058 * // => true
2059 *
2060 * _.isSymbol('abc');
2061 * // => false
2062 */
2063function isSymbol(value) {
2064  return typeof value == 'symbol' ||
2065    (isObjectLike(value) && baseGetTag(value) == symbolTag);
2066}
2067
2068module.exports = isSymbol;
2069
2070
2071/***/ }),
2072/* 39 */
2073/***/ (function(module, exports, __webpack_require__) {
2074
2075"use strict";
2076// @wf-will-never-add-flow-to-this-file
2077
2078/* globals window, document */
2079
2080/* eslint-disable no-var */
2081// eslint-disable-next-line strict
2082
2083
2084var IXEvents = __webpack_require__(138);
2085
2086function dispatchCustomEvent(element, eventName) {
2087  var event = document.createEvent('CustomEvent');
2088  event.initCustomEvent(eventName, true, true, null);
2089  element.dispatchEvent(event);
2090}
2091/**
2092 * Webflow: IX Event triggers for other modules
2093 */
2094
2095
2096var $ = window.jQuery;
2097var api = {};
2098var namespace = '.w-ix';
2099var eventTriggers = {
2100  reset: function reset(i, el) {
2101    IXEvents.triggers.reset(i, el);
2102  },
2103  intro: function intro(i, el) {
2104    IXEvents.triggers.intro(i, el);
2105    dispatchCustomEvent(el, 'COMPONENT_ACTIVE');
2106  },
2107  outro: function outro(i, el) {
2108    IXEvents.triggers.outro(i, el);
2109    dispatchCustomEvent(el, 'COMPONENT_INACTIVE');
2110  }
2111};
2112api.triggers = {};
2113api.types = {
2114  INTRO: 'w-ix-intro' + namespace,
2115  OUTRO: 'w-ix-outro' + namespace
2116};
2117$.extend(api.triggers, eventTriggers);
2118module.exports = api;
2119
2120/***/ }),
2121/* 40 */
2122/***/ (function(module, exports) {
2123
2124var call = Function.prototype.call;
2125
2126module.exports = call.bind ? call.bind(call) : function () {
2127  return call.apply(call, arguments);
2128};
2129
2130
2131/***/ }),
2132/* 41 */
2133/***/ (function(module, exports, __webpack_require__) {
2134
2135var global = __webpack_require__(1);
2136var setGlobal = __webpack_require__(42);
2137
2138var SHARED = '__core-js_shared__';
2139var store = global[SHARED] || setGlobal(SHARED, {});
2140
2141module.exports = store;
2142
2143
2144/***/ }),
2145/* 42 */
2146/***/ (function(module, exports, __webpack_require__) {
2147
2148var global = __webpack_require__(1);
2149
2150// eslint-disable-next-line es/no-object-defineproperty -- safe
2151var defineProperty = Object.defineProperty;
2152
2153module.exports = function (key, value) {
2154  try {
2155    defineProperty(global, key, { value: value, configurable: true, writable: true });
2156  } catch (error) {
2157    global[key] = value;
2158  } return value;
2159};
2160
2161
2162/***/ }),
2163/* 43 */
2164/***/ (function(module, exports, __webpack_require__) {
2165
2166var DESCRIPTORS = __webpack_require__(14);
2167var definePropertyModule = __webpack_require__(28);
2168var createPropertyDescriptor = __webpack_require__(71);
2169
2170module.exports = DESCRIPTORS ? function (object, key, value) {
2171  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));
2172} : function (object, key, value) {
2173  object[key] = value;
2174  return object;
2175};
2176
2177
2178/***/ }),
2179/* 44 */
2180/***/ (function(module, exports) {
2181
2182module.exports = {};
2183
2184
2185/***/ }),
2186/* 45 */
2187/***/ (function(module, exports) {
2188
2189// IE8- don't enum bug keys
2190module.exports = [
2191  'constructor',
2192  'hasOwnProperty',
2193  'isPrototypeOf',
2194  'propertyIsEnumerable',
2195  'toLocaleString',
2196  'toString',
2197  'valueOf'
2198];
2199
2200
2201/***/ }),
2202/* 46 */
2203/***/ (function(module, __webpack_exports__, __webpack_require__) {
2204
2205"use strict";
2206__webpack_require__.r(__webpack_exports__);
2207/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ActionTypes", function() { return ActionTypes; });
2208/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return createStore; });
2209/* harmony import */ var lodash_es_isPlainObject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(88);
2210/* harmony import */ var symbol_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(185);
2211
2212
2213
2214/**
2215 * These are private action types reserved by Redux.
2216 * For any unknown actions, you must return the current state.
2217 * If the current state is undefined, you must return the initial state.
2218 * Do not reference these action types directly in your code.
2219 */
2220var ActionTypes = {
2221  INIT: '@@redux/INIT'
2222};
2223
2224/**
2225 * Creates a Redux store that holds the state tree.
2226 * The only way to change the data in the store is to call `dispatch()` on it.
2227 *
2228 * There should only be a single store in your app. To specify how different
2229 * parts of the state tree respond to actions, you may combine several reducers
2230 * into a single reducer function by using `combineReducers`.
2231 *
2232 * @param {Function} reducer A function that returns the next state tree, given
2233 * the current state tree and the action to handle.
2234 *
2235 * @param {any} [preloadedState] The initial state. You may optionally specify it
2236 * to hydrate the state from the server in universal apps, or to restore a
2237 * previously serialized user session.
2238 * If you use `combineReducers` to produce the root reducer function, this must be
2239 * an object with the same shape as `combineReducers` keys.
2240 *
2241 * @param {Function} enhancer The store enhancer. You may optionally specify it
2242 * to enhance the store with third-party capabilities such as middleware,
2243 * time travel, persistence, etc. The only store enhancer that ships with Redux
2244 * is `applyMiddleware()`.
2245 *
2246 * @returns {Store} A Redux store that lets you read the state, dispatch actions
2247 * and subscribe to changes.
2248 */
2249function createStore(reducer, preloadedState, enhancer) {
2250  var _ref2;
2251
2252  if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {
2253    enhancer = preloadedState;
2254    preloadedState = undefined;
2255  }
2256
2257  if (typeof enhancer !== 'undefined') {
2258    if (typeof enhancer !== 'function') {
2259      throw new Error('Expected the enhancer to be a function.');
2260    }
2261
2262    return enhancer(createStore)(reducer, preloadedState);
2263  }
2264
2265  if (typeof reducer !== 'function') {
2266    throw new Error('Expected the reducer to be a function.');
2267  }
2268
2269  var currentReducer = reducer;
2270  var currentState = preloadedState;
2271  var currentListeners = [];
2272  var nextListeners = currentListeners;
2273  var isDispatching = false;
2274
2275  function ensureCanMutateNextListeners() {
2276    if (nextListeners === currentListeners) {
2277      nextListeners = currentListeners.slice();
2278    }
2279  }
2280
2281  /**
2282   * Reads the state tree managed by the store.
2283   *
2284   * @returns {any} The current state tree of your application.
2285   */
2286  function getState() {
2287    return currentState;
2288  }
2289
2290  /**
2291   * Adds a change listener. It will be called any time an action is dispatched,
2292   * and some part of the state tree may potentially have changed. You may then
2293   * call `getState()` to read the current state tree inside the callback.
2294   *
2295   * You may call `dispatch()` from a change listener, with the following
2296   * caveats:
2297   *
2298   * 1. The subscriptions are snapshotted just before every `dispatch()` call.
2299   * If you subscribe or unsubscribe while the listeners are being invoked, this
2300   * will not have any effect on the `dispatch()` that is currently in progress.
2301   * However, the next `dispatch()` call, whether nested or not, will use a more
2302   * recent snapshot of the subscription list.
2303   *
2304   * 2. The listener should not expect to see all state changes, as the state
2305   * might have been updated multiple times during a nested `dispatch()` before
2306   * the listener is called. It is, however, guaranteed that all subscribers
2307   * registered before the `dispatch()` started will be called with the latest
2308   * state by the time it exits.
2309   *
2310   * @param {Function} listener A callback to be invoked on every dispatch.
2311   * @returns {Function} A function to remove this change listener.
2312   */
2313  function subscribe(listener) {
2314    if (typeof listener !== 'function') {
2315      throw new Error('Expected listener to be a function.');
2316    }
2317
2318    var isSubscribed = true;
2319
2320    ensureCanMutateNextListeners();
2321    nextListeners.push(listener);
2322
2323    return function unsubscribe() {
2324      if (!isSubscribed) {
2325        return;
2326      }
2327
2328      isSubscribed = false;
2329
2330      ensureCanMutateNextListeners();
2331      var index = nextListeners.indexOf(listener);
2332      nextListeners.splice(index, 1);
2333    };
2334  }
2335
2336  /**
2337   * Dispatches an action. It is the only way to trigger a state change.
2338   *
2339   * The `reducer` function, used to create the store, will be called with the
2340   * current state tree and the given `action`. Its return value will
2341   * be considered the **next** state of the tree, and the change listeners
2342   * will be notified.
2343   *
2344   * The base implementation only supports plain object actions. If you want to
2345   * dispatch a Promise, an Observable, a thunk, or something else, you need to
2346   * wrap your store creating function into the corresponding middleware. For
2347   * example, see the documentation for the `redux-thunk` package. Even the
2348   * middleware will eventually dispatch plain object actions using this method.
2349   *
2350   * @param {Object} action A plain object representing “what changed”. It is
2351   * a good idea to keep actions serializable so you can record and replay user
2352   * sessions, or use the time travelling `redux-devtools`. An action must have
2353   * a `type` property which may not be `undefined`. It is a good idea to use
2354   * string constants for action types.
2355   *
2356   * @returns {Object} For convenience, the same action object you dispatched.
2357   *
2358   * Note that, if you use a custom middleware, it may wrap `dispatch()` to
2359   * return something else (for example, a Promise you can await).
2360   */
2361  function dispatch(action) {
2362    if (!Object(lodash_es_isPlainObject__WEBPACK_IMPORTED_MODULE_0__["default"])(action)) {
2363      throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');
2364    }
2365
2366    if (typeof action.type === 'undefined') {
2367      throw new Error('Actions may not have an undefined "type" property. ' + 'Have you misspelled a constant?');
2368    }
2369
2370    if (isDispatching) {
2371      throw new Error('Reducers may not dispatch actions.');
2372    }
2373
2374    try {
2375      isDispatching = true;
2376      currentState = currentReducer(currentState, action);
2377    } finally {
2378      isDispatching = false;
2379    }
2380
2381    var listeners = currentListeners = nextListeners;
2382    for (var i = 0; i < listeners.length; i++) {
2383      listeners[i]();
2384    }
2385
2386    return action;
2387  }
2388
2389  /**
2390   * Replaces the reducer currently used by the store to calculate the state.
2391   *
2392   * You might need this if your app implements code splitting and you want to
2393   * load some of the reducers dynamically. You might also need this if you
2394   * implement a hot reloading mechanism for Redux.
2395   *
2396   * @param {Function} nextReducer The reducer for the store to use instead.
2397   * @returns {void}
2398   */
2399  function replaceReducer(nextReducer) {
2400    if (typeof nextReducer !== 'function') {
2401      throw new Error('Expected the nextReducer to be a function.');
2402    }
2403
2404    currentReducer = nextReducer;
2405    dispatch({ type: ActionTypes.INIT });
2406  }
2407
2408  /**
2409   * Interoperability point for observable/reactive libraries.
2410   * @returns {observable} A minimal observable of state changes.
2411   * For more information, see the observable proposal:
2412   * https://github.com/zenparsing/es-observable
2413   */
2414  function observable() {
2415    var _ref;
2416
2417    var outerSubscribe = subscribe;
2418    return _ref = {
2419      /**
2420       * The minimal observable subscription method.
2421       * @param {Object} observer Any object that can be used as an observer.
2422       * The observer object should have a `next` method.
2423       * @returns {subscription} An object with an `unsubscribe` method that can
2424       * be used to unsubscribe the observable from the store, and prevent further
2425       * emission of values from the observable.
2426       */
2427      subscribe: function subscribe(observer) {
2428        if (typeof observer !== 'object') {
2429          throw new TypeError('Expected the observer to be an object.');
2430        }
2431
2432        function observeState() {
2433          if (observer.next) {
2434            observer.next(getState());
2435          }
2436        }
2437
2438        observeState();
2439        var unsubscribe = outerSubscribe(observeState);
2440        return { unsubscribe: unsubscribe };
2441      }
2442    }, _ref[symbol_observable__WEBPACK_IMPORTED_MODULE_1__["default"]] = function () {
2443      return this;
2444    }, _ref;
2445  }
2446
2447  // When a store is created, an "INIT" action is dispatched so that every
2448  // reducer returns their initial state. This effectively populates
2449  // the initial state tree.
2450  dispatch({ type: ActionTypes.INIT });
2451
2452  return _ref2 = {
2453    dispatch: dispatch,
2454    subscribe: subscribe,
2455    getState: getState,
2456    replaceReducer: replaceReducer
2457  }, _ref2[symbol_observable__WEBPACK_IMPORTED_MODULE_1__["default"]] = observable, _ref2;
2458}
2459
2460/***/ }),
2461/* 47 */
2462/***/ (function(module, __webpack_exports__, __webpack_require__) {
2463
2464"use strict";
2465__webpack_require__.r(__webpack_exports__);
2466/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return compose; });
2467/**
2468 * Composes single-argument functions from right to left. The rightmost
2469 * function can take multiple arguments as it provides the signature for
2470 * the resulting composite function.
2471 *
2472 * @param {...Function} funcs The functions to compose.
2473 * @returns {Function} A function obtained by composing the argument functions
2474 * from right to left. For example, compose(f, g, h) is identical to doing
2475 * (...args) => f(g(h(...args))).
2476 */
2477
2478function compose() {
2479  for (var _len = arguments.length, funcs = Array(_len), _key = 0; _key < _len; _key++) {
2480    funcs[_key] = arguments[_key];
2481  }
2482
2483  if (funcs.length === 0) {
2484    return function (arg) {
2485      return arg;
2486    };
2487  }
2488
2489  if (funcs.length === 1) {
2490    return funcs[0];
2491  }
2492
2493  var last = funcs[funcs.length - 1];
2494  var rest = funcs.slice(0, -1);
2495  return function () {
2496    return rest.reduceRight(function (composed, f) {
2497      return f(composed);
2498    }, last.apply(undefined, arguments));
2499  };
2500}
2501
2502/***/ }),
2503/* 48 */
2504/***/ (function(module, exports, __webpack_require__) {
2505
2506"use strict";
2507
2508
2509var _interopRequireDefault = __webpack_require__(0);
2510
2511Object.defineProperty(exports, "__esModule", {
2512  value: true
2513});
2514exports.TRANSFORM_STYLE_PREFIXED = exports.TRANSFORM_PREFIXED = exports.FLEX_PREFIXED = exports.ELEMENT_MATCHES = exports.withBrowser = exports.IS_BROW
2514SER_ENV = void 0;
2515
2516var _find = _interopRequireDefault(__webpack_require__(95));
2517/* eslint-env browser */
2518
2519
2520var IS_BROWSER_ENV = typeof window !== 'undefined'; // $FlowFixMe
2521
2522exports.IS_BROWSER_ENV = IS_BROWSER_ENV;
2523
2524var withBrowser = function withBrowser(fn, fallback) {
2525  if (IS_BROWSER_ENV) {
2526    return fn();
2527  }
2528
2529  return fallback;
2530};
2531
2532exports.withBrowser = withBrowser;
2533var ELEMENT_MATCHES = withBrowser(function () {
2534  return (0, _find["default"])(['matches', 'matchesSelector', 'mozMatchesSelector', 'msMatchesSelector', 'oMatchesSelector', 'webkitMatchesSelector'], function (key) {
2535    return key in Element.prototype;
2536  });
2537});
2538exports.ELEMENT_MATCHES = ELEMENT_MATCHES;
2539var FLEX_PREFIXED = withBrowser(function () {
2540  var el = document.createElement('i');
2541  var values = ['flex', '-webkit-flex', '-ms-flexbox', '-moz-box', '-webkit-box'];
2542  var none = '';
2543
2544  try {
2545    var length = values.length;
2546
2547    for (var i = 0; i < length; i++) {
2548      var value = values[i];
2549      el.style.display = value;
2550
2551      if (el.style.display === value) {
2552        return value;
2553      }
2554    }
2555
2556    return none;
2557  } catch (err) {
2558    return none;
2559  }
2560}, 'flex');
2561exports.FLEX_PREFIXED = FLEX_PREFIXED;
2562var TRANSFORM_PREFIXED = withBrowser(function () {
2563  var el = document.createElement('i');
2564
2565  if (el.style.transform == null) {
2566    var prefixes = ['Webkit', 'Moz', 'ms'];
2567    var suffix = 'Transform';
2568    var length = prefixes.length;
2569
2570    for (var i = 0; i < length; i++) {
2571      var prop = prefixes[i] + suffix; // $FlowFixMe
2572
2573      if (el.style[prop] !== undefined) {
2574        return prop;
2575      }
2576    }
2577  }
2578
2579  return 'transform';
2580}, 'transform'); // $FlowFixMe
2581
2582exports.TRANSFORM_PREFIXED = TRANSFORM_PREFIXED;
2583var TRANSFORM_PREFIX = TRANSFORM_PREFIXED.split('transform')[0];
2584var TRANSFORM_STYLE_PREFIXED = TRANSFORM_PREFIX ? TRANSFORM_PREFIX + 'TransformStyle' : 'transformStyle';
2585exports.TRANSFORM_STYLE_PREFIXED = TRANSFORM_STYLE_PREFIXED;
2586
2587/***/ }),
2588/* 49 */
2589/***/ (function(module, exports) {
2590
2591/**
2592 * Performs a
2593 * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
2594 * comparison between two values to determine if they are equivalent.
2595 *
2596 * @static
2597 * @memberOf _
2598 * @since 4.0.0
2599 * @category Lang
2600 * @param {*} value The value to compare.
2601 * @param {*} other The other value to compare.
2602 * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
2603 * @example
2604 *
2605 * var object = { 'a': 1 };
2606 * var other = { 'a': 1 };
2607 *
2608 * _.eq(object, object);
2609 * // => true
2610 *
2611 * _.eq(object, other);
2612 * // => false
2613 *
2614 * _.eq('a', 'a');
2615 * // => true
2616 *
2617 * _.eq('a', Object('a'));
2618 * // => false
2619 *
2620 * _.eq(NaN, NaN);
2621 * // => true
2622 */
2623function eq(value, other) {
2624  return value === other || (value !== value && other !== other);
2625}
2626
2627module.exports = eq;
2628
2629
2630/***/ }),
2631/* 50 */
2632/***/ (function(module, exports, __webpack_require__) {
2633
2634var getNative = __webpack_require__(11),
2635    root = __webpack_require__(6);
2636
2637/* Built-in method references that are verified to be native. */
2638var Map = getNative(root, 'Map');
2639
2640module.exports = Map;
2641
2642
2643/***/ }),
2644/* 51 */
2645/***/ (function(module, exports, __webpack_require__) {
2646
2647var mapCacheClear = __webpack_require__(215),
2648    mapCacheDelete = __webpack_require__(222),
2649    mapCacheGet = __webpack_require__(224),
2650    mapCacheHas = __webpack_require__(225),
2651    mapCacheSet = __webpack_require__(226);
2652
2653/**
2654 * Creates a map cache object to store key-value pairs.
2655 *
2656 * @private
2657 * @constructor
2658 * @param {Array} [entries] The key-value pairs to cache.
2659 */
2660function MapCache(entries) {
2661  var index = -1,
2662      length = entries == null ? 0 : entries.length;
2663
2664  this.clear();
2665  while (++index < length) {
2666    var entry = entries[index];
2667    this.set(entry[0], entry[1]);
2668  }
2669}
2670
2671// Add methods to `MapCache`.
2672MapCache.prototype.clear = mapCacheClear;
2673MapCache.prototype['delete'] = mapCacheDelete;
2674MapCache.prototype.get = mapCacheGet;
2675MapCache.prototype.has = mapCacheHas;
2676MapCache.prototype.set = mapCacheSet;
2677
2678module.exports = MapCache;
2679
2680
2681/***/ }),
2682/* 52 */
2683/***/ (function(module, exports) {
2684
2685/**
2686 * Appends the elements of `values` to `array`.
2687 *
2688 * @private
2689 * @param {Array} array The array to modify.
2690 * @param {Array} values The values to append.
2691 * @returns {Array} Returns `array`.
2692 */
2693function arrayPush(array, values) {
2694  var index = -1,
2695      length = values.length,
2696      offset = array.length;
2697
2698  while (++index < length) {
2699    array[offset + index] = values[index];
2700  }
2701  return array;
2702}
2703
2704module.exports = arrayPush;
2705
2706
2707/***/ }),
2708/* 53 */
2709/***/ (function(module, exports, __webpack_require__) {
2710
2711/* WEBPACK VAR INJECTION */(function(module) {var root = __webpack_require__(6),
2712    stubFalse = __webpack_require__(242);
2713
2714/** Detect free variable `exports`. */
2715var freeExports =  true && exports && !exports.nodeType && exports;
2716
2717/** Detect free variable `module`. */
2718var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
2719
2720/** Detect the popular CommonJS extension `module.exports`. */
2721var moduleExports = freeModule && freeModule.exports === freeExports;
2722
2723/** Built-in value references. */
2724var Buffer = moduleExports ? root.Buffer : undefined;
2725
2726/* Built-in method references for those with the same name as other `lodash` methods. */
2727var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;
2728
2729/**
2730 * Checks if `value` is a buffer.
2731 *
2732 * @static
2733 * @memberOf _
2734 * @since 4.3.0
2735 * @category Lang
2736 * @param {*} value The value to check.
2737 * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.
2738 * @example
2739 *
2740 * _.isBuffer(new Buffer(2));
2741 * // => true
2742 *
2743 * _.isBuffer(new Uint8Array(2));
2744 * // => false
2745 */
2746var isBuffer = nativeIsBuffer || stubFalse;
2747
2748module.exports = isBuffer;
2749
2750/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(107)(module)))
2751
2752/***/ }),
2753/* 54 */
vendor: 5,344 bytes, lines 2754-2962
2754/***/ (function(module, exports) {
2755
2756/** Used as references for various `Number` constants. */
2757var MAX_SAFE_INTEGER = 9007199254740991;
2758
2759/** Used to detect unsigned integer values. */
2760var reIsUint = /^(?:0|[1-9]\d*)$/;
2761
2762/**
2763 * Checks if `value` is a valid array-like index.
2764 *
2765 * @private
2766 * @param {*} value The value to check.
2767 * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
2768 * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
2769 */
2770function isIndex(value, length) {
2771  var type = typeof value;
2772  length = length == null ? MAX_SAFE_INTEGER : length;
2773
2774  return !!length &&
2775    (type == 'number' ||
2776      (type != 'symbol' && reIsUint.test(value))) &&
2777        (value > -1 && value % 1 == 0 && value < length);
2778}
2779
2780module.exports = isIndex;
2781
2782
2783/***/ }),
2784/* 55 */
2785/***/ (function(module, exports, __webpack_require__) {
2786
2787var baseIsTypedArray = __webpack_require__(243),
2788    baseUnary = __webpack_require__(244),
2789    nodeUtil = __webpack_require__(245);
2790
2791/* Node.js helper references. */
2792var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
2793
2794/**
2795 * Checks if `value` is classified as a typed array.
2796 *
2797 * @static
2798 * @memberOf _
2799 * @since 3.0.0
2800 * @category Lang
2801 * @param {*} value The value to check.
2802 * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
2803 * @example
2804 *
2805 * _.isTypedArray(new Uint8Array);
2806 * // => true
2807 *
2808 * _.isTypedArray([]);
2809 * // => false
2810 */
2811var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
2812
2813module.exports = isTypedArray;
2814
2815
2816/***/ }),
2817/* 56 */
2818/***/ (function(module, exports) {
2819
2820/** Used as references for various `Number` constants. */
2821var MAX_SAFE_INTEGER = 9007199254740991;
2822
2823/**
2824 * Checks if `value` is a valid array-like length.
2825 *
2826 * **Note:** This method is loosely based on
2827 * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
2828 *
2829 * @static
2830 * @memberOf _
2831 * @since 4.0.0
2832 * @category Lang
2833 * @param {*} value The value to check.
2834 * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
2835 * @example
2836 *
2837 * _.isLength(3);
2838 * // => true
2839 *
2840 * _.isLength(Number.MIN_VALUE);
2841 * // => false
2842 *
2843 * _.isLength(Infinity);
2844 * // => false
2845 *
2846 * _.isLength('3');
2847 * // => false
2848 */
2849function isLength(value) {
2850  return typeof value == 'number' &&
2851    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
2852}
2853
2854module.exports = isLength;
2855
2856
2857/***/ }),
2858/* 57 */
2859/***/ (function(module, exports, __webpack_require__) {
2860
2861var isPrototype = __webpack_require__(58),
2862    nativeKeys = __webpack_require__(246);
2863
2864/** Used for built-in method references. */
2865var objectProto = Object.prototype;
2866
2867/** Used to check objects for own properties. */
2868var hasOwnProperty = objectProto.hasOwnProperty;
2869
2870/**
2871 * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
2872 *
2873 * @private
2874 * @param {Object} object The object to query.
2875 * @returns {Array} Returns the array of property names.
2876 */
2877function baseKeys(object) {
2878  if (!isPrototype(object)) {
2879    return nativeKeys(object);
2880  }
2881  var result = [];
2882  for (var key in Object(object)) {
2883    if (hasOwnProperty.call(object, key) && key != 'constructor') {
2884      result.push(key);
2885    }
2886  }
2887  return result;
2888}
2889
2890module.exports = baseKeys;
2891
2892
2893/***/ }),
2894/* 58 */
2895/***/ (function(module, exports) {
2896
2897/** Used for built-in method references. */
2898var objectProto = Object.prototype;
2899
2900/**
2901 * Checks if `value` is likely a prototype object.
2902 *
2903 * @private
2904 * @param {*} value The value to check.
2905 * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
2906 */
2907function isPrototype(value) {
2908  var Ctor = value && value.constructor,
2909      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;
2910
2911  return value === proto;
2912}
2913
2914module.exports = isPrototype;
2915
2916
2917/***/ }),
2918/* 59 */
2919/***/ (function(module, exports, __webpack_require__) {
2920
2921var DataView = __webpack_require__(247),
2922    Map = __webpack_require__(50),
2923    Promise = __webpack_require__(248),
2924    Set = __webpack_require__(249),
2925    WeakMap = __webpack_require__(109),
2926    baseGetTag = __webpack_require__(16),
2927    toSource = __webpack_require__(100);
2928
2929/** `Object#toString` result references. */
2930var mapTag = '[object Map]',
2931    objectTag = '[object Object]',
2932    promiseTag = '[object Promise]',
2933    setTag = '[object Set]',
2934    weakMapTag = '[object WeakMap]';
2935
2936var dataViewTag = '[object DataView]';
2937
2938/** Used to detect maps, sets, and weakmaps. */
2939var dataViewCtorString = toSource(DataView),
2940    mapCtorString = toSource(Map),
2941    promiseCtorString = toSource(Promise),
2942    setCtorString = toSource(Set),
2943    weakMapCtorString = toSource(WeakMap);
2944
2945/**
2946 * Gets the `toStringTag` of `value`.
2947 *
2948 * @private
2949 * @param {*} value The value to query.
2950 * @returns {string} Returns the `toStringTag`.
2951 */
2952var getTag = baseGetTag;
2953
2954// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.
2955if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||
2956    (Map && getTag(new Map) != mapTag) ||
2957    (Promise && getTag(Promise.resolve()) != promiseTag) ||
2958    (Set && getTag(new Set) != setTag) ||
2959    (WeakMap && getTag(new WeakMap) != weakMapTag)) {
2960  getTag = function(value) {
2961    var result = baseGetTag(value),
2962        Ctor = result == objectTag ? value.constructor : undefined,
vendor: 6,048 bytes, lines 2963-3202
2963        ctorString = Ctor ? toSource(Ctor) : '';
2964
2965    if (ctorString) {
2966      switch (ctorString) {
2967        case dataViewCtorString: return dataViewTag;
2968        case mapCtorString: return mapTag;
2969        case promiseCtorString: return promiseTag;
2970        case setCtorString: return setTag;
2971        case weakMapCtorString: return weakMapTag;
2972      }
2973    }
2974    return result;
2975  };
2976}
2977
2978module.exports = getTag;
2979
2980
2981/***/ }),
2982/* 60 */
2983/***/ (function(module, exports, __webpack_require__) {
2984
2985var baseGet = __webpack_require__(61);
2986
2987/**
2988 * Gets the value at `path` of `object`. If the resolved value is
2989 * `undefined`, the `defaultValue` is returned in its place.
2990 *
2991 * @static
2992 * @memberOf _
2993 * @since 3.7.0
2994 * @category Object
2995 * @param {Object} object The object to query.
2996 * @param {Array|string} path The path of the property to get.
2997 * @param {*} [defaultValue] The value returned for `undefined` resolved values.
2998 * @returns {*} Returns the resolved value.
2999 * @example
3000 *
3001 * var object = { 'a': [{ 'b': { 'c': 3 } }] };
3002 *
3003 * _.get(object, 'a[0].b.c');
3004 * // => 3
3005 *
3006 * _.get(object, ['a', '0', 'b', 'c']);
3007 * // => 3
3008 *
3009 * _.get(object, 'a.b.c', 'default');
3010 * // => 'default'
3011 */
3012function get(object, path, defaultValue) {
3013  var result = object == null ? undefined : baseGet(object, path);
3014  return result === undefined ? defaultValue : result;
3015}
3016
3017module.exports = get;
3018
3019
3020/***/ }),
3021/* 61 */
3022/***/ (function(module, exports, __webpack_require__) {
3023
3024var castPath = __webpack_require__(37),
3025    toKey = __webpack_require__(24);
3026
3027/**
3028 * The base implementation of `_.get` without support for default values.
3029 *
3030 * @private
3031 * @param {Object} object The object to query.
3032 * @param {Array|string} path The path of the property to get.
3033 * @returns {*} Returns the resolved value.
3034 */
3035function baseGet(object, path) {
3036  path = castPath(path, object);
3037
3038  var index = 0,
3039      length = path.length;
3040
3041  while (object != null && index < length) {
3042    object = object[toKey(path[index++])];
3043  }
3044  return (index && index == length) ? object : undefined;
3045}
3046
3047module.exports = baseGet;
3048
3049
3050/***/ }),
3051/* 62 */
3052/***/ (function(module, exports, __webpack_require__) {
3053
3054var isArray = __webpack_require__(2),
3055    isSymbol = __webpack_require__(38);
3056
3057/** Used to match property names within property paths. */
3058var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
3059    reIsPlainProp = /^\w*$/;
3060
3061/**
3062 * Checks if `value` is a property name and not a property path.
3063 *
3064 * @private
3065 * @param {*} value The value to check.
3066 * @param {Object} [object] The object to query keys on.
3067 * @returns {boolean} Returns `true` if `value` is a property name, else `false`.
3068 */
3069function isKey(value, object) {
3070  if (isArray(value)) {
3071    return false;
3072  }
3073  var type = typeof value;
3074  if (type == 'number' || type == 'symbol' || type == 'boolean' ||
3075      value == null || isSymbol(value)) {
3076    return true;
3077  }
3078  return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||
3079    (object != null && value in Object(object));
3080}
3081
3082module.exports = isKey;
3083
3084
3085/***/ }),
3086/* 63 */
3087/***/ (function(module, exports) {
3088
3089/**
3090 * This method returns the first argument it receives.
3091 *
3092 * @static
3093 * @since 0.1.0
3094 * @memberOf _
3095 * @category Util
3096 * @param {*} value Any value.
3097 * @returns {*} Returns `value`.
3098 * @example
3099 *
3100 * var object = { 'a': 1 };
3101 *
3102 * console.log(_.identity(object) === object);
3103 * // => true
3104 */
3105function identity(value) {
3106  return value;
3107}
3108
3109module.exports = identity;
3110
3111
3112/***/ }),
3113/* 64 */
3114/***/ (function(module, exports, __webpack_require__) {
3115
3116var baseTrim = __webpack_require__(264),
3117    isObject = __webpack_require__(8),
3118    isSymbol = __webpack_require__(38);
3119
3120/** Used as references for various `Number` constants. */
3121var NAN = 0 / 0;
3122
3123/** Used to detect bad signed hexadecimal string values. */
3124var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
3125
3126/** Used to detect binary string values. */
3127var reIsBinary = /^0b[01]+$/i;
3128
3129/** Used to detect octal string values. */
3130var reIsOctal = /^0o[0-7]+$/i;
3131
3132/** Built-in method references without a dependency on `root`. */
3133var freeParseInt = parseInt;
3134
3135/**
3136 * Converts `value` to a number.
3137 *
3138 * @static
3139 * @memberOf _
3140 * @since 4.0.0
3141 * @category Lang
3142 * @param {*} value The value to process.
3143 * @returns {number} Returns the number.
3144 * @example
3145 *
3146 * _.toNumber(3.2);
3147 * // => 3.2
3148 *
3149 * _.toNumber(Number.MIN_VALUE);
3150 * // => 5e-324
3151 *
3152 * _.toNumber(Infinity);
3153 * // => Infinity
3154 *
3155 * _.toNumber('3.2');
3156 * // => 3.2
3157 */
3158function toNumber(value) {
3159  if (typeof value == 'number') {
3160    return value;
3161  }
3162  if (isSymbol(value)) {
3163    return NAN;
3164  }
3165  if (isObject(value)) {
3166    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;
3167    value = isObject(other) ? (other + '') : other;
3168  }
3169  if (typeof value != 'string') {
3170    return value === 0 ? value : +value;
3171  }
3172  value = baseTrim(value);
3173  var isBinary = reIsBinary.test(value);
3174  return (isBinary || reIsOctal.test(value))
3175    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)
3176    : (reIsBadHex.test(value) ? NAN : +value);
3177}
3178
3179module.exports = toNumber;
3180
3181
3182/***/ }),
3183/* 65 */
3184/***/ (function(module, exports, __webpack_require__) {
3185
3186"use strict";
3187
3188
3189var _interopRequireDefault = __webpack_require__(0);
3190
3191Object.defineProperty(exports, "__esModule", {
3192  value: true
3193});
3194exports.mediaQueriesDefined = exports.viewportWidthChanged = exports.actionListPlaybackChanged = exports.elementStateChanged = exports.instanceRemoved = exports.instanceStarted = exports.instanceAdded = exports.parameterChanged = exports.animationFrameChanged = exports.eventStateChanged = exports.testFrameRendered = exports.eventListenerAdded = exports.clearRequested = exports.stopRequested = exports.playbackRequested = exports.previewRequested = exports.sessionStopped = exports.sessionStarted = exports.sessionInitialized = exports.rawDataImported = void 0;
3195
3196var _extends2 = _interopRequireDefault(__webpack_require__(30));
3197
3198var _constants = __webpack_require__(4);
3199
3200var _shared = __webpack_require__(15);
3201
3202var _constants$IX2EngineA = _constants.IX2EngineActionTypes,
3203    IX2_RAW_DATA_IMPORTED = _constants$IX2EngineA.IX2_RAW_DATA_IMPORTED,
3204    IX2_SESSION_INITIALIZED = _constants$IX2EngineA.IX2_SESSION_INITIALIZED,
3205    IX2_SESSION_STARTED = _constants$IX2EngineA.IX2_SESSION_STARTED,
3206    IX2_SESSION_STOPPED = _constants$IX2EngineA.IX2_SESSION_STOPPED,
3207    IX2_PREVIEW_REQUESTED = _constants$IX2EngineA.IX2_PREVIEW_REQUESTED,
3208    IX2_PLAYBACK_REQUESTED = _constants$IX2EngineA.IX2_PLAYBACK_REQUESTED,
3209    IX2_STOP_REQUESTED = _constants$IX2EngineA.IX2_STOP_REQUESTED,
3210    IX2_CLEAR_REQUESTED = _constants$IX2EngineA.IX2_CLEAR_REQUESTED,
3211    IX2_EVENT_LISTENER_ADDED = _constants$IX2EngineA.IX2_EVENT_LISTENER_ADDED,
3212    IX2_TEST_FRAME_RENDERED = _constants$IX2EngineA.IX2_TEST_FRAME_RENDERED,
3213    IX2_EVENT_STATE_CHANGED = _constants$IX2EngineA.IX2_EVENT_STATE_CHANGED,
3214    IX2_ANIMATION_FRAME_CHANGED = _constants$IX2EngineA.IX2_ANIMATION_FRAME_CHANGED,
3215    IX2_PARAMETER_CHANGED = _constants$IX2EngineA.IX2_PARAMETER_CHANGED,
3216    IX2_INSTANCE_ADDED = _constants$IX2EngineA.IX2_INSTANCE_ADDED,
3217    IX2_INSTANCE_STARTED = _constants$IX2EngineA.IX2_INSTANCE_STARTED,
3218    IX2_INSTANCE_REMOVED = _constants$IX2EngineA.IX2_INSTANCE_REMOVED,
3219    IX2_ELEMENT_STATE_CHANGED = _constants$IX2EngineA.IX2_ELEMENT_STATE_CHANGED,
3220    IX2_ACTION_LIST_PLAYBACK_CHANGED = _constants$IX2EngineA.IX2_ACTION_LIST_PLAYBACK_CHANGED,
3221    IX2_VIEWPORT_WIDTH_CHANGED = _constants$IX2EngineA.IX2_VIEWPORT_WIDTH_CHANGED,
3222    IX2_MEDIA_QUERIES_DEFINED = _constants$IX2EngineA.IX2_MEDIA_QUERIES_DEFINED;
3223var reifyState = _shared.IX2VanillaUtils.reifyState; // TODO: Figure out what this is and elevate it
3224
3225var rawDataImported = function rawDataImported(rawData) {
3226  return {
3227    type: IX2_RAW_DATA_IMPORTED,
3228    payload: (0, _extends2["default"])({}, reifyState(rawData))
3229  };
3230};
3231
3232exports.rawDataImported = rawDataImported;
3233
3234var sessionInitialized = function sessionInitialized(_ref) {
3235  var hasBoundaryNodes = _ref.hasBoundaryNodes,
3236      reducedMotion = _ref.reducedMotion;
3237  return {
3238    type: IX2_SESSION_INITIALIZED,
3239    payload: {
3240      hasBoundaryNodes: hasBoundaryNodes,
3241      reducedMotion: reducedMotion
3242    }
3243  };
3244};
3245
3246exports.sessionInitialized = sessionInitialized;
3247
3248var sessionStarted = function sessionStarted() {
3249  return {
3250    type: IX2_SESSION_STARTED
3251  };
3252};
3253
3254exports.sessionStarted = sessionStarted;
3255
3256var sessionStopped = function sessionStopped() {
3257  return {
3258    type: IX2_SESSION_STOPPED
3259  };
3260};
3261
3262exports.sessionStopped = sessionStopped;
3263
3264var previewRequested = function previewRequested(_ref2) {
3265  var rawData = _ref2.rawData,
3266      defer = _ref2.defer;
3267  return {
3268    type: IX2_PREVIEW_REQUESTED,
3269    payload: {
3270      defer: defer,
3271      rawData: rawData
3272    }
3273  };
3274};
3275
3276exports.previewRequested = previewRequested;
3277
3278var playbackRequested = function playbackRequested(_ref3) {
3279  var _ref3$actionTypeId = _ref3.actionTypeId,
3280      actionTypeId = _ref3$actionTypeId === void 0 ? _constants.ActionTypeConsts.GENERAL_START_ACTION : _ref3$actionTypeId,
3281      actionListId = _ref3.actionListId,
3282      actionItemId = _ref3.actionItemId,
3283      eventId = _ref3.eventId,
3284      allowEvents = _ref3.allowEvents,
3285      immediate = _ref3.immediate,
3286      testManual = _ref3.testManual,
3287      verbose = _ref3.verbose,
3288      rawData = _ref3.rawData;
3289  return {
3290    type: IX2_PLAYBACK_REQUESTED,
3291    payload: {
3292      actionTypeId: actionTypeId,
3293      actionListId: actionListId,
3294      actionItemId: actionItemId,
3295      testManual: testManual,
3296      eventId: eventId,
3297      allowEvents: allowEvents,
3298      immediate: immediate,
3299      verbose: verbose,
3300      rawData: rawData
3301    }
3302  };
3303};
3304
3305exports.playbackRequested = playbackRequested;
3306
3307var stopRequested = function stopRequested(actionListId) {
3308  return {
3309    type: IX2_STOP_REQUESTED,
3310    payload: {
3311      actionListId: actionListId
3312    }
3313  };
3314};
3315
3316exports.stopRequested = stopRequested;
3317
3318var clearRequested = function clearRequested() {
3319  return {
3320    type: IX2_CLEAR_REQUESTED
3321  };
3322};
3323
3324exports.clearRequested = clearRequested;
3325
3326var eventListenerAdded = function eventListenerAdded(target, listenerParams) {
3327  return {
3328    type: IX2_EVENT_LISTENER_ADDED,
3329    payload: {
3330      target: target,
3331      listenerParams: listenerParams
3332    }
3333  };
3334};
3335
3336exports.eventListenerAdded = eventListenerAdded;
3337
3338var testFrameRendered = function testFrameRendered() {
3339  var step = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
3340  return {
3341    type: IX2_TEST_FRAME_RENDERED,
3342    payload: {
3343      step: step
3344    }
3345  };
3346};
3347
3348exports.testFrameRendered = testFrameRendered;
3349
3350var eventStateChanged = function eventStateChanged(stateKey, newState) {
3351  return {
3352    type: IX2_EVENT_STATE_CHANGED,
3353    payload: {
3354      stateKey: stateKey,
3355      newState: newState
3356    }
3357  };
3358};
3359
3360exports.eventStateChanged = eventStateChanged;
3361
3362var animationFrameChanged = function animationFrameChanged(now, parameters) {
3363  return {
3364    type: IX2_ANIMATION_FRAME_CHANGED,
3365    payload: {
3366      now: now,
3367      parameters: parameters
3368    }
3369  };
3370};
3371
3372exports.animationFrameChanged = animationFrameChanged;
3373
3374var parameterChanged = function parameterChanged(key, value) {
3375  return {
3376    type: IX2_PARAMETER_CHANGED,
3377    payload: {
3378      key: key,
3379      value: value
3380    }
3381  };
3382};
3383
3384exports.parameterChanged = parameterChanged;
3385
3386var instanceAdded = function instanceAdded(options) {
3387  return {
3388    type: IX2_INSTANCE_ADDED,
3389    payload: (0, _extends2["default"])({}, options)
3390  };
3391};
3392
3393exports.instanceAdded = instanceAdded;
3394
3395var instanceStarted = function instanceStarted(instanceId, time) {
3396  return {
3397    type: IX2_INSTANCE_STARTED,
3398    payload: {
3399      instanceId: instanceId,
3400      time: time
3401    }
3402  };
3403};
3404
3405exports.instanceStarted = instanceStarted;
3406
3407var instanceRemoved = function instanceRemoved(instanceId) {
3408  return {
3409    type: IX2_INSTANCE_REMOVED,
3410    payload: {
3411      instanceId: instanceId
3412    }
3413  };
3414};
3415
3416exports.instanceRemoved = instanceRemoved;
3417
3418var elementStateChanged = function elementStateChanged(elementId, actionTypeId, current, actionItem) {
3419  return {
3420    type: IX2_ELEMENT_STATE_CHANGED,
3421    payload: {
3422      elementId: elementId,
3423      actionTypeId: actionTypeId,
3424      current: current,
3425      actionItem: actionItem
3426    }
3427  };
3428};
3429
3430exports.elementStateChanged = elementStateChanged;
3431
3432var actionListPlaybackChanged = function actionListPlaybackChanged(_ref4) {
3433  var actionListId = _ref4.actionListId,
3434      isPlaying = _ref4.isPlaying;
3435  return {
3436    type: IX2_ACTION_LIST_PLAYBACK_CHANGED,
3437    payload: {
3438      actionListId: actionListId,
3439      isPlaying: isPlaying
3440    }
3441  };
3442};
3443
3444exports.actionListPlaybackChanged = actionListPlaybackChanged;
3445
3446var viewportWidthChanged = function viewportWidthChanged(_ref5) {
3447  var width = _ref5.width,
3448      mediaQueries = _ref5.mediaQueries;
3449  return {
3450    type: IX2_VIEWPORT_WIDTH_CHANGED,
3451    payload: {
3452      width: width,
3453      mediaQueries: mediaQueries
3454    }
3455  };
3456};
3457
3458exports.viewportWidthChanged = viewportWidthChanged;
3459
3460var mediaQueriesDefined = function mediaQueriesDefined() {
3461  return {
3462    type: IX2_MEDIA_QUERIES_DEFINED
3463  };
3464};
3465
3466exports.mediaQueriesDefined = mediaQueriesDefined;
3467
3468/***/ }),
3469/* 66 */
3470/***/ (function(module, exports, __webpack_require__) {
3471
3472var baseCreate = __webpack_require__(126),
3473    baseLodash = __webpack_require__(67);
3474
3475/**
3476 * The base constructor for creating `lodash` wrapper objects.
3477 *
3478 * @private
3479 * @param {*} value The value to wrap.
3480 * @param {boolean} [chainAll] Enable explicit method chain sequences.
3481 */
3482function LodashWrapper(value, chainAll) {
3483  this.__wrapped__ = value;
3484  this.__actions__ = [];
3485  this.__chain__ = !!chainAll;
3486  this.__index__ = 0;
3487  this.__values__ = undefined;
3488}
3489
3490LodashWrapper.prototype = baseCreate(baseLodash.prototype);
3491LodashWrapper.prototype.constructor = LodashWrapper;
3492
3493module.exports = LodashWrapper;
3494
3495
3496/***/ }),
3497/* 67 */
3498/***/ (function(module, exports) {
3499
3500/**
3501 * The function whose prototype chain sequence wrappers inherit from.
3502 *
3503 * @private
3504 */
3505function baseLodash() {
3506  // No operation performed.
3507}
3508
3509module.exports = baseLodash;
3510
3511
3512/***/ }),
3513/* 68 */
3514/***/ (function(module, exports, __webpack_require__) {
3515
3516var baseCreate = __webpack_require__(126),
3517    baseLodash = __webpack_require__(67);
3518
3519/** Used as references for the maximum length and index of an array. */
3520var MAX_ARRAY_LENGTH = 4294967295;
3521
3522/**
3523 * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.
3524 *
3525 * @private
3526 * @constructor
3527 * @param {*} value The value to wrap.
3528 */
3529function LazyWrapper(value) {
3530  this.__wrapped__ = value;
3531  this.__actions__ = [];
3532  this.__dir__ = 1;
3533  this.__filtered__ = false;
3534  this.__iteratees__ = [];
3535  this.__takeCount__ = MAX_ARRAY_LENGTH;
3536  this.__views__ = [];
3537}
3538
3539// Ensure `LazyWrapper` is an instance of `baseLodash`.
3540LazyWrapper.prototype = baseCreate(baseLodash.prototype);
3541LazyWrapper.prototype.constructor = LazyWrapper;
3542
3543module.exports = LazyWrapper;
3544
3545
3546/***/ }),
3547/* 69 */
3548/***/ (function(module, exports, __webpack_require__) {
3549
3550"use strict";
3551 // @wf-will-never-add-flow-to-this-file
3552
3553/* eslint-disable eslint-comments/no-unlimited-disable */
3554
3555/* eslint-disable */
3556
3557/*!
3558 * tram.js v0.8.2-global
3559 * Cross-browser CSS3 transitions in JavaScript
3560 * https://github.com/bkwld/tram
3561 * MIT License
3562 */
3563
3564/* prettier-ignore */
3565
3566var _interopRequireDefault = __webpack_require__(0);
3567
3568var _typeof2 = _interopRequireDefault(__webpack_require__(13));
3569
3570window.tram = function (a) {
3571  function b(a, b) {
3572    var c = new M.Bare();
3573    return c.init(a, b);
3574  }
3575
3576  function c(a) {
3577    return a.replace(/[A-Z]/g, function (a) {
3578      return "-" + a.toLowerCase();
3579    });
3580  }
3581
3582  function d(a) {
3583    var b = parseInt(a.slice(1), 16),
3584        c = b >> 16 & 255,
3585        d = b >> 8 & 255,
3586        e = 255 & b;
3587    return [c, d, e];
3588  }
3589
3590  function e(a, b, c) {
3591    return "#" + (1 << 24 | a << 16 | b << 8 | c).toString(16).slice(1);
3592  }
3593
3594  function f() {}
3595
3596  function g(a, b) {
3597    j("Type warning: Expected: [" + a + "] Got: [" + (0, _typeof2["default"])(b) + "] " + b);
3598  }
3599
3600  function h(a, b, c) {
3601    j("Units do not match [" + a + "]: " + b + ", " + c);
3602  }
3603
3604  function i(a, b, c) {
3605    if (void 0 !== b && (c = b), void 0 === a) return c;
3606    var d = c;
3607    return $.test(a) || !_.test(a) ? d = parseInt(a, 10) : _.test(a) && (d = 1e3 * parseFloat(a)), 0 > d && (d = 0), d === d ? d : c;
3608  }
3609
3610  function j(a) {
3611    U.debug && window && window.console.warn(a);
3612  }
3613
3614  function k(a) {
3615    for (var b = -1, c = a ? a.length : 0, d = []; ++b < c;) {
3616      var e = a[b];
3617      e && d.push(e);
3618    }
3619
3620    return d;
3621  }
3622
3623  var l = function (a, b, c) {
3624    function d(a) {
3625      return "object" == (0, _typeof2["default"])(a);
3626    }
3627
3628    function e(a) {
3629      return "function" == typeof a;
3630    }
3631
3632    function f() {}
3633
3634    function g(h, i) {
3635      function j() {
3636        var a = new k();
3637        return e(a.init) && a.init.apply(a, arguments), a;
3638      }
3639
3640      function k() {}
3641
3642      i === c && (i = h, h = Object), j.Bare = k;
3643      var l,
3644          m = f[a] = h[a],
3645          n = k[a] = j[a] = new f();
3646      return n.constructor = j, j.mixin = function (b) {
3647        return k[a] = j[a] = g(j, b)[a], j;
3648      }, j.open = function (a) {
3649        if (l = {}, e(a) ? l = a.call(j, n, m, j, h) : d(a) && (l = a), d(l)) for (var c in l) {
3650          b.call(l, c) && (n[c] = l[c]);
3651        }
3652        return e(n.init) || (n.init = h), j;
3653      }, j.open(i);
3654    }
3655
3656    return g;
3657  }("prototype", {}.hasOwnProperty),
3658      m = {
3659    ease: ["ease", function (a, b, c, d) {
3660      var e = (a /= d) * a,
3661          f = e * a;
3662      return b + c * (-2.75 * f * e + 11 * e * e + -15.5 * f + 8 * e + .25 * a);
3663    }],
3664    "ease-in": ["ease-in", function (a, b, c, d) {
3665      var e = (a /= d) * a,
3666          f = e * a;
3667      return b + c * (-1 * f * e + 3 * e * e + -3 * f + 2 * e);
3668    }],
3669    "ease-out": ["ease-out", function (a, b, c, d) {
3670      var e = (a /= d) * a,
3671          f = e * a;
3672      return b + c * (.3 * f * e + -1.6 * e * e + 2.2 * f + -1.8 * e + 1.9 * a);
3673    }],
3674    "ease-in-out": ["ease-in-out", function (a, b, c, d) {
3675      var e = (a /= d) * a,
3676          f = e * a;
3677      return b + c * (2 * f * e + -5 * e * e + 2 * f + 2 * e);
3678    }],
3679    linear: ["linear", function (a, b, c, d) {
3680      return c * a / d + b;
3681    }],
3682    "ease-in-quad": ["cubic-bezier(0.550, 0.085, 0.680, 0.530)", function (a, b, c, d) {
3683      return c * (a /= d) * a + b;
3684    }],
3685    "ease-out-quad": ["cubic-bezier(0.250, 0.460, 0.450, 0.940)", function (a, b, c, d) {
3686      return -c * (a /= d) * (a - 2) + b;
3687    }],
3688    "ease-in-out-quad": ["cubic-bezier(0.455, 0.030, 0.515, 0.955)", function (a, b, c, d) {
3689      return (a /= d / 2) < 1 ? c / 2 * a * a + b : -c / 2 * (--a * (a - 2) - 1) + b;
3690    }],
3691    "ease-in-cubic": ["cubic-bezier(0.550, 0.055, 0.675, 0.190)", function (a, b, c, d) {
3692      return c * (a /= d) * a * a + b;
3693    }],
3694    "ease-out-cubic": ["cubic-bezier(0.215, 0.610, 0.355, 1)", function (a, b, c, d) {
3695      return c * ((a = a / d - 1) * a * a + 1) + b;
3696    }],
3697    "ease-in-out-cubic": ["cubic-bezier(0.645, 0.045, 0.355, 1)", function (a, b, c, d) {
3698      return (a /= d / 2) < 1 ? c / 2 * a * a * a + b : c / 2 * ((a -= 2) * a * a + 2) + b;
3699    }],
3700    "ease-in-quart": ["cubic-bezier(0.895, 0.030, 0.685, 0.220)", function (a, b, c, d) {
3701      return c * (a /= d) * a * a * a + b;
3702    }],
3703    "ease-out-quart": ["cubic-bezier(0.165, 0.840, 0.440, 1)", function (a, b, c, d) {
3704      return -c * ((a = a / d - 1) * a * a * a - 1) + b;
3705    }],
3706    "ease-in-out-quart": ["cubic-bezier(0.770, 0, 0.175, 1)", function (a, b, c, d) {
3707      return (a /= d / 2) < 1 ? c / 2 * a * a * a * a + b : -c / 2 * ((a -= 2) * a * a * a - 2) + b;
3708    }],
3709    "ease-in-quint": ["cubic-bezier(0.755, 0.050, 0.855, 0.060)", function (a, b, c, d) {
3710      return c * (a /= d) * a * a * a * a + b;
3711    }],
3712    "ease-out-quint": ["cubic-bezier(0.230, 1, 0.320, 1)", function (a, b, c, d) {
3713      return c * ((a = a / d - 1) * a * a * a * a + 1) + b;
3714    }],
3715    "ease-in-out-quint": ["cubic-bezier(0.860, 0, 0.070, 1)", function (a, b, c, d) {
3716      return (a /= d / 2) < 1 ? c / 2 * a * a * a * a * a + b : c / 2 * ((a -= 2) * a * a * a * a + 2) + b;
3717    }],
3718    "ease-in-sine": ["cubic-bezier(0.470, 0, 0.745, 0.715)", function (a, b, c, d) {
3719      return -c * Math.cos(a / d * (Math.PI / 2)) + c + b;
3720    }],
3721    "ease-out-sine": ["cubic-bezier(0.390, 0.575, 0.565, 1)", function (a, b, c, d) {
3722      return c * Math.sin(a / d * (Math.PI / 2)) + b;
3723    }],
3724    "ease-in-out-sine": ["cubic-bezier(0.445, 0.050, 0.550, 0.950)", function (a, b, c, d) {
3725      return -c / 2 * (Math.cos(Math.PI * a / d) - 1) + b;
3726    }],
3727    "ease-in-expo": ["cubic-bezier(0.950, 0.050, 0.795, 0.035)", function (a, b, c, d) {
3728      return 0 === a ? b : c * Math.pow(2, 10 * (a / d - 1)) + b;
3729    }],
3730    "ease-out-expo": ["cubic-bezier(0.190, 1, 0.220, 1)", function (a, b, c, d) {
3731      return a === d ? b + c : c * (-Math.pow(2, -10 * a / d) + 1) + b;
3732    }],
3733    "ease-in-out-expo": ["cubic-bezier(1, 0, 0, 1)", function (a, b, c, d) {
3734      return 0 === a ? b : a === d ? b + c : (a /= d / 2) < 1 ? c / 2 * Math.pow(2, 10 * (a - 1)) + b : c / 2 * (-Math.pow(2, -10 * --a) + 2) + b;
3735    }],
3736    "ease-in-circ": ["cubic-bezier(0.600, 0.040, 0.980, 0.335)", function (a, b, c, d) {
3737      return -c * (Math.sqrt(1 - (a /= d) * a) - 1) + b;
3738    }],
3739    "ease-out-circ": ["cubic-bezier(0.075, 0.820, 0.165, 1)", function (a, b, c, d) {
3740      return c * Math.sqrt(1 - (a = a / d - 1) * a) + b;
3741    }],
3742    "ease-in-out-circ": ["cubic-bezier(0.785, 0.135, 0.150, 0.860)", function (a, b, c, d) {
3743      return (a /= d / 2) < 1 ? -c / 2 * (Math.sqrt(1 - a * a) - 1) + b : c / 2 * (Math.sqrt(1 - (a -= 2) * a) + 1) + b;
3744    }],
3745    "ease-in-back": ["cubic-bezier(0.600, -0.280, 0.735, 0.045)", function (a, b, c, d, e) {
3746      return void 0 === e && (e = 1.70158), c * (a /= d) * a * ((e + 1) * a - e) + b;
3747    }],
3748    "ease-out-back": ["cubic-bezier(0.175, 0.885, 0.320, 1.275)", function (a, b, c, d, e) {
3749      return void 0 === e && (e = 1.70158), c * ((a = a / d - 1) * a * ((e + 1) * a + e) + 1) + b;
3750    }],
3751    "ease-in-out-back": ["cubic-bezier(0.680, -0.550, 0.265, 1.550)", function (a, b, c, d, e) {
3752      return void 0 === e && (e = 1.70158), (a /= d / 2) < 1 ? c / 2 * a * a * (((e *= 1.525) + 1) * a - e) + b : c / 2 * ((a -= 2) * a * (((e *= 1.525) + 1) * a + e) + 2) + b;
3753    }]
3754  },
3755      n = {
3756    "ease-in-back": "cubic-bezier(0.600, 0, 0.735, 0.045)",
3757    "ease-out-back": "cubic-bezier(0.175, 0.885, 0.320, 1)",
3758    "ease-in-out-back": "cubic-bezier(0.680, 0, 0.265, 1)"
3759  },
3760      o = document,
3761      p = window,
3762      q = "bkwld-tram",
3763      r = /[\-\.0-9]/g,
3764      s = /[A-Z]/,
3765      t = "number",
3766      u = /^(rgb|#)/,
3767      v = /(em|cm|mm|in|pt|pc|px)$/,
3768      w = /(em|cm|mm|in|pt|pc|px|%)$/,
3769      x = /(deg|rad|turn)$/,
3770      y = "unitless",
3771      z = /(all|none) 0s ease 0s/,
3772      A = /^(width|height)$/,
3773      B = " ",
3774      C = o.createElement("a"),
3775      D = ["Webkit", "Moz", "O", "ms"],
3776      E = ["-webkit-", "-moz-", "-o-", "-ms-"],
3777      F = function F(a) {
3778    if (a in C.style) return {
3779      dom: a,
3780      css: a
3781    };
3782    var b,
3783        c,
3784        d = "",
3785        e = a.split("-");
3786
3787    for (b = 0; b < e.length; b++) {
3788      d += e[b].charAt(0).toUpperCase() + e[b].slice(1);
3789    }
3790
3791    for (b = 0; b < D.length; b++) {
3792      if (c = D[b] + d, c in C.style) return {
3793        dom: c,
3794        css: E[b] + a
3795      };
3796    }
3797  },
3798      G = b.support = {
3799    bind: Function.prototype.bind,
3800    transform: F("transform"),
3801    transition: F("transition"),
3802    backface: F("backface-visibility"),
3803    timing: F("transition-timing-function")
3804  };
3805
3806  if (G.transition) {
3807    var H = G.timing.dom;
3808    if (C.style[H] = m["ease-in-back"][0], !C.style[H]) for (var I in n) {
3809      m[I][0] = n[I];
3810    }
3811  }
3812
3813  var J = b.frame = function () {
3814    var a = p.requestAnimationFrame || p.webkitRequestAnimationFrame || p.mozRequestAnimationFrame || p.oRequestAnimationFrame || p.msRequestAnimationFrame;
3815    return a && G.bind ? a.bind(p) : function (a) {
3816      p.setTimeout(a, 16);
3817    };
3818  }(),
3819      K = b.now = function () {
3820    var a = p.performance,
3821        b = a && (a.now || a.webkitNow || a.msNow || a.mozNow);
3822    return b && G.bind ? b.bind(a) : Date.now || function () {
3823      return +new Date();
3824    };
3825  }(),
3826      L = l(function (b) {
3827    function d(a, b) {
3828      var c = k(("" + a).split(B)),
3829          d = c[0];
3830      b = b || {};
3831      var e = Y[d];
3832      if (!e) return j("Unsupported property: " + d);
3833
3834      if (!b.weak || !this.props[d]) {
3835        var f = e[0],
3836            g = this.props[d];
3837        return g || (g = this.props[d] = new f.Bare()), g.init(this.$el, c, e, b), g;
3838      }
3839    }
3840
3841    function e(a, b, c) {
3842      if (a) {
3843        var e = (0, _typeof2["default"])(a);
3844        if (b || (this.timer && this.timer.destroy(), this.queue = [], this.active = !1), "number" == e && b) return this.timer = new S({
3845          duration: a,
3846          context: this,
3847          complete: h
3848        }), void (this.active = !0);
3849
3850        if ("string" == e && b) {
3851          switch (a) {
3852            case "hide":
3853              o.call(this);
3854              break;
3855
3856            case "stop":
3857              l.call(this);
3858              break;
3859
3860            case "redraw":
3861              p.call(this);
3862              break;
3863
3864            default:
3865              d.call(this, a, c && c[1]);
3866          }
3867
3868          return h.call(this);
3869        }
3870
3871        if ("function" == e) return void a.call(this, this);
3872
3873        if ("object" == e) {
3874          var f = 0;
3875          u.call(this, a, function (a, b) {
3876            a.span > f && (f = a.span), a.stop(), a.animate(b);
3877          }, function (a) {
3878            "wait" in a && (f = i(a.wait, 0));
3879          }), t.call(this), f > 0 && (this.timer = new S({
3880            duration: f,
3881            context: this
3882          }), this.active = !0, b && (this.timer.complete = h));
3883          var g = this,
3884              j = !1,
3885              k = {};
3886          J(function () {
3887            u.call(g, a, function (a) {
3888              a.active && (j = !0, k[a.name] = a.nextStyle);
3889            }), j && g.$el.css(k);
3890          });
3891        }
3892      }
3893    }
3894
3895    function f(a) {
3896      a = i(a, 0), this.active ? this.queue.push({
3897        options: a
3898      }) : (this.timer = new S({
3899        duration: a,
3900        context: this,
3901        complete: h
3902      }), this.active = !0);
3903    }
3904
3905    function g(a) {
3906      return this.active ? (this.queue.push({
3907        options: a,
3908        args: arguments
3909      }), void (this.timer.complete = h)) : j("No active transition timer. Use start() or wait() before then().");
3910    }
3911
3912    function h() {
3913      if (this.timer && this.timer.destroy(), this.active = !1, this.queue.length) {
3914        var a = this.queue.shift();
3915        e.call(this, a.options, !0, a.args);
3916      }
3917    }
3918
3919    function l(a) {
3920      this.timer && this.timer.destroy(), this.queue = [], this.active = !1;
3921      var b;
3922      "string" == typeof a ? (b = {}, b[a] = 1) : b = "object" == (0, _typeof2["default"])(a) && null != a ? a : this.props, u.call(this, b, v), t.call(this);
3923    }
3924
3925    function m(a) {
3926      l.call(this, a), u.call(this, a, w, x);
3927    }
3928
3929    function n(a) {
3930      "string" != typeof a && (a = "block"), this.el.style.display = a;
3931    }
3932
3933    function o() {
3934      l.call(this), this.el.style.display = "none";
3935    }
3936
3937    function p() {
3938      this.el.offsetHeight;
3939    }
3940
3941    function r() {
3942      l.call(this), a.removeData(this.el, q), this.$el = this.el = null;
3943    }
3944
3945    function t() {
3946      var a,
3947          b,
3948          c = [];
3949      this.upstream && c.push(this.upstream);
3950
3951      for (a in this.props) {
3952        b = this.props[a], b.active && c.push(b.string);
3953      }
3954
3955      c = c.join(","), this.style !== c && (this.style = c, this.el.style[G.transition.dom] = c);
3956    }
3957
3958    function u(a, b, e) {
3959      var f,
3960          g,
3961          h,
3962          i,
3963          j = b !== v,
3964          k = {};
3965
3966      for (f in a) {
3967        h = a[f], f in Z ? (k.transform || (k.transform = {}), k.transform[f] = h) : (s.test(f) && (f = c(f)), f in Y ? k[f] = h : (i || (i = {}), i[f] = h));
3968      }
3969
3970      for (f in k) {
3971        if (h = k[f], g = this.props[f], !g) {
3972          if (!j) continue;
3973          g = d.call(this, f);
3974        }
3975
3976        b.call(this, g, h);
3977      }
3978
3979      e && i && e.call(this, i);
3980    }
3981
3982    function v(a) {
3983      a.stop();
3984    }
3985
3986    function w(a, b) {
3987      a.set(b);
3988    }
3989
3990    function x(a) {
3991      this.$el.css(a);
3992    }
3993
3994    function y(a, c) {
3995      b[a] = function () {
3996        return this.children ? A.call(this, c, arguments) : (this.el && c.apply(this, arguments), this);
3997      };
3998    }
3999
4000    function A(a, b) {
4001      var c,
4002          d = this.children.length;
4003
4004      for (c = 0; d > c; c++) {
4005        a.apply(this.children[c], b);
4006      }
4007
4008      return this;
4009    }
4010
4011    b.init = function (b) {
4012      if (this.$el = a(b), this.el = this.$el[0], this.props = {}, this.queue = [], this.style = "", this.active = !1, U.keepInherited && !U.fallback) {
4013        var c = W(this.el, "transition");
4014        c && !z.test(c) && (this.upstream = c);
4015      }
4016
4017      G.backface && U.hideBackface && V(this.el, G.backface.css, "hidden");
4018    }, y("add", d), y("start", e), y("wait", f), y("then", g), y("next", h), y("stop", l), y("set", m), y("show", n), y("hide", o), y("redraw", p), y("destroy", r);
4019  }),
4020      M = l(L, function (b) {
4021    function c(b, c) {
4022      var d = a.data(b, q) || a.data(b, q, new L.Bare());
4023      return d.el || d.init(b), c ? d.start(c) : d;
4024    }
4025
4026    b.init = function (b, d) {
4027      var e = a(b);
4028      if (!e.length) return this;
4029      if (1 === e.length) return c(e[0], d);
4030      var f = [];
4031      return e.each(function (a, b) {
4032        f.push(c(b, d));
4033      }), this.children = f, this;
4034    };
4035  }),
4036      N = l(function (a) {
4037    function b() {
4038      var a = this.get();
4039      this.update("auto");
4040      var b = this.get();
4041      return this.update(a), b;
4042    }
4043
4044    function c(a, b, c) {
4045      return void 0 !== b && (c = b), a in m ? a : c;
4046    }
4047
4048    function d(a) {
4049      var b = /rgba?\((\d+),\s*(\d+),\s*(\d+)/.exec(a);
4050      return (b ? e(b[1], b[2], b[3]) : a).replace(/#(\w)(\w)(\w)$/, "#$1$1$2$2$3$3");
4051    }
4052
4053    var f = {
4054      duration: 500,
4055      ease: "ease",
4056      delay: 0
4057    };
4058    a.init = function (a, b, d, e) {
4059      this.$el = a, this.el = a[0];
4060      var g = b[0];
4061      d[2] && (g = d[2]), X[g] && (g = X[g]), this.name = g, this.type = d[1], this.duration = i(b[1], this.duration, f.duration), this.ease = c(b[2], this.ease, f.ease), this.delay = i(b[3], this.delay, f.delay), this.span = this.duration + this.delay, this.active = !1, this.nextStyle = null, this.auto = A.test(this.name), this.unit = e.unit || this.unit || U.defaultUnit, this.angle = e.angle || this.angle || U.defaultAngle, U.fallback || e.fallback ? this.animate = this.fallback : (this.animate = this.transition, this.string = this.name + B + this.duration + "ms" + ("ease" != this.ease ? B + m[this.ease][0] : "") + (this.delay ? B + this.delay + "ms" : ""));
4062    }, a.set = function (a) {
4063      a = this.convert(a, this.type), this.update(a), this.redraw();
4064    }, a.transition = function (a) {
4065      this.active = !0, a = this.convert(a, this.type), this.auto && ("auto" == this.el.style[this.name] && (this.update(this.get()), this.redraw()), "auto" == a && (a = b.call(this))), this.nextStyle = a;
4066    }, a.fallback = function (a) {
4067      var c = this.el.style[this.name] || this.convert(this.get(), this.type);
4068      a = this.convert(a, this.type), this.auto && ("auto" == c && (c = this.convert(this.get(), this.type)), "auto" == a && (a = b.call(this))), this.tween = new R({
4069        from: c,
4070        to: a,
4071        duration: this.duration,
4072        delay: this.delay,
4073        ease: this.ease,
4074        update: this.update,
4075        context: this
4076      });
4077    }, a.get = function () {
4078      return W(this.el, this.name);
4079    }, a.update = function (a) {
4080      V(this.el, this.name, a);
4081    }, a.stop = function () {
4082      (this.active || this.nextStyle) && (this.active = !1, this.nextStyle = null, V(this.el, this.name, this.get()));
4083      var a = this.tween;
4084      a && a.context && a.destroy();
4085    }, a.convert = function (a, b) {
4086      if ("auto" == a && this.auto) return a;
4087      var c,
4088          e = "number" == typeof a,
4089          f = "string" == typeof a;
4090
4091      switch (b) {
4092        case t:
4093          if (e) return a;
4094          if (f && "" === a.replace(r, "")) return +a;
4095          c = "number(unitless)";
4096          break;
4097
4098        case u:
4099          if (f) {
4100            if ("" === a && this.original) return this.original;
4101            if (b.test(a)) return "#" == a.charAt(0) && 7 == a.length ? a : d(a);
4102          }
4103
4104          c = "hex or rgb string";
4105          break;
4106
4107        case v:
4108          if (e) return a + this.unit;
4109          if (f && b.test(a)) return a;
4110          c = "number(px) or string(unit)";
4111          break;
4112
4113        case w:
4114          if (e) return a + this.unit;
4115          if (f && b.test(a)) return a;
4116          c = "number(px) or string(unit or %)";
4117          break;
4118
4119        case x:
4120          if (e) return a + this.angle;
4121          if (f && b.test(a)) return a;
4122          c = "number(deg) or string(angle)";
4123          break;
4124
4125        case y:
4126          if (e) return a;
4127          if (f && w.test(a)) return a;
4128          c = "number(unitless) or string(unit or %)";
4129      }
4130
4131      return g(c, a), a;
4132    }, a.redraw = function () {
4133      this.el.offsetHeight;
4134    };
4135  }),
4136      O = l(N, function (a, b) {
4137    a.init = function () {
4138      b.init.apply(this, arguments), this.original || (this.original = this.convert(this.get(), u));
4139    };
4140  }),
4141      P = l(N, function (a, b) {
4142    a.init = function () {
4143      b.init.apply(this, arguments), this.animate = this.fallback;
4144    }, a.get = function () {
4145      return this.$el[this.name]();
4146    }, a.update = function (a) {
4147      this.$el[this.name](a);
4148    };
4149  }),
4150      Q = l(N, function (a, b) {
4151    function c(a, b) {
4152      var c, d, e, f, g;
4153
4154      for (c in a) {
4155        f = Z[c], e = f[0], d = f[1] || c, g = this.convert(a[c], e), b.call(this, d, g, e);
4156      }
4157    }
4158
4159    a.init = function () {
4160      b.init.apply(this, arguments), this.current || (this.current = {}, Z.perspective && U.perspective && (this.current.perspective = U.perspective, V(this.el, this.name, this.style(this.current)), this.redraw()));
4161    }, a.set = function (a) {
4162      c.call(this, a, function (a, b) {
4163        this.current[a] = b;
4164      }), V(this.el, this.name, this.style(this.current)), this.redraw();
4165    }, a.transition = function (a) {
4166      var b = this.values(a);
4167      this.tween = new T({
4168        current: this.current,
4169        values: b,
4170        duration: this.duration,
4171        delay: this.delay,
4172        ease: this.ease
4173      });
4174      var c,
4175          d = {};
4176
4177      for (c in this.current) {
4178        d[c] = c in b ? b[c] : this.current[c];
4179      }
4180
4181      this.active = !0, this.nextStyle = this.style(d);
4182    }, a.fallback = function (a) {
4183      var b = this.values(a);
4184      this.tween = new T({
4185        current: this.current,
4186        values: b,
4187        duration: this.duration,
4188        delay: this.delay,
4189        ease: this.ease,
4190        update: this.update,
4191        context: this
4192      });
4193    }, a.update = function () {
4194      V(this.el, this.name, this.style(this.current));
4195    }, a.style = function (a) {
4196      var b,
4197          c = "";
4198
4199      for (b in a) {
4200        c += b + "(" + a[b] + ") ";
4201      }
4202
4203      return c;
4204    }, a.values = function (a) {
4205      var b,
4206          d = {};
4207      return c.call(this, a, function (a, c, e) {
4208        d[a] = c, void 0 === this.current[a] && (b = 0, ~a.indexOf("scale") && (b = 1), this.current[a] = this.convert(b, e));
4209      }), d;
4210    };
4211  }),
4212      R = l(function (b) {
4213    function c(a) {
4214      1 === n.push(a) && J(g);
4215    }
4216
4217    function g() {
4218      var a,
4219          b,
4220          c,
4221          d = n.length;
4222      if (d) for (J(g), b = K(), a = d; a--;) {
4223        c = n[a], c && c.render(b);
4224      }
4225    }
4226
4227    function i(b) {
4228      var c,
4229          d = a.inArray(b, n);
4230      d >= 0 && (c = n.slice(d + 1), n.length = d, c.length && (n = n.concat(c)));
4231    }
4232
4233    function j(a) {
4234      return Math.round(a * o) / o;
4235    }
4236
4237    function k(a, b, c) {
4238      return e(a[0] + c * (b[0] - a[0]), a[1] + c * (b[1] - a[1]), a[2] + c * (b[2] - a[2]));
4239    }
4240
4241    var l = {
4242      ease: m.ease[1],
4243      from: 0,
4244      to: 1
4245    };
4246    b.init = function (a) {
4247      this.duration = a.duration || 0, this.delay = a.delay || 0;
4248      var b = a.ease || l.ease;
4249      m[b] && (b = m[b][1]), "function" != typeof b && (b = l.ease), this.ease = b, this.update = a.update || f, this.complete = a.complete || f, this.context = a.context || this, this.name = a.name;
4250      var c = a.from,
4251          d = a.to;
4252      void 0 === c && (c = l.from), void 0 === d && (d = l.to), this.unit = a.unit || "", "number" == typeof c && "number" == typeof d ? (this.begin = c, this.change = d - c) : this.format(d, c), this.value = this.begin + this.unit, this.start = K(), a.autoplay !== !1 && this.play();
4253    }, b.play = function () {
4254      this.active || (this.start || (this.start = K()), this.active = !0, c(this));
4255    }, b.stop = function () {
4256      this.active && (this.active = !1, i(this));
4257    }, b.render = function (a) {
4258      var b,
4259          c = a - this.start;
4260
4261      if (this.delay) {
4262        if (c <= this.delay) return;
4263        c -= this.delay;
4264      }
4265
4266      if (c < this.duration) {
4267        var d = this.ease(c, 0, 1, this.duration);
4268        return b = this.startRGB ? k(this.startRGB, this.endRGB, d) : j(this.begin + d * this.change), this.value = b + this.unit, void this.update.call(this.context, this.value);
4269      }
4270
4271      b = this.endHex || this.begin + this.change, this.value = b + this.unit, this.update.call(this.context, this.value), this.complete.call(this.context), this.destroy();
4272    }, b.format = function (a, b) {
4273      if (b += "", a += "", "#" == a.charAt(0)) return this.startRGB = d(b), this.endRGB = d(a), this.endHex = a, this.begin = 0, void (this.change = 1);
4274
4275      if (!this.unit) {
4276        var c = b.replace(r, ""),
4277            e = a.replace(r, "");
4278        c !== e && h("tween", b, a), this.unit = c;
4279      }
4280
4281      b = parseFloat(b), a = parseFloat(a), this.begin = this.value = b, this.change = a - b;
4282    }, b.destroy = function () {
4283      this.stop(), this.context = null, this.ease = this.update = this.complete = f;
4284    };
4285    var n = [],
4286        o = 1e3;
4287  }),
4288      S = l(R, function (a) {
4289    a.init = function (a) {
4290      this.duration = a.duration || 0, this.complete = a.complete || f, this.context = a.context, this.play();
4291    }, a.render = function (a) {
4292      var b = a - this.start;
4293      b < this.duration || (this.complete.call(this.context), this.destroy());
4294    };
4295  }),
4296      T = l(R, function (a, b) {
4297    a.init = function (a) {
4298      this.context = a.context, this.update = a.update, this.tweens = [], this.current = a.current;
4299      var b, c;
4300
4301      for (b in a.values) {
4302        c = a.values[b], this.current[b] !== c && this.tweens.push(new R({
4303          name: b,
4304          from: this.current[b],
4305          to: c,
4306          duration: a.duration,
4307          delay: a.delay,
4308          ease: a.ease,
4309          autoplay: !1
4310        }));
4311      }
4312
4313      this.play();
4314    }, a.render = function (a) {
4315      var b,
4316          c,
4317          d = this.tweens.length,
4318          e = !1;
4319
4320      for (b = d; b--;) {
4321        c = this.tweens[b], c.context && (c.render(a), this.current[c.name] = c.value, e = !0);
4322      }
4323
4324      return e ? void (this.update && this.update.call(this.context)) : this.destroy();
4325    }, a.destroy = function () {
4326      if (b.destroy.call(this), this.tweens) {
4327        var a,
4328            c = this.tweens.length;
4329
4330        for (a = c; a--;) {
4331          this.tweens[a].destroy();
4332        }
4333
4334        this.tweens = null, this.current = null;
4335      }
4336    };
4337  }),
4338      U = b.config = {
4339    debug: !1,
4340    defaultUnit: "px",
4341    defaultAngle: "deg",
4342    keepInherited: !1,
4343    hideBackface: !1,
4344    perspective: "",
4345    fallback: !G.transition,
4346    agentTests: []
4347  };
4348
4349  b.fallback = function (a) {
4350    if (!G.transition) return U.fallback = !0;
4351    U.agentTests.push("(" + a + ")");
4352    var b = new RegExp(U.agentTests.join("|"), "i");
4353    U.fallback = b.test(navigator.userAgent);
4354  }, b.fallback("6.0.[2-5] Safari"), b.tween = function (a) {
4355    return new R(a);
4356  }, b.delay = function (a, b, c) {
4357    return new S({
4358      complete: b,
4359      duration: a,
4360      context: c
4361    });
4362  }, a.fn.tram = function (a) {
4363    return b.call(null, this, a);
4364  };
4365  var V = a.style,
4366      W = a.css,
4367      X = {
4368    transform: G.transform && G.transform.css
4369  },
4370      Y = {
4371    color: [O, u],
4372    background: [O, u, "background-color"],
4373    "outline-color": [O, u],
4374    "border-color": [O, u],
4375    "border-top-color": [O, u],
4376    "border-right-color": [O, u],
4377    "border-bottom-color": [O, u],
4378    "border-left-color": [O, u],
4379    "border-width": [N, v],
4380    "border-top-width": [N, v],
4381    "border-right-width": [N, v],
4382    "border-bottom-width": [N, v],
4383    "border-left-width": [N, v],
4384    "border-spacing": [N, v],
4385    "letter-spacing": [N, v],
4386    margin: [N, v],
4387    "margin-top": [N, v],
4388    "margin-right": [N, v],
4389    "margin-bottom": [N, v],
4390    "margin-left": [N, v],
4391    padding: [N, v],
4392    "padding-top": [N, v],
4393    "padding-right": [N, v],
4394    "padding-bottom": [N, v],
4395    "padding-left": [N, v],
4396    "outline-width": [N, v],
4397    opacity: [N, t],
4398    top: [N, w],
4399    right: [N, w],
4400    bottom: [N, w],
4401    left: [N, w],
4402    "font-size": [N, w],
4403    "text-indent": [N, w],
4404    "word-spacing": [N, w],
4405    width: [N, w],
4406    "min-width": [N, w],
4407    "max-width": [N, w],
4408    height: [N, w],
4409    "min-height": [N, w],
4410    "max-height": [N, w],
4411    "line-height": [N, y],
4412    "scroll-top": [P, t, "scrollTop"],
4413    "scroll-left": [P, t, "scrollLeft"]
4414  },
4415      Z = {};
4416  G.transform && (Y.transform = [Q], Z = {
4417    x: [w, "translateX"],
4418    y: [w, "translateY"],
4419    rotate: [x],
4420    rotateX: [x],
4421    rotateY: [x],
4422    scale: [t],
4423    scaleX: [t],
4424    scaleY: [t],
4425    skew: [x],
4426    skewX: [x],
4427    skewY: [x]
4428  }), G.transform && G.backface && (Z.z = [w, "translateZ"], Z.rotateZ = [x], Z.scaleZ = [t], Z.perspective = [v]);
4429  var $ = /ms/,
4430      _ = /s|\./;
4431  return a.tram = b;
4432}(window.jQuery);
4433
4434/***/ }),
4435/* 70 */
4436/***/ (function(module, exports, __webpack_require__) {
4437
4438var DESCRIPTORS = __webpack_require__(14);
4439var call = __webpack_require__(40);
4440var propertyIsEnumerableModule = __webpack_require__(146);
4441var createPropertyDescriptor = __webpack_require__(71);
4442var toIndexedObject = __webpack_require__(26);
4443var toPropertyKey = __webpack_require__(73);
4444var hasOwn = __webpack_require__(9);
4445var IE8_DOM_DEFINE = __webpack_require__(80);
4446
4447// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
4448var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
4449
4450// `Object.getOwnPropertyDescriptor` method
4451// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor
4452exports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {
4453  O = toIndexedObject(O);
4454  P = toPropertyKey(P);
4455  if (IE8_DOM_DEFINE) try {
4456    return $getOwnPropertyDescriptor(O, P);
4457  } catch (error) { /* empty */ }
4458  if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);
4459};
4460
4461
4462/***/ }),
4463/* 71 */
vendor: 7,337 bytes, lines 4464-4728
4464/***/ (function(module, exports) {
4465
4466module.exports = function (bitmap, value) {
4467  return {
4468    enumerable: !(bitmap & 1),
4469    configurable: !(bitmap & 2),
4470    writable: !(bitmap & 4),
4471    value: value
4472  };
4473};
4474
4475
4476/***/ }),
4477/* 72 */
4478/***/ (function(module, exports, __webpack_require__) {
4479
4480var global = __webpack_require__(1);
4481
4482var TypeError = global.TypeError;
4483
4484// `RequireObjectCoercible` abstract operation
4485// https://tc39.es/ecma262/#sec-requireobjectcoercible
4486module.exports = function (it) {
4487  if (it == undefined) throw TypeError("Can't call method on " + it);
4488  return it;
4489};
4490
4491
4492/***/ }),
4493/* 73 */
4494/***/ (function(module, exports, __webpack_require__) {
4495
4496var toPrimitive = __webpack_require__(149);
4497var isSymbol = __webpack_require__(74);
4498
4499// `ToPropertyKey` abstract operation
4500// https://tc39.es/ecma262/#sec-topropertykey
4501module.exports = function (argument) {
4502  var key = toPrimitive(argument, 'string');
4503  return isSymbol(key) ? key : key + '';
4504};
4505
4506
4507/***/ }),
4508/* 74 */
4509/***/ (function(module, exports, __webpack_require__) {
4510
4511var global = __webpack_require__(1);
4512var getBuiltIn = __webpack_require__(27);
4513var isCallable = __webpack_require__(7);
4514var isPrototypeOf = __webpack_require__(150);
4515var USE_SYMBOL_AS_UID = __webpack_require__(75);
4516
4517var Object = global.Object;
4518
4519module.exports = USE_SYMBOL_AS_UID ? function (it) {
4520  return typeof it == 'symbol';
4521} : function (it) {
4522  var $Symbol = getBuiltIn('Symbol');
4523  return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, Object(it));
4524};
4525
4526
4527/***/ }),
4528/* 75 */
4529/***/ (function(module, exports, __webpack_require__) {
4530
4531/* eslint-disable es/no-symbol -- required for testing */
4532var NATIVE_SYMBOL = __webpack_require__(76);
4533
4534module.exports = NATIVE_SYMBOL
4535  && !Symbol.sham
4536  && typeof Symbol.iterator == 'symbol';
4537
4538
4539/***/ }),
4540/* 76 */
4541/***/ (function(module, exports, __webpack_require__) {
4542
4543/* eslint-disable es/no-symbol -- required for testing */
4544var V8_VERSION = __webpack_require__(151);
4545var fails = __webpack_require__(19);
4546
4547// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing
4548module.exports = !!Object.getOwnPropertySymbols && !fails(function () {
4549  var symbol = Symbol();
4550  // Chrome 38 Symbol has incorrect toString conversion
4551  // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances
4552  return !String(symbol) || !(Object(symbol) instanceof Symbol) ||
4553    // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances
4554    !Symbol.sham && V8_VERSION && V8_VERSION < 41;
4555});
4556
4557
4558/***/ }),
4559/* 77 */
4560/***/ (function(module, exports, __webpack_require__) {
4561
4562var global = __webpack_require__(1);
4563var shared = __webpack_require__(78);
4564var hasOwn = __webpack_require__(9);
4565var uid = __webpack_require__(79);
4566var NATIVE_SYMBOL = __webpack_require__(76);
4567var USE_SYMBOL_AS_UID = __webpack_require__(75);
4568
4569var WellKnownSymbolsStore = shared('wks');
4570var Symbol = global.Symbol;
4571var symbolFor = Symbol && Symbol['for'];
4572var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;
4573
4574module.exports = function (name) {
4575  if (!hasOwn(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {
4576    var description = 'Symbol.' + name;
4577    if (NATIVE_SYMBOL && hasOwn(Symbol, name)) {
4578      WellKnownSymbolsStore[name] = Symbol[name];
4579    } else if (USE_SYMBOL_AS_UID && symbolFor) {
4580      WellKnownSymbolsStore[name] = symbolFor(description);
4581    } else {
4582      WellKnownSymbolsStore[name] = createWellKnownSymbol(description);
4583    }
4584  } return WellKnownSymbolsStore[name];
4585};
4586
4587
4588/***/ }),
4589/* 78 */
4590/***/ (function(module, exports, __webpack_require__) {
4591
4592var IS_PURE = __webpack_require__(157);
4593var store = __webpack_require__(41);
4594
4595(module.exports = function (key, value) {
4596  return store[key] || (store[key] = value !== undefined ? value : {});
4597})('versions', []).push({
4598  version: '3.19.0',
4599  mode: IS_PURE ? 'pure' : 'global',
4600  copyright: '© 2021 Denis Pushkarev (zloirock.ru)'
4601});
4602
4603
4604/***/ }),
4605/* 79 */
4606/***/ (function(module, exports, __webpack_require__) {
4607
4608var uncurryThis = __webpack_require__(5);
4609
4610var id = 0;
4611var postfix = Math.random();
4612var toString = uncurryThis(1.0.toString);
4613
4614module.exports = function (key) {
4615  return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);
4616};
4617
4618
4619/***/ }),
4620/* 80 */
4621/***/ (function(module, exports, __webpack_require__) {
4622
4623var DESCRIPTORS = __webpack_require__(14);
4624var fails = __webpack_require__(19);
4625var createElement = __webpack_require__(81);
4626
4627// Thank's IE8 for his funny defineProperty
4628module.exports = !DESCRIPTORS && !fails(function () {
4629  // eslint-disable-next-line es/no-object-defineproperty -- requied for testing
4630  return Object.defineProperty(createElement('div'), 'a', {
4631    get: function () { return 7; }
4632  }).a != 7;
4633});
4634
4635
4636/***/ }),
4637/* 81 */
4638/***/ (function(module, exports, __webpack_require__) {
4639
4640var global = __webpack_require__(1);
4641var isObject = __webpack_require__(20);
4642
4643var document = global.document;
4644// typeof document.createElement is 'object' in old IE
4645var EXISTS = isObject(document) && isObject(document.createElement);
4646
4647module.exports = function (it) {
4648  return EXISTS ? document.createElement(it) : {};
4649};
4650
4651
4652/***/ }),
4653/* 82 */
4654/***/ (function(module, exports, __webpack_require__) {
4655
4656var uncurryThis = __webpack_require__(5);
4657var isCallable = __webpack_require__(7);
4658var store = __webpack_require__(41);
4659
4660var functionToString = uncurryThis(Function.toString);
4661
4662// this helper broken in `[email protected]`, so we can't use `shared` helper
4663if (!isCallable(store.inspectSource)) {
4664  store.inspectSource = function (it) {
4665    return functionToString(it);
4666  };
4667}
4668
4669module.exports = store.inspectSource;
4670
4671
4672/***/ }),
4673/* 83 */
4674/***/ (function(module, exports, __webpack_require__) {
4675
4676var shared = __webpack_require__(78);
4677var uid = __webpack_require__(79);
4678
4679var keys = shared('keys');
4680
4681module.exports = function (key) {
4682  return keys[key] || (keys[key] = uid(key));
4683};
4684
4685
4686/***/ }),
4687/* 84 */
4688/***/ (function(module, exports, __webpack_require__) {
4689
4690var uncurryThis = __webpack_require__(5);
4691var hasOwn = __webpack_require__(9);
4692var toIndexedObject = __webpack_require__(26);
4693var indexOf = __webpack_require__(85).indexOf;
4694var hiddenKeys = __webpack_require__(44);
4695
4696var push = uncurryThis([].push);
4697
4698module.exports = function (object, names) {
4699  var O = toIndexedObject(object);
4700  var i = 0;
4701  var result = [];
4702  var key;
4703  for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);
4704  // Don't enum bug & hidden keys
4705  while (names.length > i) if (hasOwn(O, key = names[i++])) {
4706    ~indexOf(result, key) || push(result, key);
4707  }
4708  return result;
4709};
4710
4711
4712/***/ }),
4713/* 85 */
4714/***/ (function(module, exports, __webpack_require__) {
4715
4716var toIndexedObject = __webpack_require__(26);
4717var toAbsoluteIndex = __webpack_require__(166);
4718var lengthOfArrayLike = __webpack_require__(167);
4719
4720// `Array.prototype.{ indexOf, includes }` methods implementation
4721var createMethod = function (IS_INCLUDES) {
4722  return function ($this, el, fromIndex) {
4723    var O = toIndexedObject($this);
4724    var length = lengthOfArrayLike(O);
4725    var index = toAbsoluteIndex(fromIndex, length);
4726    var value;
4727    // Array#includes uses SameValueZero equality algorithm
4728    // eslint-disable-next-line no-self-compare -- NaN check
4729    if (IS_INCLUDES && el != el) while (length > index) {
4730      value = O[index++];
4731      // eslint-disable-next-line no-self-compare -- NaN check
4732      if (value != value) return true;
4733    // Array#indexOf ignores holes, Array#includes - not
4734    } else for (;length > index; index++) {
4735      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;
4736    } return !IS_INCLUDES && -1;
4737  };
4738};
4739
4740module.exports = {
4741  // `Array.prototype.includes` method
4742  // https://tc39.es/ecma262/#sec-array.prototype.includes
4743  includes: createMethod(true),
4744  // `Array.prototype.indexOf` method
4745  // https://tc39.es/ecma262/#sec-array.prototype.indexof
4746  indexOf: createMethod(false)
4747};
4748
4749
4750/***/ }),
4751/* 86 */
4752/***/ (function(module, exports) {
4753
4754var ceil = Math.ceil;
4755var floor = Math.floor;
4756
4757// `ToIntegerOrInfinity` abstract operation
4758// https://tc39.es/ecma262/#sec-tointegerorinfinity
4759module.exports = function (argument) {
4760  var number = +argument;
4761  // eslint-disable-next-line no-self-compare -- safe
4762  return number !== number || number === 0 ? 0 : (number > 0 ? floor : ceil)(number);
4763};
4764
4765
4766/***/ }),
4767/* 87 */
4768/***/ (function(module, __webpack_exports__, __webpack_require__) {
4769
4770"use strict";
4771__webpack_require__.r(__webpack_exports__);
4772/* harmony import */ var _createStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(46);
4773/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "createStore", function() { return _createStore__WEBPACK_IMPORTED_MODULE_0__["default"]; });
4774
4775/* harmony import */ var _combineReducers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(90);
4776/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "combineReducers", function() { return _combineReducers__WEBPACK_IMPORTED_MODULE_1__["default"]; });
4777
4778/* harmony import */ var _bindActionCreators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(92);
4779/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bindActionCreators", function() { return _bindActionCreators__WEBPACK_IMPORTED_MODULE_2__["default"]; });
4780
4781/* harmony import */ var _applyMiddleware__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(93);
4782/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "applyMiddleware", function() { return _applyMiddleware__WEBPACK_IMPORTED_MODULE_3__["default"]; });
4783
4784/* harmony import */ var _compose__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(47);
4785/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "compose", function() { return _compose__WEBPACK_IMPORTED_MODULE_4__["default"]; });
4786
4787/* harmony import */ var _utils_warning__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(91);
4788
4789
4790
4791
4792
4793
4794
4795/*
4796* This is a dummy function to check if the function name has been altered by minification.
4797* If the function has been minified and NODE_ENV !== 'production', warn the user.
4798*/
4799function isCrushed() {}
4800
4801if (false) {}
4802
4803
4804
4805/***/ }),
4806/* 88 */
4807/***/ (function(module, __webpack_exports__, __webpack_require__) {
4808
4809"use strict";
4810__webpack_require__.r(__webpack_exports__);
4811/* harmony import */ var _baseGetTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(177);
4812/* harmony import */ var _getPrototype_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(182);
4813/* harmony import */ var _isObjectLike_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(184);
4814
4815
4816
4817
4818/** `Object#toString` result references. */
4819var objectTag = '[object Object]';
4820
4821/** Used for built-in method references. */
4822var funcProto = Function.prototype,
4823    objectProto = Object.prototype;
4824
4825/** Used to resolve the decompiled source of functions. */
4826var funcToString = funcProto.toString;
4827
4828/** Used to check objects for own properties. */
4829var hasOwnProperty = objectProto.hasOwnProperty;
4830
4831/** Used to infer the `Object` constructor. */
4832var objectCtorString = funcToString.call(Object);
4833
4834/**
4835 * Checks if `value` is a plain object, that is, an object created by the
4836 * `Object` constructor or one with a `[[Prototype]]` of `null`.
4837 *
4838 * @static
4839 * @memberOf _
4840 * @since 0.8.0
4841 * @category Lang
4842 * @param {*} value The value to check.
4843 * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
4844 * @example
4845 *
4846 * function Foo() {
4847 *   this.a = 1;
4848 * }
4849 *
4850 * _.isPlainObject(new Foo);
4851 * // => false
4852 *
4853 * _.isPlainObject([1, 2, 3]);
4854 * // => false
4855 *
4856 * _.isPlainObject({ 'x': 0, 'y': 0 });
4857 * // => true
4858 *
4859 * _.isPlainObject(Object.create(null));
4860 * // => true
4861 */
4862function isPlainObject(value) {
4863  if (!Object(_isObjectLike_js__WEBPACK_IMPORTED_MODULE_2__["default"])(value) || Object(_baseGetTag_js__WEBPACK_IMPORTED_MODULE_0__["default"])(value) != objectTag) {
4864    return false;
4865  }
4866  var proto = Object(_getPrototype_js__WEBPACK_IMPORTED_MODULE_1__["default"])(value);
4867  if (proto === null) {
4868    return true;
4869  }
4870  var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;
4871  return typeof Ctor == 'function' && Ctor instanceof Ctor &&
4872    funcToString.call(Ctor) == objectCtorString;
4873}
4874
4875/* harmony default export */ __webpack_exports__["default"] = (isPlainObject);
4876
4877
4878/***/ }),
4879/* 89 */
4880/***/ (function(module, __webpack_exports__, __webpack_require__) {
4881
4882"use strict";
4883__webpack_require__.r(__webpack_exports__);
4884/* harmony import */ var _root_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(178);
4885
4886
4887/** Built-in value references. */
4888var Symbol = _root_js__WEBPACK_IMPORTED_MODULE_0__["default"].Symbol;
4889
4890/* harmony default export */ __webpack_exports__["default"] = (Symbol);
4891
4892
4893/***/ }),
4894/* 90 */
4895/***/ (function(module, __webpack_exports__, __webpack_require__) {
4896
4897"use strict";
4898__webpack_require__.r(__webpack_exports__);
4899/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return combineReducers; });
4900/* harmony import */ var _createStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(46);
4901/* harmony import */ var lodash_es_isPlainObject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(88);
4902/* harmony import */ var _utils_warning__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(91);
4903
4904
4905
4906
4907function getUndefinedStateErrorMessage(key, action) {
4908  var actionType = action && action.type;
4909  var actionName = actionType && '"' + actionType.toString() + '"' || 'an action';
4910
4911  return 'Given action ' + actionName + ', reducer "' + key + '" returned undefined. ' + 'To ignore an action, you must explicitly return the previous state.';
4912}
4913
4914function getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unex
4914pectedKeyCache) {
4915  var reducerKeys = Object.keys(reducers);
4916  var argumentName = action && action.type === _createStore__WEBPACK_IMPORTED_MODULE_0__["ActionTypes"].INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';
4917
4918  if (reducerKeys.length === 0) {
4919    return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';
4920  }
4921
4922  if (!Object(lodash_es_isPlainObject__WEBPACK_IMPORTED_MODULE_1__["default"])(inputState)) {
4923    return 'The ' + argumentName + ' has unexpected type of "' + {}.toString.call(inputState).match(/\s([a-z|A-Z]+)/)[1] + '". Expected argument to be an object with the following ' + ('keys: "' + reducerKeys.join('", "') + '"');
4924  }
4925
4926  var unexpectedKeys = Object.keys(inputState).filter(function (key) {
4927    return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];
4928  });
4929
4930  unexpectedKeys.forEach(function (key) {
4931    unexpectedKeyCache[key] = true;
4932  });
4933
4934  if (unexpectedKeys.length > 0) {
4935    return 'Unexpected ' + (unexpectedKeys.length > 1 ? 'keys' : 'key') + ' ' + ('"' + unexpectedKeys.join('", "') + '" found in ' + argumentName + '. ') + 'Expected to find one of the known reducer keys instead: ' + ('"' + reducerKeys.join('", "') + '". Unexpected keys will be ignored.');
4936  }
4937}
4938
4939function assertReducerSanity(reducers) {
4940  Object.keys(reducers).forEach(function (key) {
4941    var reducer = reducers[key];
4942    var initialState = reducer(undefined, { type: _createStore__WEBPACK_IMPORTED_MODULE_0__["ActionTypes"].INIT });
4943
4944    if (typeof initialState === 'undefined') {
4945      throw new Error('Reducer "' + key + '" returned undefined during initialization. ' + 'If the state passed to the reducer is undefined, you must ' + 'explicitly return the initial state. The initial state may ' + 'not be undefined.');
4946    }
4947
4948    var type = '@@redux/PROBE_UNKNOWN_ACTION_' + Math.random().toString(36).substring(7).split('').join('.');
4949    if (typeof reducer(undefined, { type: type }) === 'undefined') {
4950      throw new Error('Reducer "' + key + '" returned undefined when probed with a random type. ' + ('Don\'t try to handle ' + _createStore__WEBPACK_IMPORTED_MODULE_0__["ActionTypes"].INIT + ' or other actions in "redux/*" ') + 'namespace. They are considered private. Instead, you must return the ' + 'current state for any unknown actions, unless it is undefined, ' + 'in which case you must return the initial state, regardless of the ' + 'action type. The initial state may not be undefined.');
4951    }
4952  });
4953}
4954
4955/**
4956 * Turns an object whose values are different reducer functions, into a single
4957 * reducer function. It will call every child reducer, and gather their results
4958 * into a single state object, whose keys correspond to the keys of the passed
4959 * reducer functions.
4960 *
4961 * @param {Object} reducers An object whose values correspond to different
4962 * reducer functions that need to be combined into one. One handy way to obtain
4963 * it is to use ES6 `import * as reducers` syntax. The reducers may never return
4964 * undefined for any action. Instead, they should return their initial state
4965 * if the state passed to them was undefined, and the current state for any
4966 * unrecognized action.
4967 *
4968 * @returns {Function} A reducer function that invokes every reducer inside the
4969 * passed object, and builds a state object with the same shape.
4970 */
4971function combineReducers(reducers) {
4972  var reducerKeys = Object.keys(reducers);
4973  var finalReducers = {};
4974  for (var i = 0; i < reducerKeys.length; i++) {
4975    var key = reducerKeys[i];
4976
4977    if (false) {}
4978
4979    if (typeof reducers[key] === 'function') {
4980      finalReducers[key] = reducers[key];
4981    }
4982  }
4983  var finalReducerKeys = Object.keys(finalReducers);
4984
4985  if (false) { var unexpectedKeyCache; }
4986
4987  var sanityError;
4988  try {
4989    assertReducerSanity(finalReducers);
4990  } catch (e) {
4991    sanityError = e;
4992  }
4993
4994  return function combination() {
4995    var state = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
4996    var action = arguments[1];
4997
4998    if (sanityError) {
4999      throw sanityError;
5000    }
5001
5002    if (false) { var warningMessage; }
5003
5004    var hasChanged = false;
5005    var nextState = {};
5006    for (var i = 0; i < finalReducerKeys.length; i++) {
5007      var key = finalReducerKeys[i];
5008      var reducer = finalReducers[key];
5009      var previousStateForKey = state[key];
5010      var nextStateForKey = reducer(previousStateForKey, action);
5011      if (typeof nextStateForKey === 'undefined') {
5012        var errorMessage = getUndefinedStateErrorMessage(key, action);
5013        throw new Error(errorMessage);
5014      }
5015      nextState[key] = nextStateForKey;
5016      hasChanged = hasChanged || nextStateForKey !== previousStateForKey;
5017    }
5018    return hasChanged ? nextState : state;
5019  };
5020}
5021
5022/***/ }),
5023/* 91 */
5024/***/ (function(module, __webpack_exports__, __webpack_require__) {
5025
5026"use strict";
5027__webpack_require__.r(__webpack_exports__);
5028/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return warning; });
5029/**
5030 * Prints a warning in the console if it exists.
5031 *
5032 * @param {String} message The warning message.
5033 * @returns {void}
5034 */
5035function warning(message) {
5036  /* eslint-disable no-console */
5037  if (typeof console !== 'undefined' && typeof console.error === 'function') {
5038    console.error(message);
5039  }
5040  /* eslint-enable no-console */
5041  try {
5042    // This error was thrown as a convenience so that if you enable
5043    // "break on all exceptions" in your console,
5044    // it would pause the execution at this line.
5045    throw new Error(message);
5046    /* eslint-disable no-empty */
5047  } catch (e) {}
5048  /* eslint-enable no-empty */
5049}
5050
5051/***/ }),
5052/* 92 */
5053/***/ (function(module, __webpack_exports__, __webpack_require__) {
5054
5055"use strict";
5056__webpack_require__.r(__webpack_exports__);
5057/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return bindActionCreators; });
5058function bindActionCreator(actionCreator, dispatch) {
5059  return function () {
5060    return dispatch(actionCreator.apply(undefined, arguments));
5061  };
5062}
5063
5064/**
5065 * Turns an object whose values are action creators, into an object with the
5066 * same keys, but with every function wrapped into a `dispatch` call so they
5067 * may be invoked directly. This is just a convenience method, as you can call
5068 * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.
5069 *
5070 * For convenience, you can also pass a single function as the first argument,
5071 * and get a function in return.
5072 *
5073 * @param {Function|Object} actionCreators An object whose values are action
5074 * creator functions. One handy way to obtain it is to use ES6 `import * as`
5075 * syntax. You may also pass a single function.
5076 *
5077 * @param {Function} dispatch The `dispatch` function available on your Redux
5078 * store.
5079 *
5080 * @returns {Function|Object} The object mimicking the original object, but with
5081 * every action creator wrapped into the `dispatch` call. If you passed a
5082 * function as `actionCreators`, the return value will also be a single
5083 * function.
5084 */
5085function bindActionCreators(actionCreators, dispatch) {
5086  if (typeof actionCreators === 'function') {
5087    return bindActionCreator(actionCreators, dispatch);
5088  }
5089
5090  if (typeof actionCreators !== 'object' || actionCreators === null) {
5091    throw new Error('bindActionCreators expected an object or a function, instead received ' + (actionCreators === null ? 'null' : typeof actionCreators) + '. ' + 'Did you write "import ActionCreators from" instead of "import * as ActionCreators from"?');
5092  }
5093
5094  var keys = Object.keys(actionCreators);
5095  var boundActionCreators = {};
5096  for (var i = 0; i < keys.length; i++) {
5097    var key = keys[i];
5098    var actionCreator = actionCreators[key];
5099    if (typeof actionCreator === 'function') {
5100      boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);
5101    }
5102  }
5103  return boundActionCreators;
5104}
5105
5106/***/ }),
5107/* 93 */
5108/***/ (function(module, __webpack_exports__, __webpack_require__) {
5109
5110"use strict";
5111__webpack_require__.r(__webpack_exports__);
5112/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return applyMiddleware; });
5113/* harmony import */ var _compose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(47);
5114var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
5115
5116
5117
5118/**
5119 * Creates a store enhancer that applies middleware to the dispatch method
5120 * of the Redux store. This is handy for a variety of tasks, such as expressing
5121 * asynchronous actions in a concise manner, or logging every action payload.
5122 *
5123 * See `redux-thunk` package as an example of the Redux middleware.
5124 *
5125 * Because middleware is potentially asynchronous, this should be the first
5126 * store enhancer in the composition chain.
5127 *
5128 * Note that each middleware will be given the `dispatch` and `getState` functions
5129 * as named arguments.
5130 *
5131 * @param {...Function} middlewares The middleware chain to be applied.
5132 * @returns {Function} A store enhancer applying the middleware.
5133 */
5134function applyMiddleware() {
5135  for (var _len = arguments.length, middlewares = Array(_len), _key = 0; _key < _len; _key++) {
5136    middlewares[_key] = arguments[_key];
5137  }
5138
5139  return function (createStore) {
5140    return function (reducer, preloadedState, enhancer) {
5141      var store = createStore(reducer, preloadedState, enhancer);
5142      var _dispatch = store.dispatch;
5143      var chain = [];
5144
5145      var middlewareAPI = {
5146        getState: store.getState,
5147        dispatch: function dispatch(action) {
5148          return _dispatch(action);
5149        }
5150      };
5151      chain = middlewares.map(function (middleware) {
5152        return middleware(middlewareAPI);
5153      });
5154      _dispatch = _compose__WEBPACK_IMPORTED_MODULE_0__["default"].apply(undefined, chain)(store.dispatch);
5155
5156      return _extends({}, store, {
5157        dispatch: _dispatch
5158      });
5159    };
5160  };
5161}
5162
5163/***/ }),
5164/* 94 */
5165/***/ (function(module, exports, __webpack_require__) {
5166
5167"use strict";
5168
5169
5170Object.defineProperty(exports, "__esModule", {
5171  value: true
5172});
5173exports.ActionAppliesTo = exports.ActionTypeConsts = void 0;
5174var ActionTypeConsts = {
5175  TRANSFORM_MOVE: 'TRANSFORM_MOVE',
5176  TRANSFORM_SCALE: 'TRANSFORM_SCALE',
5177  TRANSFORM_ROTATE: 'TRANSFORM_ROTATE',
5178  TRANSFORM_SKEW: 'TRANSFORM_SKEW',
5179  STYLE_OPACITY: 'STYLE_OPACITY',
5180  STYLE_SIZE: 'STYLE_SIZE',
5181  STYLE_FILTER: 'STYLE_FILTER',
5182  STYLE_FONT_VARIATION: 'STYLE_FONT_VARIATION',
5183  STYLE_BACKGROUND_COLOR: 'STYLE_BACKGROUND_COLOR',
5184  STYLE_BORDER: 'STYLE_BORDER',
5185  STYLE_TEXT_COLOR: 'STYLE_TEXT_COLOR',
5186  PLUGIN_LOTTIE: 'PLUGIN_LOTTIE',
5187  GENERAL_DISPLAY: 'GENERAL_DISPLAY',
5188  GENERAL_START_ACTION: 'GENERAL_START_ACTION',
5189  GENERAL_CONTINUOUS_ACTION: 'GENERAL_CONTINUOUS_ACTION',
5190  // TODO: Clean these up below because they're not used at this time
5191  GENERAL_COMBO_CLASS: 'GENERAL_COMBO_CLASS',
5192  GENERAL_STOP_ACTION: 'GENERAL_STOP_ACTION',
5193  GENERAL_LOOP: 'GENERAL_LOOP',
5194  STYLE_BOX_SHADOW: 'STYLE_BOX_SHADOW'
5195};
5196exports.ActionTypeConsts = ActionTypeConsts;
5197var ActionAppliesTo = {
5198  ELEMENT: 'ELEMENT',
5199  ELEMENT_CLASS: 'ELEMENT_CLASS',
5200  TRIGGER_ELEMENT: 'TRIGGER_ELEMENT'
5201};
5202exports.ActionAppliesTo = ActionAppliesTo;
5203
5204/***/ }),
5205/* 95 */
5206/***/ (function(module, exports, __webpack_require__) {
5207
5208var createFind = __webpack_require__(96),
5209    findIndex = __webpack_require__(262);
5210
5211/**
5212 * Iterates over elements of `collection`, returning the first element
5213 * `predicate` returns truthy for. The predicate is invoked with three
5214 * arguments: (value, index|key, collection).
5215 *
5216 * @static
5217 * @memberOf _
5218 * @since 0.1.0
5219 * @category Collection
5220 * @param {Array|Object} collection The collection to inspect.
5221 * @param {Function} [predicate=_.identity] The function invoked per iteration.
5222 * @param {number} [fromIndex=0] The index to search from.
5223 * @returns {*} Returns the matched element, else `undefined`.
5224 * @example
5225 *
5226 * var users = [
5227 *   { 'user': 'barney',  'age': 36, 'active': true },
5228 *   { 'user': 'fred',    'age': 40, 'active': false },
5229 *   { 'user': 'pebbles', 'age': 1,  'active': true }
5230 * ];
5231 *
5232 * _.find(users, function(o) { return o.age < 40; });
5233 * // => object for 'barney'
5234 *
5235 * // The `_.matches` iteratee shorthand.
5236 * _.find(users, { 'age': 1, 'active': true });
5237 * // => object for 'pebbles'
5238 *
5239 * // The `_.matchesProperty` iteratee shorthand.
5240 * _.find(users, ['active', false]);
5241 * // => object for 'fred'
5242 *
5243 * // The `_.property` iteratee shorthand.
5244 * _.find(users, 'active');
5245 * // => object for 'barney'
5246 */
5247var find = createFind(findIndex);
5248
5249module.exports = find;
5250
5251
5252/***/ }),
5253/* 96 */
5254/***/ (function(module, exports, __webpack_require__) {
5255
5256var baseIteratee = __webpack_require__(10),
5257    isArrayLike = __webpack_require__(17),
5258    keys = __webpack_require__(35);
5259
5260/**
5261 * Creates a `_.find` or `_.findLast` function.
5262 *
5263 * @private
5264 * @param {Function} findIndexFunc The function to find the collection index.
5265 * @returns {Function} Returns the new find function.
5266 */
5267function createFind(findIndexFunc) {
5268  return function(collection, predicate, fromIndex) {
5269    var iterable = Object(collection);
5270    if (!isArrayLike(collection)) {
5271      var iteratee = baseIteratee(predicate, 3);
5272      collection = keys(collection);
5273      predicate = function(key) { return iteratee(iterable[key], key, iterable); };
5274    }
5275    var index = findIndexFunc(collection, predicate, fromIndex);
5276    return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;
5277  };
5278}
5279
5280module.exports = createFind;
5281
5282
5283/***/ }),
5284/* 97 */
5285/***/ (function(module, exports, __webpack_require__) {
5286
5287var ListCache = __webpack_require__(31),
5288    stackClear = __webpack_require__(204),
5289    stackDelete = __webpack_require__(205),
5290    stackGet = __webpack_require__(206),
5291    stackHas = __webpack_require__(207),
5292    stackSet = __webpack_require__(208);
5293
5294/**
5295 * Creates a stack cache object to store key-value pairs.
5296 *
5297 * @private
5298 * @constructor
5299 * @param {Array} [entries] The key-value pairs to cache.
5300 */
5301function Stack(entries) {
vendor: 3,645 bytes, lines 5302-5442
5302  var data = this.__data__ = new ListCache(entries);
5303  this.size = data.size;
5304}
5305
5306// Add methods to `Stack`.
5307Stack.prototype.clear = stackClear;
5308Stack.prototype['delete'] = stackDelete;
5309Stack.prototype.get = stackGet;
5310Stack.prototype.has = stackHas;
5311Stack.prototype.set = stackSet;
5312
5313module.exports = Stack;
5314
5315
5316/***/ }),
5317/* 98 */
5318/***/ (function(module, exports, __webpack_require__) {
5319
5320var baseGetTag = __webpack_require__(16),
5321    isObject = __webpack_require__(8);
5322
5323/** `Object#toString` result references. */
5324var asyncTag = '[object AsyncFunction]',
5325    funcTag = '[object Function]',
5326    genTag = '[object GeneratorFunction]',
5327    proxyTag = '[object Proxy]';
5328
5329/**
5330 * Checks if `value` is classified as a `Function` object.
5331 *
5332 * @static
5333 * @memberOf _
5334 * @since 0.1.0
5335 * @category Lang
5336 * @param {*} value The value to check.
5337 * @returns {boolean} Returns `true` if `value` is a function, else `false`.
5338 * @example
5339 *
5340 * _.isFunction(_);
5341 * // => true
5342 *
5343 * _.isFunction(/abc/);
5344 * // => false
5345 */
5346function isFunction(value) {
5347  if (!isObject(value)) {
5348    return false;
5349  }
5350  // The use of `Object#toString` avoids issues with the `typeof` operator
5351  // in Safari 9 which returns 'object' for typed arrays and other constructors.
5352  var tag = baseGetTag(value);
5353  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
5354}
5355
5356module.exports = isFunction;
5357
5358
5359/***/ }),
5360/* 99 */
5361/***/ (function(module, exports, __webpack_require__) {
5362
5363/* WEBPACK VAR INJECTION */(function(global) {/** Detect free variable `global` from Node.js. */
5364var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
5365
5366module.exports = freeGlobal;
5367
5368/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(25)))
5369
5370/***/ }),
5371/* 100 */
5372/***/ (function(module, exports) {
5373
5374/** Used for built-in method references. */
5375var funcProto = Function.prototype;
5376
5377/** Used to resolve the decompiled source of functions. */
5378var funcToString = funcProto.toString;
5379
5380/**
5381 * Converts `func` to its source code.
5382 *
5383 * @private
5384 * @param {Function} func The function to convert.
5385 * @returns {string} Returns the source code.
5386 */
5387function toSource(func) {
5388  if (func != null) {
5389    try {
5390      return funcToString.call(func);
5391    } catch (e) {}
5392    try {
5393      return (func + '');
5394    } catch (e) {}
5395  }
5396  return '';
5397}
5398
5399module.exports = toSource;
5400
5401
5402/***/ }),
5403/* 101 */
5404/***/ (function(module, exports, __webpack_require__) {
5405
5406var baseIsEqualDeep = __webpack_require__(227),
5407    isObjectLike = __webpack_require__(12);
5408
5409/**
5410 * The base implementation of `_.isEqual` which supports partial comparisons
5411 * and tracks traversed objects.
5412 *
5413 * @private
5414 * @param {*} value The value to compare.
5415 * @param {*} other The other value to compare.
5416 * @param {boolean} bitmask The bitmask flags.
5417 *  1 - Unordered comparison
5418 *  2 - Partial comparison
5419 * @param {Function} [customizer] The function to customize comparisons.
5420 * @param {Object} [stack] Tracks traversed `value` and `other` objects.
5421 * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
5422 */
5423function baseIsEqual(value, other, bitmask, customizer, stack) {
5424  if (value === other) {
5425    return true;
5426  }
5427  if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {
5428    return value !== value && other !== other;
5429  }
5430  return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
5431}
5432
5433module.exports = baseIsEqual;
5434
5435
5436/***/ }),
5437/* 102 */
5438/***/ (function(module, exports, __webpack_require__) {
5439
5440var SetCache = __webpack_require__(228),
5441    arraySome = __webpack_require__(231),
5442    cacheHas = __webpack_require__(232
vendor: 2,558 bytes, lines 5442-5526
5442);
5443
5444/** Used to compose bitmasks for value comparisons. */
5445var COMPARE_PARTIAL_FLAG = 1,
5446    COMPARE_UNORDERED_FLAG = 2;
5447
5448/**
5449 * A specialized version of `baseIsEqualDeep` for arrays with support for
5450 * partial deep comparisons.
5451 *
5452 * @private
5453 * @param {Array} array The array to compare.
5454 * @param {Array} other The other array to compare.
5455 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
5456 * @param {Function} customizer The function to customize comparisons.
5457 * @param {Function} equalFunc The function to determine equivalents of values.
5458 * @param {Object} stack Tracks traversed `array` and `other` objects.
5459 * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
5460 */
5461function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {
5462  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
5463      arrLength = array.length,
5464      othLength = other.length;
5465
5466  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
5467    return false;
5468  }
5469  // Check that cyclic values are equal.
5470  var arrStacked = stack.get(array);
5471  var othStacked = stack.get(other);
5472  if (arrStacked && othStacked) {
5473    return arrStacked == other && othStacked == array;
5474  }
5475  var index = -1,
5476      result = true,
5477      seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;
5478
5479  stack.set(array, other);
5480  stack.set(other, array);
5481
5482  // Ignore non-index properties.
5483  while (++index < arrLength) {
5484    var arrValue = array[index],
5485        othValue = other[index];
5486
5487    if (customizer) {
5488      var compared = isPartial
5489        ? customizer(othValue, arrValue, index, other, array, stack)
5490        : customizer(arrValue, othValue, index, array, other, stack);
5491    }
5492    if (compared !== undefined) {
5493      if (compared) {
5494        continue;
5495      }
5496      result = false;
5497      break;
5498    }
5499    // Recursively compare arrays (susceptible to call stack limits).
5500    if (seen) {
5501      if (!arraySome(other, function(othValue, othIndex) {
5502            if (!cacheHas(seen, othIndex) &&
5503                (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
5504              return seen.push(othIndex);
5505            }
5506          })) {
5507        result = false;
5508        break;
5509      }
5510    } else if (!(
5511          arrValue === othValue ||
5512            equalFunc(arrValue, othValue, bitmask, customizer, stack)
5513        )) {
5514      result = false;
5515      break;
5516    }
5517  }
5518  stack['delete'](array);
5519  stack['delete'](other);
5520  return result;
5521}
5522
5523module.exports = equalArrays;
5524
5525
5526/***/ }),
vendor: 3,119 bytes, lines 5527-5644
5527/* 103 */
5528/***/ (function(module, exports, __webpack_require__) {
5529
5530var arrayPush = __webpack_require__(52),
5531    isArray = __webpack_require__(2);
5532
5533/**
5534 * The base implementation of `getAllKeys` and `getAllKeysIn` which uses
5535 * `keysFunc` and `symbolsFunc` to get the enumerable property names and
5536 * symbols of `object`.
5537 *
5538 * @private
5539 * @param {Object} object The object to query.
5540 * @param {Function} keysFunc The function to get the keys of `object`.
5541 * @param {Function} symbolsFunc The function to get the symbols of `object`.
5542 * @returns {Array} Returns the array of property names and symbols.
5543 */
5544function baseGetAllKeys(object, keysFunc, symbolsFunc) {
5545  var result = keysFunc(object);
5546  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));
5547}
5548
5549module.exports = baseGetAllKeys;
5550
5551
5552/***/ }),
5553/* 104 */
5554/***/ (function(module, exports, __webpack_require__) {
5555
5556var arrayFilter = __webpack_require__(239),
5557    stubArray = __webpack_require__(105);
5558
5559/** Used for built-in method references. */
5560var objectProto = Object.prototype;
5561
5562/** Built-in value references. */
5563var propertyIsEnumerable = objectProto.propertyIsEnumerable;
5564
5565/* Built-in method references for those with the same name as other `lodash` methods. */
5566var nativeGetSymbols = Object.getOwnPropertySymbols;
5567
5568/**
5569 * Creates an array of the own enumerable symbols of `object`.
5570 *
5571 * @private
5572 * @param {Object} object The object to query.
5573 * @returns {Array} Returns the array of symbols.
5574 */
5575var getSymbols = !nativeGetSymbols ? stubArray : function(object) {
5576  if (object == null) {
5577    return [];
5578  }
5579  object = Object(object);
5580  return arrayFilter(nativeGetSymbols(object), function(symbol) {
5581    return propertyIsEnumerable.call(object, symbol);
5582  });
5583};
5584
5585module.exports = getSymbols;
5586
5587
5588/***/ }),
5589/* 105 */
5590/***/ (function(module, exports) {
5591
5592/**
5593 * This method returns a new empty array.
5594 *
5595 * @static
5596 * @memberOf _
5597 * @since 4.13.0
5598 * @category Util
5599 * @returns {Array} Returns the new empty array.
5600 * @example
5601 *
5602 * var arrays = _.times(2, _.stubArray);
5603 *
5604 * console.log(arrays);
5605 * // => [[], []]
5606 *
5607 * console.log(arrays[0] === arrays[1]);
5608 * // => false
5609 */
5610function stubArray() {
5611  return [];
5612}
5613
5614module.exports = stubArray;
5615
5616
5617/***/ }),
5618/* 106 */
5619/***/ (function(module, exports, __webpack_require__) {
5620
5621var baseTimes = __webpack_require__(240),
5622    isArguments = __webpack_require__(36),
5623    isArray = __webpack_require__(2),
5624    isBuffer = __webpack_require__(53),
5625    isIndex = __webpack_require__(54),
5626    isTypedArray = __webpack_require__(55);
5627
5628/** Used for built-in method references. */
5629var objectProto = Object.prototype;
5630
5631/** Used to check objects for own properties. */
5632var hasOwnProperty = objectProto.hasOwnProperty;
5633
5634/**
5635 * Creates an array of the enumerable property names of the array-like `value`.
5636 *
5637 * @private
5638 * @param {*} value The value to query.
5639 * @param {boolean} inherited Specify returning inherited property names.
5640 * @returns {Array} Returns the array of property names.
5641 */
5642function arrayLikeKeys(value, inherited) {
5643  var isArr = isArray(value),
5644      isArg = !isArr && isArguments(value),
vendor: 4,429 bytes, lines 5645-5829
5645      isBuff = !isArr && !isArg && isBuffer(value),
5646      isType = !isArr && !isArg && !isBuff && isTypedArray(value),
5647      skipIndexes = isArr || isArg || isBuff || isType,
5648      result = skipIndexes ? baseTimes(value.length, String) : [],
5649      length = result.length;
5650
5651  for (var key in value) {
5652    if ((inherited || hasOwnProperty.call(value, key)) &&
5653        !(skipIndexes && (
5654           // Safari 9 has enumerable `arguments.length` in strict mode.
5655           key == 'length' ||
5656           // Node.js 0.10 has enumerable non-index properties on buffers.
5657           (isBuff && (key == 'offset' || key == 'parent')) ||
5658           // PhantomJS 2 has enumerable non-index properties on typed arrays.
5659           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||
5660           // Skip index properties.
5661           isIndex(key, length)
5662        ))) {
5663      result.push(key);
5664    }
5665  }
5666  return result;
5667}
5668
5669module.exports = arrayLikeKeys;
5670
5671
5672/***/ }),
5673/* 107 */
5674/***/ (function(module, exports) {
5675
5676module.exports = function(module) {
5677	if (!module.webpackPolyfill) {
5678		module.deprecate = function() {};
5679		module.paths = [];
5680		// module.parent = undefined by default
5681		if (!module.children) module.children = [];
5682		Object.defineProperty(module, "loaded", {
5683			enumerable: true,
5684			get: function() {
5685				return module.l;
5686			}
5687		});
5688		Object.defineProperty(module, "id", {
5689			enumerable: true,
5690			get: function() {
5691				return module.i;
5692			}
5693		});
5694		module.webpackPolyfill = 1;
5695	}
5696	return module;
5697};
5698
5699
5700/***/ }),
5701/* 108 */
5702/***/ (function(module, exports) {
5703
5704/**
5705 * Creates a unary function that invokes `func` with its argument transformed.
5706 *
5707 * @private
5708 * @param {Function} func The function to wrap.
5709 * @param {Function} transform The argument transform.
5710 * @returns {Function} Returns the new function.
5711 */
5712function overArg(func, transform) {
5713  return function(arg) {
5714    return func(transform(arg));
5715  };
5716}
5717
5718module.exports = overArg;
5719
5720
5721/***/ }),
5722/* 109 */
5723/***/ (function(module, exports, __webpack_require__) {
5724
5725var getNative = __webpack_require__(11),
5726    root = __webpack_require__(6);
5727
5728/* Built-in method references that are verified to be native. */
5729var WeakMap = getNative(root, 'WeakMap');
5730
5731module.exports = WeakMap;
5732
5733
5734/***/ }),
5735/* 110 */
5736/***/ (function(module, exports, __webpack_require__) {
5737
5738var isObject = __webpack_require__(8);
5739
5740/**
5741 * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.
5742 *
5743 * @private
5744 * @param {*} value The value to check.
5745 * @returns {boolean} Returns `true` if `value` if suitable for strict
5746 *  equality comparisons, else `false`.
5747 */
5748function isStrictComparable(value) {
5749  return value === value && !isObject(value);
5750}
5751
5752module.exports = isStrictComparable;
5753
5754
5755/***/ }),
5756/* 111 */
5757/***/ (function(module, exports) {
5758
5759/**
5760 * A specialized version of `matchesProperty` for source values suitable
5761 * for strict equality comparisons, i.e. `===`.
5762 *
5763 * @private
5764 * @param {string} key The key of the property to get.
5765 * @param {*} srcValue The value to match.
5766 * @returns {Function} Returns the new spec function.
5767 */
5768function matchesStrictComparable(key, srcValue) {
5769  return function(object) {
5770    if (object == null) {
5771      return false;
5772    }
5773    return object[key] === srcValue &&
5774      (srcValue !== undefined || (key in Object(object)));
5775  };
5776}
5777
5778module.exports = matchesStrictComparable;
5779
5780
5781/***/ }),
5782/* 112 */
5783/***/ (function(module, exports) {
5784
5785/**
5786 * A specialized version of `_.map` for arrays without support for iteratee
5787 * shorthands.
5788 *
5789 * @private
5790 * @param {Array} [array] The array to iterate over.
5791 * @param {Function} iteratee The function invoked per iteration.
5792 * @returns {Array} Returns the new mapped array.
5793 */
5794function arrayMap(array, iteratee) {
5795  var index = -1,
5796      length = array == null ? 0 : array.length,
5797      result = Array(length);
5798
5799  while (++index < length) {
5800    result[index] = iteratee(array[index], index, array);
5801  }
5802  return result;
5803}
5804
5805module.exports = arrayMap;
5806
5807
5808/***/ }),
5809/* 113 */
5810/***/ (function(module, exports) {
5811
5812/**
5813 * The base implementation of `_.property` without support for deep paths.
5814 *
5815 * @private
5816 * @param {string} key The key of the property to get.
5817 * @returns {Function} Returns the new accessor function.
5818 */
5819function baseProperty(key) {
5820  return function(object) {
5821    return object == null ? undefined : object[key];
5822  };
5823}
5824
5825module.exports = baseProperty;
5826
5827
5828/***/ }),
5829/* 114 */
5830/***/ (function(module, exports) {
5831
5832/**
5833 * The base implementation of `_.findIndex` and `_.findLastIndex` without
5834 * support for iteratee shorthands.
5835 *
5836 * @private
5837 * @param {Array} array The array to inspect.
5838 * @param {Function} predicate The function invoked per iteration.
5839 * @param {number} fromIndex The index to search from.
5840 * @param {boolean} [fromRight] Specify iterating from right to left.
5841 * @returns {number} Returns the index of the matched value, else `-1`.
5842 */
5843function baseFindIndex(array, predicate, fromIndex, fromRight) {
5844  var length = array.length,
5845      index = fromIndex + (fromRight ? 1 : -1);
5846
5847  while ((fromRight ? index-- : ++index < length)) {
5848    if (predicate(array[index], index, array)) {
5849      return index;
5850    }
5851  }
5852  return -1;
5853}
5854
5855module.exports = baseFindIndex;
5856
5857
5858/***/ }),
5859/* 115 */
5860/***/ (function(module, exports, __webpack_require__) {
5861
5862var toFinite = __webpack_require__(263);
5863
5864/**
5865 * Converts `value` to an integer.
5866 *
5867 * **Note:** This method is loosely based on
5868 * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).
5869 *
5870 * @static
5871 * @memberOf _
5872 * @since 4.0.0
5873 * @category Lang
5874 * @param {*} value The value to convert.
5875 * @returns {number} Returns the converted integer.
5876 * @example
5877 *
5878 * _.toInteger(3.2);
5879 * // => 3
5880 *
5881 * _.toInteger(Number.MIN_VALUE);
5882 * // => 0
5883 *
5884 * _.toInteger(Infinity);
5885 * // => 1.7976931348623157e+308
5886 *
5887 * _.toInteger('3.2');
5888 * // => 3
5889 */
5890function toInteger(value) {
5891  var result = toFinite(value),
5892      remainder = result % 1;
5893
5894  return result === result ? (remainder ? result - remainder : result) : 0;
5895}
5896
5897module.exports = toInteger;
5898
5899
5900/***/ }),
5901/* 116 */
5902/***/ (function(module, exports, __webpack_require__) {
5903
5904"use strict";
5905
5906
5907var _interopRequireDefault = __webpack_require__(0);
5908
5909Object.defineProperty(exports, "__esModule", {
5910  value: true
5911});
5912exports.inQuad = inQuad;
5913exports.outQuad = outQuad;
5914exports.inOutQuad = inOutQuad;
5915exports.inCubic = inCubic;
5916exports.outCubic = outCubic;
5917exports.inOutCubic = inOutCubic;
5918exports.inQuart = inQuart;
5919exports.outQuart = outQuart;
5920exports.inOutQuart = inOutQuart;
5921exports.inQuint = inQuint;
5922exports.outQuint = outQuint;
5923exports.inOutQuint = inOutQuint;
5924exports.inSine = inSine;
5925exports.outSine = outSine;
5926exports.inOutSine = inOutSine;
5927exports.inExpo = inExpo;
5928exports.outExpo = outExpo;
5929exports.inOutExpo = inOutExpo;
5930exports.inCirc = inCirc;
5931exports.outCirc = outCirc;
5932exports.inOutCirc = inOutCirc;
5933exports.outBounce = outBounce;
5934exports.inBack = inBack;
5935exports.outBack = outBack;
5936exports.inOutBack = inOutBack;
5937exports.inElastic = inElastic;
5938exports.outElastic = outElastic;
5939exports.inOutElastic = inOutElastic;
5940exports.swingFromTo = swingFromTo;
5941exports.swingFrom = swingFrom;
5942exports.swingTo = swingTo;
5943exports.bounce = bounce;
5944exports.bouncePast = bouncePast;
5945exports.easeInOut = exports.easeOut = exports.easeIn = exports.ease = void 0;
5946
5947var _bezierEasing = _interopRequireDefault(__webpack_require__(117)); // Easing functions adapted from Thomas Fuchs & Jeremy Kahn
5948// Easing Equations (c) 2003 Robert Penner, BSD license
5949// https://raw.github.com/danro/easing-js/master/LICENSE
5950
5951
5952var magicSwing = 1.70158;
5953var ease = (0, _bezierEasing["default"])(0.25, 0.1, 0.25, 1.0);
5954exports.ease = ease;
5955var easeIn = (0, _bezierEasing["default"])(0.42, 0.0, 1.0, 1.0);
5956exports.easeIn = easeIn;
5957var easeOut = (0, _bezierEasing["default"])(0.0, 0.0, 0.58, 1.0);
5958exports.easeOut = easeOut;
5959var easeInOut = (0, _bezierEasing["default"])(0.42, 0.0, 0.58, 1.0);
5960exports.easeInOut = easeInOut;
5961
5962function inQuad(pos) {
5963  return Math.pow(pos, 2);
5964}
5965
5966function outQuad(pos) {
5967  return -(Math.pow(pos - 1, 2) - 1);
5968}
5969
5970function inOutQuad(pos) {
5971  if ((pos /= 0.5) < 1) {
5972    return 0.5 * Math.pow(pos, 2);
5973  }
5974
5975  return -0.5 * ((pos -= 2) * pos - 2);
5976}
5977
5978function inCubic(pos) {
5979  return Math.pow(pos, 3);
5980}
5981
5982function outCubic(pos) {
5983  return Math.pow(pos - 1, 3) + 1;
5984}
5985
5986function inOutCubic(pos) {
5987  if ((pos /= 0.5) < 1) {
5988    return 0.5 * Math.pow(pos, 3);
5989  }
5990
5991  return 0.5 * (Math.pow(pos - 2, 3) + 2);
5992}
5993
5994function inQuart(pos) {
5995  return Math.pow(pos, 4);
5996}
5997
5998function outQuart(pos) {
5999  return -(Math.pow(pos - 1, 4) - 1);
6000}
6001
6002function inOutQuart(pos) {
6003  if ((pos /= 0.5) < 1) {
6004    return 0.5 * Math.pow(pos, 4);
6005  }
6006
6007  return -0.5 * ((pos -= 2) * Math.pow(pos, 3) - 2);
6008}
6009
6010function inQuint(pos) {
6011  return Math.pow(pos, 5);
6012}
6013
6014function outQuint(pos) {
6015  return Math.pow(pos - 1, 5) + 1;
6016}
6017
6018function inOutQuint(pos) {
6019  if ((pos /= 0.5) < 1) {
6020    return 0.5 * Math.pow(pos, 5);
6021  }
6022
6023  return 0.5 * (Math.pow(pos - 2, 5) + 2);
6024}
6025
6026function inSine(pos) {
6027  return -Math.cos(pos * (Math.PI / 2)) + 1;
6028}
6029
6030function outSine(pos) {
6031  return Math.sin(pos * (Math.PI / 2));
6032}
6033
6034function inOutSine(pos) {
6035  return -0.5 * (Math.cos(Math.PI * pos) - 1);
6036}
6037
6038function inExpo(pos) {
6039  return pos === 0 ? 0 : Math.pow(2, 10 * (pos - 1));
6040}
6041
6042function outExpo(pos) {
6043  return pos === 1 ? 1 : -Math.pow(2, -10 * pos) + 1;
6044}
6045
6046function inOutExpo(pos) {
6047  if (pos === 0) {
6048    return 0;
6049  }
6050
6051  if (pos === 1) {
6052    return 1;
6053  }
6054
6055  if ((pos /= 0.5) < 1) {
6056    return 0.5 * Math.pow(2, 10 * (pos - 1));
6057  }
6058
6059  return 0.5 * (-Math.pow(2, -10 * --pos) + 2);
6060}
6061
6062function inCirc(pos) {
6063  return -(Math.sqrt(1 - pos * pos) - 1);
6064}
6065
6066function outCirc(pos) {
6067  return Math.sqrt(1 - Math.pow(pos - 1, 2));
6068}
6069
6070function inOutCirc(pos) {
6071  if ((pos /= 0.5) < 1) {
6072    return -0.5 * (Math.sqrt(1 - pos * pos) - 1);
6073  }
6074
6075  return 0.5 * (Math.sqrt(1 - (pos -= 2) * pos) + 1);
6076}
6077
6078function outBounce(pos) {
6079  if (pos < 1 / 2.75) {
6080    return 7.5625 * pos * pos;
6081  } else if (pos < 2 / 2.75) {
6082    return 7.5625 * (pos -= 1.5 / 2.75) * pos + 0.75;
6083  } else if (pos < 2.5 / 2.75) {
6084    return 7.5625 * (pos -= 2.25 / 2.75) * pos + 0.9375;
6085  } else {
6086    return 7.5625 * (pos -= 2.625 / 2.75) * pos + 0.984375;
6087  }
6088}
6089
6090function inBack(pos) {
6091  var s = magicSwing;
6092  return pos * pos * ((s + 1) * pos - s);
6093}
6094
6095function outBack(pos) {
6096  var s = magicSwing;
6097  return (pos -= 1) * pos * ((s + 1) * pos + s) + 1;
6098}
6099
6100function inOutBack(pos) {
6101  var s = magicSwing;
6102
6103  if ((pos /= 0.5) < 1) {
6104    return 0.5 * (pos * pos * (((s *= 1.525) + 1) * pos - s));
6105  }
6106
6107  return 0.5 * ((pos -= 2) * pos * (((s *= 1.525) + 1) * pos + s) + 2);
6108}
6109
6110function inElastic(pos) {
6111  var s = magicSwing;
6112  var p = 0;
6113  var a = 1;
6114
6115  if (pos === 0) {
6116    return 0;
6117  }
6118
6119  if (pos === 1) {
6120    return 1;
6121  }
6122
6123  if (!p) {
6124    p = 0.3;
6125  }
6126
6127  if (a < 1) {
6128    a = 1;
6129    s = p / 4;
6130  } else {
6131    s = p / (2 * Math.PI) * Math.asin(1 / a);
6132  }
6133
6134  return -(a * Math.pow(2, 10 * (pos -= 1)) * Math.sin((pos - s) * (2 * Math.PI) / p));
6135}
6136
6137function outElastic(pos) {
6138  var s = magicSwing;
6139  var p = 0;
6140  var a = 1;
6141
6142  if (pos === 0) {
6143    return 0;
6144  }
6145
6146  if (pos === 1) {
6147    return 1;
6148  }
6149
6150  if (!p) {
6151    p = 0.3;
6152  }
6153
6154  if (a < 1) {
6155    a = 1;
6156    s = p / 4;
6157  } else {
6158    s = p / (2 * Math.PI) * Math.asin(1 / a);
6159  }
6160
6161  return a * Math.pow(2, -10 * pos) * Math.sin((pos - s) * (2 * Math.PI) / p) + 1;
6162}
6163
6164function inOutElastic(pos) {
6165  var s = magicSwing;
6166  var p = 0;
6167  var a = 1;
6168
6169  if (pos === 0) {
6170    return 0;
6171  }
6172
6173  if ((pos /= 1 / 2) === 2) {
6174    return 1;
6175  }
6176
6177  if (!p) {
6178    p = 0.3 * 1.5;
6179  }
6180
6181  if (a < 1) {
6182    a = 1;
6183    s = p / 4;
6184  } else {
6185    s = p / (2 * Math.PI) * Math.asin(1 / a);
6186  }
6187
6188  if (pos < 1) {
6189    return -0.5 * (a * Math.pow(2, 10 * (pos -= 1)) * Math.sin((pos - s) * (2 * Math.PI) / p));
6190  }
6191
6192  return a * Math.pow(2, -10 * (pos -= 1)) * Math.sin((pos - s) * (2 * Math.PI) / p) * 0.5 + 1;
6193}
6194
6195function swingFromTo(pos) {
6196  var s = magicSwing;
6197  return (pos /= 0.5) < 1 ? 0.5 * (pos * pos * (((s *= 1.525) + 1) * pos - s)) : 0.5 * ((pos -= 2) * pos * (((s *= 1.525) + 1) * pos + s) + 2);
6198}
6199
6200function swingFrom(pos) {
6201  var s = magicSwing;
6202  return pos * pos * ((s + 1) * pos - s);
6203}
6204
6205function swingTo(pos) {
6206  var s = magicSwing;
6207  return (pos -= 1) * pos * ((s + 1) * pos + s) + 1;
6208}
6209
6210function bounce(pos) {
6211  if (pos < 1 / 2.75) {
6212    return 7.5625 * pos * pos;
6213  } else if (pos < 2 / 2.75) {
6214    return 7.5625 * (pos -= 1.5 / 2.75) * pos + 0.75;
6215  } else if (pos < 2.5 / 2.75) {
6216    return 7.5625 * (pos -= 2.25 / 2.75) * pos + 0.9375;
6217  } else {
6218    return 7.5625 * (pos -= 2.625 / 2.75) * pos + 0.984375;
6219  }
6220}
6221
6222function bouncePast(pos) {
6223  if (pos < 1 / 2.75) {
6224    return 7.5625 * pos * pos;
6225  } else if (pos < 2 / 2.75) {
6226    return 2 - (7.5625 * (pos -= 1.5 / 2.75) * pos + 0.75);
6227  } else if (pos < 2.5 / 2.75) {
6228    return 2 - (7.5625 * (pos -= 2.25 / 2.75) * pos + 0.9375);
6229  } else {
6230    return 2 - (7.5625 * (pos -= 2.625 / 2.75) * pos + 0.984375);
6231  }
6232}
6233
6234/***/ }),
6235/* 117 */
6236/***/ (function(module, exports) {
6237
6238/**
6239 * https://github.com/gre/bezier-easing
6240 * BezierEasing - use bezier curve for transition easing function
6241 * by Gaëtan Renaudeau 2014 - 2015 – MIT License
6242 */
6243
6244// These values are established by empiricism with tests (tradeoff: performance VS precision)
6245var NEWTON_ITERATIONS = 4;
6246var NEWTON_MIN_SLOPE = 0.001;
6247var SUBDIVISION_PRECISION = 0.0000001;
6248var SUBDIVISION_MAX_ITERATIONS = 10;
6249
6250var kSplineTableSize = 11;
6251var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);
6252
6253var float32ArraySupported = typeof Float32Array === 'function';
6254
6255function A (aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; }
6256function B (aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; }
6257function C (aA1)      { return 3.0 * aA1; }
6258
6259// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.
6260function calcBezier (aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT; }
6261
6262// Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.
6263function getSlope (aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1); }
6264
6265function binarySubdivide (aX, aA, aB, mX1, mX2) {
6266  var currentX, currentT, i = 0;
6267  do {
6268    currentT = aA + (aB - aA) / 2.0;
6269    currentX = calcBezier(currentT, mX1, mX2) - aX;
6270    if (currentX > 0.0) {
6271      aB = currentT;
6272    } else {
6273      aA = currentT;
6274    }
6275  } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);
6276  return currentT;
6277}
6278
6279function newtonRaphsonIterate (aX, aGuessT, mX1, mX2) {
6280 for (var i = 0; i < NEWTON_ITERATIONS; ++i) {
6281   var currentSlope = getSlope(aGuessT, mX1, mX2);
6282   if (currentSlope === 0.0) {
6283     return aGuessT;
6284   }
6285   var currentX = calcBezier(aGuessT, mX1, mX2) - aX;
6286   aGuessT -= currentX / currentSlope;
6287 }
6288 return aGuessT;
6289}
6290
6291module.exports = function bezier (mX1, mY1, mX2, mY2) {
6292  if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) {
6293    throw new Error('bezier x values must be in [0, 1] range');
6294  }
6295
6296  // Precompute samples table
6297  var sampleValues = float32ArraySupported ? new Float32Array(kS
6297plineTableSize) : new Array(kSplineTableSize);
6298  if (mX1 !== mY1 || mX2 !== mY2) {
6299    for (var i = 0; i < kSplineTableSize; ++i) {
6300      sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);
6301    }
6302  }
6303
6304  function getTForX (aX) {
6305    var intervalStart = 0.0;
6306    var currentSample = 1;
6307    var lastSample = kSplineTableSize - 1;
6308
6309    for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {
6310      intervalStart += kSampleStepSize;
6311    }
6312    --currentSample;
6313
6314    // Interpolate to provide an initial guess for t
6315    var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);
6316    var guessForT = intervalStart + dist * kSampleStepSize;
6317
6318    var initialSlope = getSlope(guessForT, mX1, mX2);
6319    if (initialSlope >= NEWTON_MIN_SLOPE) {
6320      return newtonRaphsonIterate(aX, guessForT, mX1, mX2);
6321    } else if (initialSlope === 0.0) {
6322      return guessForT;
6323    } else {
6324      return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);
6325    }
6326  }
6327
6328  return function BezierEasing (x) {
6329    if (mX1 === mY1 && mX2 === mY2) {
6330      return x; // linear
6331    }
6332    // Because JavaScript number are imprecise, we should guarantee the extremes are right.
6333    if (x === 0) {
6334      return 0;
6335    }
6336    if (x === 1) {
6337      return 1;
6338    }
6339    return calcBezier(getTForX(x), mY1, mY2);
6340  };
6341};
6342
6343
6344/***/ }),
6345/* 118 */
6346/***/ (function(module, exports, __webpack_require__) {
6347
6348"use strict";
6349
6350
6351var _interopRequireDefault2 = __webpack_require__(0);
6352
6353var _toConsumableArray2 = _interopRequireDefault2(__webpack_require__(119));
6354
6355var _interopRequireDefault = __webpack_require__(0);
6356
6357var _interopRequireWildcard = __webpack_require__(18);
6358
6359Object.defineProperty(exports, "__esModule", {
6360  value: true
6361});
6362exports.optimizeFloat = optimizeFloat;
6363exports.createBezierEasing = createBezierEasing;
6364exports.applyEasing = applyEasing;
6365
6366var easings = _interopRequireWildcard(__webpack_require__(116));
6367
6368var _bezierEasing = _interopRequireDefault(__webpack_require__(117));
6369
6370function optimizeFloat(value) {
6371  var digits = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 5;
6372  var base = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 10;
6373  var pow = Math.pow(base, digits);
6374
6375  var _float = Number(Math.round(value * pow) / pow);
6376
6377  return Math.abs(_float) > 0.0001 ? _float : 0;
6378}
6379
6380function createBezierEasing(easing) {
6381  return (0, _bezierEasing["default"]).apply(void 0, (0, _toConsumableArray2["default"])(easing));
6382}
6383
6384function applyEasing(easing, position, customEasingFn) {
6385  if (position === 0) {
6386    return 0;
6387  }
6388
6389  if (position === 1) {
6390    return 1;
6391  }
6392
6393  if (customEasingFn) {
6394    return optimizeFloat(position > 0 ? customEasingFn(position) : position);
6395  }
6396
6397  return optimizeFloat(position > 0 && easing && easings[easing] ? easings[easing](position) : position);
6398}
6399
6400/***/ }),
6401/* 119 */
6402/***/ (function(module, exports, __webpack_require__) {
6403
6404var arrayWithoutHoles = __webpack_require__(266);
6405
6406var iterableToArray = __webpack_require__(267);
6407
6408var nonIterableSpread = __webpack_require__(268);
6409
6410function _toConsumableArray(arr) {
6411  return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();
6412}
6413
6414module.exports = _toConsumableArray;
6415
6416/***/ }),
6417/* 120 */
6418/***/ (function(module, exports, __webpack_require__) {
6419
6420"use strict";
6421
6422
6423var _interopRequireDefault = __webpack_require__(0);
6424
6425var _defineProperty2 = _interopRequireDefault(__webpack_require__(21));
6426
6427Object.defineProperty(exports, "__esModule", {
6428  value: true
6429});
6430exports.isPluginType = isPluginType;
6431exports.clearPlugin = exports.renderPlugin = exports.createPluginInstance = exports.getPluginDestination = exports.getPluginDuration = exports.getPluginOrigin = exports.getPluginConfig = void 0;
6432
6433var _IX2LottieUtils = __webpack_require__(270);
6434
6435var _constants = __webpack_require__(4);
6436
6437var _IX2BrowserSupport = __webpack_require__(48); // eslint-disable-next-line webflow/module-top-level-imports, webflow/packages-must-be-defined
6438
6439
6440var pluginMethodMap = (0, _defineProperty2["default"])({}, _constants.ActionTypeConsts.PLUGIN_LOTTIE, {
6441  getConfig: _IX2LottieUtils.getPluginConfig,
6442  getOrigin: _IX2LottieUtils.getPluginOrigin,
6443  getDuration: _IX2LottieUtils.getPluginDuration,
6444  getDestination: _IX2LottieUtils.getPluginDestination,
6445  createInstance: _IX2LottieUtils.createPluginInstance,
6446  render: _IX2LottieUtils.renderPlugin,
6447  clear: _IX2LottieUtils.clearPlugin
6448});
6449
6450function isPluginType(actionTypeId) {
6451  return actionTypeId === _constants.ActionTypeConsts.PLUGIN_LOTTIE;
6452}
6453
6454var pluginMethod = function pluginMethod(methodName) {
6455  return function (actionTypeId) {
6456    if (!_IX2BrowserSupport.IS_BROWSER_ENV) {
6457      // IX2 plugins require browser libs for now
6458      return function () {
6459        return null;
6460      };
6461    }
6462
6463    var plugin = pluginMethodMap[actionTypeId];
6464
6465    if (!plugin) {
6466      throw new Error("IX2 no plugin configured for: ".concat(actionTypeId));
6467    }
6468
6469    var method = plugin[methodName];
6470
6471    if (!method) {
6472      throw new Error("IX2 invalid plugin method: ".concat(methodName));
6473    }
6474
6475    return method;
6476  };
6477};
6478
6479var getPluginConfig = pluginMethod('getConfig');
6480exports.getPluginConfig = getPluginConfig;
6481var getPluginOrigin = pluginMethod('getOrigin');
6482exports.getPluginOrigin = getPluginOrigin;
6483var getPluginDuration = pluginMethod('getDuration');
6484exports.getPluginDuration = getPluginDuration;
6485var getPluginDestination = pluginMethod('getDestination');
6486exports.getPluginDestination = getPluginDestination;
6487var createPluginInstance = pluginMethod('createInstance');
6488exports.createPluginInstance = createPluginInstance;
6489var renderPlugin = pluginMethod('render');
6490exports.renderPlugin = renderPlugin;
6491var clearPlugin = pluginMethod('clear');
6492exports.clearPlugin = clearPlugin;
6493
6494/***/ }),
6495/* 121 */
6496/***/ (function(module, exports, __webpack_require__) {
6497
6498var baseForOwn = __webpack_require__(122),
6499    createBaseEach = __webpack_require__(277);
6500
6501/**
6502 * The base implementation of `_.forEach` without support for iteratee shorthands.
6503 *
6504 * @private
6505 * @param {Array|Object} collection The collection to iterate over.
6506 * @param {Function} iteratee The function invoked per iteration.
6507 * @returns {Array|Object} Returns `collection`.
6508 */
6509var baseEach = createBaseEach(baseForOwn);
6510
6511module.exports = baseEach;
6512
6513
6514/***/ }),
6515/* 122 */
6516/***/ (function(module, exports, __webpack_require__) {
6517
6518var baseFor = __webpack_require__(275),
6519    keys = __webpack_require__(35);
6520
6521/**
6522 * The base implementation of `_.forOwn` without support for iteratee shorthands.
6523 *
6524 * @private
6525 * @param {Object} object The object to iterate over.
6526 * @param {Function} iteratee The function invoked per iteration.
6527 * @returns {Object} Returns `object`.
6528 */
6529function baseForOwn(object, iteratee) {
6530  return object && baseFor(object, iteratee, keys);
6531}
6532
6533module.exports = baseForOwn;
6534
6535
6536/***/ }),
6537/* 123 */
6538/***/ (function(module, exports, __webpack_require__) {
6539
6540"use strict";
6541
6542
6543var _interopRequireDefault2 = __webpack_require__(0);
6544
6545var _toConsumableArray2 = _interopRequireDefault2(__webpack_require__(119));
6546
6547var _interopRequireWildcard = __webpack_require__(18);
6548
6549var _interopRequireDefault = __webpack_require__(0);
6550
6551Object.defineProperty(exports, "__esModule", {
6552  value: true
6553});
6554exports.observeRequests = observeRequests;
6555exports.startEngine = startEngine;
6556exports.stopEngine = stopEngine;
6557exports.stopAllActionGroups = stopAllActionGroups;
6558exports.stopActionGroup = stopActionGroup;
6559exports.startActionGroup = startActionGroup;
6560
6561var _extends2 = _interopRequireDefault(__webpack_require__(30));
6562
6563var _objectWithoutPropertiesLoose2 = _interopRequireDefault(__webpack_require__(284));
6564
6565var _find = _interopRequireDefault(__webpack_require__(95));
6566
6567var _get = _interopRequireDefault(__webpack_require__(60));
6568
6569var _size = _interopRequireDefault(__webpack_require__(285));
6570
6571var _omitBy = _interopRequireDefault(__webpack_require__(291));
6572
6573var _isEmpty = _interopRequireDefault(__webpack_require__(303));
6574
6575var _mapValues = _interopRequireDefault(__webpack_require__(304));
6576
6577var _forEach = _interopRequireDefault(__webpack_require__(305));
6578
6579var _throttle = _interopRequireDefault(__webpack_require__(308));
6580
6581var _constants = __webpack_require__(4);
6582
6583var _shared = __webpack_require__(15);
6584
6585var _IX2EngineActions = __webpack_require__(65);
6586
6587var elementApi = _interopRequireWildcard(__webpack_require__(311));
6588
6589var _IX2VanillaEvents = _interopRequireDefault(__webpack_require__(312));
6590/* eslint-env browser */
6591
6592
6593var QuickEffectsIdList = Object.keys(_constants.QuickEffectIds);
6594
6595var isQuickEffect = function isQuickEffect(actionTypeId) {
6596  return QuickEffectsIdList.includes(actionTypeId);
6597};
6598
6599var _constants$IX2EngineC = _constants.IX2EngineConstants,
6600    COLON_DELIMITER = _constants$IX2EngineC.COLON_DELIMITER,
6601    BOUNDARY_SELECTOR = _constants$IX2EngineC.BOUNDARY_SELECTOR,
6602    HTML_ELEMENT = _constants$IX2EngineC.HTML_ELEMENT,
6603    RENDER_GENERAL = _constants$IX2EngineC.RENDER_GENERAL,
6604    W_MOD_IX = _constants$IX2EngineC.W_MOD_IX;
6605var _shared$IX2VanillaUti = _shared.IX2VanillaUtils,
6606    getAffectedElements = _shared$IX2VanillaUti.getAffectedElements,
6607    getElementId = _shared$IX2VanillaUti.getElementId,
6608    getDestinationValues = _shared$IX2VanillaUti.getDestinationValues,
6609    observeStore = _shared$IX2VanillaUti.observeStore,
6610    getInstanceId = _shared$IX2VanillaUti.getInstanceId,
6611    renderHTMLElement = _shared$IX2VanillaUti.renderHTMLElement,
6612    clearAllStyles = _shared$IX2VanillaUti.clearAllStyles,
6613    getMaxDurationItemIndex = _shared$IX2VanillaUti.getMaxDurationItemIndex,
6614    getComputedStyle = _shared$IX2VanillaUti.getComputedStyle,
6615    getInstanceOrigin = _shared$IX2VanillaUti.getInstanceOrigin,
6616    reduceListToGroup = _shared$IX2VanillaUti.reduceListToGroup,
6617    shouldNamespaceEventParameter = _shared$IX2VanillaUti.shouldNamespaceEventParameter,
6618    getNamespacedParameterId = _shared$IX2VanillaUti.getNamespacedParameterId,
6619    shouldAllowMediaQuery = _shared$IX2VanillaUti.shouldAllowMediaQuery,
6620    cleanupHTMLElement = _shared$IX2VanillaUti.cleanupHTMLElement,
6621    stringifyTarget = _shared$IX2VanillaUti.stringifyTarget,
6622    mediaQueriesEqual = _shared$IX2VanillaUti.mediaQueriesEqual,
6623    shallowEqual = _shared$IX2VanillaUti.shallowEqual;
6624var _shared$IX2VanillaPlu = _shared.IX2VanillaPlugins,
6625    isPluginType = _shared$IX2VanillaPlu.isPluginType,
6626    createPluginInstance = _shared$IX2VanillaPlu.createPluginInstance,
6627    getPluginDuration = _shared$IX2VanillaPlu.getPluginDuration;
6628var ua = navigator.userAgent;
6629var IS_MOBILE_SAFARI = ua.match(/iPad/i) || ua.match(/iPhone/); // Keep throttled events at ~80fps to reduce reflows while maintaining render accuracy
6630
6631var THROTTLED_EVENT_WAIT = 12; // $FlowFixMe
6632
6633function observeRequests(store) {
6634  observeStore({
6635    store: store,
6636    select: function select(_ref) {
6637      var ixRequest = _ref.ixRequest;
6638      return ixRequest.preview;
6639    },
6640    onChange: handlePreviewRequest
6641  });
6642  observeStore({
6643    store: store,
6644    select: function select(_ref2) {
6645      var ixRequest = _ref2.ixRequest;
6646      return ixRequest.playback;
6647    },
6648    onChange: handlePlaybackRequest
6649  });
6650  observeStore({
6651    store: store,
6652    select: function select(_ref3) {
6653      var ixRequest = _ref3.ixRequest;
6654      return ixRequest.stop;
6655    },
6656    onChange: handleStopRequest
6657  });
6658  observeStore({
6659    store: store,
6660    select: function select(_ref4) {
6661      var ixRequest = _ref4.ixRequest;
6662      return ixRequest.clear;
6663    },
6664    onChange: handleClearRequest
6665  });
6666}
6667
6668function observeMediaQueryChange(store) {
6669  observeStore({
6670    store: store,
6671    select: function select(_ref5) {
6672      var ixSession = _ref5.ixSession;
6673      return ixSession.mediaQueryKey;
6674    },
6675    onChange: function onChange() {
6676      stopEngine(store);
6677      clearAllStyles({
6678        store: store,
6679        elementApi: elementApi
6680      });
6681      startEngine({
6682        store: store,
6683        allowEvents: true
6684      });
6685      dispatchPageUpdateEvent();
6686    }
6687  });
6688}
6689
6690function observeOneRenderTick(store, onTick) {
6691  var unsubscribe = observeStore({
6692    store: store,
6693    select: function select(_ref6) {
6694      var ixSession = _ref6.ixSession;
6695      return ixSession.tick;
6696    },
6697    onChange: function onChange(tick) {
6698      onTick(tick);
6699      unsubscribe();
6700    }
6701  });
6702}
6703
6704function handlePreviewRequest(_ref7, store) {
6705  var rawData = _ref7.rawData,
6706      defer = _ref7.defer;
6707
6708  var start = function start() {
6709    startEngine({
6710      store: store,
6711      rawData: rawData,
6712      allowEvents: true
6713    });
6714    dispatchPageUpdateEvent();
6715  };
6716
6717  defer ? setTimeout(start, 0) : start();
6718}
6719
6720function dispatchPageUpdateEvent() {
6721  document.dispatchEvent(new CustomEvent('IX2_PAGE_UPDATE'));
6722}
6723
6724function handlePlaybackRequest(playback, store) {
6725  var actionTypeId = playback.actionTypeId,
6726      actionListId = playback.actionListId,
6727      actionItemId = playback.actionItemId,
6728      eventId = playback.eventId,
6729      allowEvents = playback.allowEvents,
6730      immediate = playback.immediate,
6731      testManual = playback.testManual,
6732      _playback$verbose = playback.verbose,
6733      verbose = _playback$verbose === void 0 ? true : _playback$verbose;
6734  var rawData = playback.rawData;
6735
6736  if (actionListId && actionItemId && rawData && immediate) {
6737    var actionList = rawData.actionLists[actionListId];
6738
6739    if (actionList) {
6740      rawData = reduceListToGroup({
6741        actionList: actionList,
6742        actionItemId: actionItemId,
6743        rawData: rawData
6744      });
6745    }
6746  }
6747
6748  startEngine({
6749    store: store,
6750    rawData: rawData,
6751    allowEvents: allowEvents,
6752    testManual: testManual
6753  });
6754
6755  if (actionListId && actionTypeId === _constants.ActionTypeConsts.GENERAL_START_ACTION || isQuickEffect(actionTypeId)) {
6756    stopActionGroup({
6757      store: store,
6758      actionListId: actionListId
6759    });
6760    renderInitialGroup({
6761      store: store,
6762      actionListId: actionListId,
6763      eventId: eventId
6764    });
6765    var started = startActionGroup({
6766      store: store,
6767      eventId: eventId,
6768      actionListId: actionListId,
6769      immediate: immediate,
6770      verbose: verbose
6771    });
6772
6773    if (verbose && started) {
6774      store.dispatch((0, _IX2EngineActions.actionListPlaybackChanged)({
6775        actionListId: actionListId,
6776        isPlaying: !immediate
6777      }));
6778    }
6779  }
6780}
6781
6782function handleStopRequest(_ref8, store) {
6783  var actionListId = _ref8.actionListId;
6784
6785  if (actionListId) {
6786    stopActionGroup({
6787      store: store,
6788      actionListId: actionListId
6789    });
6790  } else {
6791    stopAllActionGroups({
6792      store: store
6793    });
6794  }
6795
6796  stopEngine(store);
6797}
6798
6799function handleClearRequest(state, store) {
6800  stopEngine(store);
6801  clearAllStyles({
6802    store: store,
6803    elementApi: elementApi
6804  });
6805} // $FlowFixMe
6806
6807
6808function startEngine(_ref9) {
6809  var store = _ref9.store,
6810      rawData = _ref9.rawData,
6811      allowEvents = _ref9.allowEvents,
6812      testManual = _ref9.testManual;
6813
6814  var _store$getState = store.getState(),
6815      ixSession = _store$getState.ixSession;
6816
6817  if (rawData) {
6818    store.dispatch((0, _IX2EngineActions.rawDataImported)(rawData));
6819  }
6820
6821  if (!ixSession.active) {
6822    store.dispatch((0, _IX2EngineActions.sessionInitialized)({
6823      hasBoundaryNodes: Boolean(document.querySelector(BOUNDARY_SELECTOR)),
6824      reducedMotion: // $FlowFixMe - Remove this attribute on beta launch
6825      document.body.hasAttribute('data-wf-ix-vacation') && window.matchMedia('(prefers-reduced-motion)').matches
6826    }));
6827
6828    if (allowEvents) {
6829      bindEvents(store);
6830      addDocumentClass();
6831
6832      if (store.getState().ixSession.hasDefinedMediaQueries) {
6833        observeMediaQueryChange(store);
6834      }
6835    }
6836
6837    store.dispatch((0, _IX2EngineActions.sessionStarted)());
6838    startRenderLoop(store, testManual);
6839  }
6840}
6841
6842function addDocumentClass() {
6843  var _document = document,
6844      documentElement = _document.documentElement; // $FlowFixMe
6845
6846  if (documentElement.className.indexOf(W_MOD_IX) === -1) {
6847    // $FlowFixMe
6848    documentElement.className += " ".concat(W_MOD_IX);
6849  }
6850}
6851
6852function startRenderLoop(store, testManual) {
6853  var handleFrame = function handleFrame(now) {
6854    var _store$getState2 = store.getState(),
6855        ixSession = _store$getState2.ixSession,
6856        ixParameters = _store$getState2.ixParameters;
6857
6858    if (ixSession.active) {
6859      store.dispatch((0, _IX2EngineActions.animationFrameChanged)(now, ixParameters));
6860
6861      if (testManual) {
6862        observeOneRenderTick(store, handleFrame);
6863      } else {
6864        requestAnimationFrame(handleFrame);
6865      }
6866    }
6867  };
6868
6869  handleFrame(window.performance.now());
6870} // $FlowFixMe
6871
6872
6873function stopEngine(store) {
6874  var _store$getState3 = store.getState(),
6875      ixSession = _store$getState3.ixSession;
6876
6877  if (ixSession.active) {
6878    var eventListeners = ixSession.eventListeners;
6879    eventListeners.forEach(clearEventListener);
6880    store.dispatch((0, _IX2EngineActions.sessionStopped)());
6881  }
6882}
6883
6884function clearEventListener(_ref10) {
6885  var target = _ref10.target,
6886      listenerParams = _ref10.listenerParams;
6887  target.removeEventListener.apply(target, listenerParams);
6888}
6889
6890function createGroupInstances(_ref11) {
6891  var store = _ref11.store,
6892      eventStateKey = _ref11.eventStateKey,
6893      eventTarget = _ref11.eventTarget,
6894      eventId = _ref11.eventId,
6895      eventConfig = _ref11.eventConfig,
6896      actionListId = _ref11.actionListId,
6897      parameterGroup = _ref11.parameterGroup,
6898      smoothing = _ref11.smoothing,
6899      restingValue = _ref11.restingValue;
6900
6901  var _store$getState4 = store.getState(),
6902      ixData = _store$getState4.ixData,
6903      ixSession = _store$getState4.ixSession;
6904
6905  var events = ixData.events;
6906  var event = events[eventId];
6907  var eventTypeId = event.eventTypeId;
6908  var targetCache = {};
6909  var instanceActionGroups = {};
6910  var instanceConfigs = [];
6911  var continuousActionGroups = parameterGroup.continuousActionGroups;
6912  var parameterId = parameterGroup.id;
6913
6914  if (shouldNamespaceEventParameter(eventTypeId, eventConfig)) {
6915    parameterId = getNamespacedParameterId(eventStateKey, parameterId);
6916  } // Limit affected elements when event target is within a boundary node
6917
6918
6919  var eventElementRoot = ixSession.hasBoundaryNodes && eventTarget ? elementApi.getClosestElement(eventTarget, BOUNDARY_SELECTOR) : null;
6920  continuousActionGroups.forEach(function (actionGroup) {
6921    var keyframe = actionGroup.keyframe,
6922        actionItems = actionGroup.actionItems;
6923    actionItems.forEach(function (actionItem) {
6924      var actionTypeId = actionItem.actionTypeId;
6925      var target = actionItem.config.target;
6926
6927      if (!target) {
6928        return;
6929      }
6930
6931      var elementRoot = target.boundaryMode ? eventElementRoot : null;
6932      var key = stringifyTarget(target) + COLON_DELIMITER + actionTypeId;
6933      instanceActionGroups[key] = appendActionItem(instanceActionGroups[key], keyframe, actionItem);
6934
6935      if (!targetCache[key]) {
6936        targetCache[key] = true;
6937        var config = actionItem.config;
6938        getAffectedElements({
6939          config: config,
6940          event: event,
6941          eventTarget: eventTarget,
6942          elementRoot: elementRoot,
6943          elementApi: elementApi
6944        }).forEach(function (element) {
6945          instanceConfigs.push({
6946            element: element,
6947            key: key
6948          });
6949        });
6950      }
6951    });
6952  });
6953  instanceConfigs.forEach(function (_ref12) {
6954    var element = _ref12.element,
6955        key = _ref12.key;
6956    var actionGroups = instanceActionGroups[key];
6957    var actionItem = (0, _get["default"])(actionGroups, "[0].actionItems[0]", {});
6958    var actionTypeId = actionItem.actionTypeId;
6959    var pluginInstance = isPluginType(actionTypeId) ? // $FlowFixMe
6960    createPluginInstance(actionTypeId)(element, actionItem) : null;
6961    var destination = getDestinationValues({
6962      element: element,
6963      actionItem: actionItem,
6964      elementApi: elementApi
6965    }, // $FlowFixMe
6966    pluginInstance);
6967    createInstance({
6968      store: store,
6969      element: element,
6970      eventId: eventId,
6971      actionListId: actionListId,
6972      actionItem: actionItem,
6973      destination: destination,
6974      continuous: true,
6975      parameterId: parameterId,
6976      actionGroups: actionGroups,
6977      smoothing: smoothing,
6978      restingValue: restingValue,
6979      pluginInstance: pluginInstance
6980    });
6981  });
6982}
6983
6984function appendActionItem() {
6985  var actionGroups = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
6986  var keyframe = arguments.length > 1 ? arguments[1] : undefined;
6987  var actionItem = arguments.length > 2 ? arguments[2] : undefined;
6988  var newActionGroups = (0, _toConsumableArray2["default"])(actionGroups);
6989  var groupIndex;
6990  newActionGroups.some(function (group, index) {
6991    if (group.keyframe === keyframe) {
6992      groupIndex = index;
6993      return true;
6994    }
6995
6996    return false;
6997  });
6998
6999  if (groupIndex == null) {
7000    groupIndex = newActionGroups.length;
7001    newActionGroups.push({
7002      keyframe: keyframe,
7003      actionItems: []
7004    });
7005  }
7006
7007  newActionGroups[groupIndex].actionItems.push(actionItem);
7008  return newActionGroups;
7009}
7010
7011function bindEvents(store) {
7012  var _store$getState5 = store.getState(),
7013      ixData = _store$getState5.ixData;
7014
7015  var eventTypeMap = ixData.eventTypeMap;
7016  updateViewportWidth(store);
7017  (0, _forEach["default"])(eventTypeMap, function (events, key) {
7018    var logic = _IX2VanillaEvents["default"][key];
7019
7020    if (!logic) {
7021      console.warn("IX2 event type not configured: ".concat(key));
7022      return;
7023    }
7024
7025    bindEventType({
7026      logic: logic,
7027      store: store,
7028      events: events
7029    });
7030  });
7031
7032  var _store$getState6 = store.getState(),
7033      ixSession = _store$getState6.ixSession;
7034
7035  if (ixSession.eventListeners.length) {
7036    bindResizeEvents(store);
7037  }
7038}
7039
7040var WINDOW_RESIZE_EVENTS = ['resize', 'orientationchange'];
7041
7042function bindResizeEvents(store) {
7043  var handleResize = function handleResize() {
7044    updateViewportWidth(store);
7045  };
7046
7047  WINDOW_RESIZE_EVENTS.forEach(function (type) {
7048    window.addEventListener(type, handleResize);
7049    store.dispatch((0, _IX2EngineActions.eventListenerAdded)(window, [type, handleResize]));
7050  });
7051  handleResize();
7052}
7053
7054function updateViewportWidth(store) {
7055  var _store$getState7 = store.getState(),
7056      ixSession = _store$getState7.ixSession,
7057      ixData = _store$getState7.ixData;
7058
7059  var width = window.innerWidth;
7060
7061  if (width !== ixSession.viewportWidth) {
7062    var mediaQueries = ixData.mediaQueries;
7063    store.dispatch((0, _IX2EngineActions.viewportWidthChanged)({
7064      width: width,
7065      mediaQueries: mediaQueries
7066    }));
7067  }
7068}
7069
7070var mapFoundValues = function mapFoundValues(object, iteratee) {
7071  return (0, _omitBy["default"])((0, _mapValues["default"])(object, iteratee), _isEmpty["default"]);
7072};
7073
7074var forEachEventTarget = function forEachEventTarget(eventTargets, eventCallback) {
7075  (0, _forEach["default"])(eventTargets, function (elements, eventId) {
7076    elements.forEach(function (element, index) {
7077      var eventStateKey = eventId + COLON_DELIMITER + index;
7078      eventCallback(element, eventId, eventStateKey);
7079    });
7080  });
7081};
7082
7083var getAffectedForEvent = function getAffectedForEvent(event) {
7084  var config = {
7085    target: event.target,
7086    targets: event.targets
7087  };
7088  return getAffectedElements({
7089    config: config,
7090    elementApi: elementApi
7091  });
7092};
7093
7094function bindEventType(_ref13) {
7095  var logic = _ref13.logic,
7096      store = _ref13.store,
7097      events = _ref13.events;
7098  injectBehaviorCSSFixes(events);
7099  var eventTypes = logic.types,
7100      eventHandler = logic.handler;
7101
7102  var _store$getState8 = store.getState(),
7103      ixData = _store$getState8.ixData;
7104
7105  var actionLists = ixData.actionLists;
7106  var eventTargets = mapFoundValues(events, getAffectedForEvent);
7107
7108  if (!(0, _size["default"])(eventTargets)) {
7109    return;
7110  }
7111
7112  (0, _forEach["default"])(eventTargets, function (elements, key) {
7113    var event = events[key];
7114    var eventAction = event.action,
7115        eventId = event.id,
7116        _event$mediaQueries = event.mediaQueries,
7117        mediaQueries = _event$mediaQueries === void 0 ? ixData.mediaQueryKeys : _event$mediaQueries;
7118    var actionListId = eventAction.config.actionListId;
7119
7120    if (!mediaQueriesEqual(mediaQueries, ixData.mediaQueryKeys)) {
7121      store.dispatch((0, _IX2EngineActions.mediaQueriesDefined)());
7122    }
7123
7124    if (eventAction.actionTypeId === _constants.ActionTypeConsts.GENERAL_CONTINUOUS_ACTION) {
7125      var configs = Array.isArray(event.config) ? event.config : [event.config];
7126      configs.forEach(function (eventConfig) {
7127        var continuousParameterGroupId = eventConfig.continuousParameterGroupId;
7128        var paramGroups = (0, _get["default"])(actionLists, "".concat(actionListId, ".continuousParameterGroups"), []);
7129        var parameterGroup = (0, _find["default"])(paramGroups, function (_ref14) {
7130          var id = _ref14.id;
7131          return id === continuousParameterGroupId;
7132        });
7133        var smoothing = (eventConfig.smoothing || 0) / 100;
7134        var restingValue = (eventConfig.restingState || 0) / 100;
7135
7136        if (!parameterGroup) {
7137          return;
7138        }
7139
7140        elements.forEach(function (eventTarget, index) {
7141          var eventStateKey = eventId + COLON_DELIMITER + index;
7142          createGroupInstances({
7143            store: store,
7144            eventStateKey: eventStateKey,
7145            eventTarget: eventTarget,
7146            eventId: eventId,
7147            eventConfig: eventConfig,
7148            actionListId: actionListId,
7149            parameterGroup: parameterGroup,
7150            smoothing: smoothing,
7151            restingValue: restingValue
7152          });
7153        });
7154      });
7155    }
7156
7157    if (eventAction.actionTypeId === _constants.ActionTypeConsts.GENERAL_START_ACTION || isQuickEffect(eventAction.actionTypeId)) {
7158      renderInitialGroup({
7159        store: store,
7160        actionListId: actionListId,
7161        eventId: eventId
7162      });
7163    }
7164  });
7165
7166  var handleEvent = function handleEvent(nativeEvent) {
7167    var _store$getState9 = store.getState(),
7168        ixSession = _store$getState9.ixSession;
7169
7170    forEachEventTarget(eventTargets, function (element, eventId, eventStateKey) {
7171      var event = events[eventId];
7172      var oldState = ixSession.eventState[eventStateKey];
7173      var eventAction = event.action,
7174          _event$mediaQueries2 = event.mediaQueries,
7175          mediaQueries = _event$mediaQueries2 === void 0 ? ixData.mediaQueryKeys : _event$mediaQueries2; // Bypass event handler if current media query is not listed in event config
7176
7177      if (!shouldAllowMediaQuery(mediaQueries, ixSession.mediaQueryKey)) {
7178        return;
7179      }
7180
7181      var handleEventWithConfig = function handleEventWithConfig() {
7182        var eventConfig = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
7183        var newState = eventHandler({
7184          store: store,
7185          element: element,
7186          event: event,
7187          eventConfig: eventConfig,
7188          nativeEvent: nativeEvent,
7189          eventStateKey: eventStateKey
7190        }, oldState);
7191
7192        if (!shallowEqual(newState, oldState)) {
7193          store.dispatch((0, _IX2EngineActions.eventStateChanged)(eventStateKey, newState));
7194        }
7195      };
7196
7197      if (eventAction.actionTypeId === _constants.ActionTypeConsts.GENERAL_CONTINUOUS_ACTION) {
7198        var configs = Array.isArray(event.config) ? event.config : [event.config];
7199        configs.forEach(handleEventWithConfig);
7200      } else {
7201        handleEventWithConfig();
7202      }
7203    });
7204  };
7205
7206  var handleEventThrottled = (0, _throttle["default"])(handleEvent, THROTTLED_EVENT_WAIT);
7207
7208  var addListeners = function addListeners(_ref15) {
7209    var _ref15$target = _ref15.target,
7210        target = _ref15$target === void 0 ? document : _ref15$target,
7211        types = _ref15.types,
7212        shouldThrottle = _ref15.throttle;
7213    types.split(' ').filter(Boolean).forEach(function (type) {
7214      var handlerFunc = shouldThrottle ? handleEventThrottled : handleEvent; // $FlowFixMe
7215
7216      target.addEventListener(type, handlerFunc);
7217      store.dispatch((0, _IX2EngineActions.eventListenerAdded)(target, [type, handlerFunc]));
7218    });
7219  };
7220
7221  if (Array.isArray(eventTypes)) {
7222    eventTypes.forEach(addListeners);
7223  } else if (typeof eventTypes === 'string') {
7224    addListeners(logic);
7225  }
7226}
7227/**
7228 * Injects CSS into the document to fix behavior issues across
7229 * different devices.
7230 */
7231
7232
7233function injectBehaviorCSSFixes(events) {
7234  if (!IS_MOBILE_SAFARI) {
7235    return;
7236  }
7237
7238  var injectedSelectors = {};
7239  var cssText = '';
7240
7241  for (var eventId in events) {
7242    var _events$eventId = events[eventId],
7243        eventTypeId = _events$eventId.eventTypeId,
7244        target = _events$eventId.target;
7245    var selector = elementApi.getQuerySelector(target); // $FlowFixMe
7246
7247    if (injectedSelectors[selector]) {
7248      continue;
7249    } // add a "cursor: pointer" style rule to ensure that CLICK events get fired for IOS devices
7250
7251
7252    if (eventTypeId === _constants.EventTypeConsts.MOUSE_CLICK || eventTypeId === _constants.EventTypeConsts.MOUSE_SECOND_CLICK) {
7253      // $FlowFixMe
7254      injectedSelectors[selector] = true;
7255      cssText += // $FlowFixMe
7256      selector + '{' + 'cursor: pointer;' + 'touch-action: manipulation;' + '}';
7257    }
7258  }
7259
7260  if (cssText) {
7261    var style = document.createElement('style');
7262    style.textContent = cssText; // $FlowFixMe
7263
7264    document.body.appendChild(style);
7265  }
7266}
7267
7268function renderInitialGroup(_ref16) {
7269  var store = _ref16.store,
7270      actionListId = _ref16.actionListId,
7271      eventId = _ref16.eventId;
7272
7273  var _store$getState10 = store.getState(),
7274      ixData = _store$getState10.ixData,
7275      ixSession = _store$getState10.ixSession;
7276
7277  var actionLists = ixData.actionLists,
7278      events = ixData.events;
7279  var event = events[eventId];
7280  var actionList = actionLists[actionListId];
7281
7282  if (actionList && actionList.useFirstGroupAsInitialState) {
7283    var initialStateItems = (0, _get["default"])(actionList, 'actionItemGroups[0].actionItems', []); // Bypass initial state render if current media query is not listed in event config
7284
7285    var mediaQueries = (0, _get["default"])(event, 'mediaQueries', ixData.mediaQueryKeys);
7286
7287    if (!shouldAllowMediaQuery(mediaQueries, ixSession.mediaQueryKey)) {
7288      return;
7289    }
7290
7291    initialStateItems.forEach(function (actionItem) {
7292      var _itemConfig$target;
7293
7294      var itemConfig = actionItem.config,
7295          actionTypeId = actionItem.actionTypeId;
7296      var config = // When useEventTarget is explicitly true, use event target/targets to query elements
7297      (itemConfig === null || itemConfig === void 0 ? void 0 : (_itemConfig$target = itemConfig.target) === null || _itemConfig$target === void 0 ? void 0 : _itemConfig$target.useEventTarget) === true ? {
7298        target: event.target,
7299        targets: event.targets
7300      } : itemConfig;
7301      var itemElements = getAffectedElements({
7302        config: config,
7303        event: event,
7304        elementApi: elementApi
7305      });
7306      var shouldUsePlugin = isPluginType(actionTypeId);
7307      itemElements.forEach(function (element) {
7308        var pluginInstance = shouldUsePlugin ? // $FlowFixMe
7309        createPluginInstance(actionTypeId)(element, actionItem) : null;
7310        createInstance({
7311          destination: getDestinationValues({
7312            element: element,
7313            actionItem: actionItem,
7314            elementApi: elementApi
7315          }, // $FlowFixMe
7316          pluginInstance),
7317          immediate: true,
7318          store: store,
7319          element: element,
7320          eventId: eventId,
7321          actionItem: actionItem,
7322          actionListId: actionListId,
7323          pluginInstance: pluginInstance
7324        });
7325      });
7326    });
7327  }
7328} // $FlowFixMe
7329
7330
7331function stopAllActionGroups(_ref17) {
7332  var store = _ref17.store;
7333
7334  var _store$getState11 = store.getState(),
7335      ixInstances = _store$getState11.ixInstances;
7336
7337  (0, _forEach["default"])(ixInstances, function (instance) {
7338    if (!instance.continuous) {
7339      var actionListId = instance.actionListId,
7340          verbose = instance.verbose;
7341      removeInstance(instance, store);
7342
7343      if (verbose) {
7344        store.dispatch((0, _IX2EngineActions.actionListPlaybackChanged)({
7345          actionListId: actionListId,
7346          isPlaying: false
7347        }));
7348      }
7349    }
7350  });
7351} // $FlowFixMe
7352
7353
7354function stopActionGroup(_ref18) {
7355  var store = _ref18.store,
7356      eventId = _ref18.eventId,
7357      eventTarget = _ref18.eventTarget,
7358      eventStateKey = _ref18.eventStateKey,
7359      actionListId = _ref18.actionListId;
7360
7361  var _store$getState12 = store.getState(),
7362      ixInstances = _store$getState12.ixInstances,
7363      ixSession = _store$getState12.ixSession; // Check for element boundary before stopping engine instances
7364
7365
7366  var eventElementRoot = ixSession.hasBoundaryNodes && eventTarget ? elementApi.getClosestElement(eventTarget, BOUNDARY_SELECTOR) : null;
7367  (0, _forEach["default"])(ixInstances, function (instance) {
7368    var boundaryMode = (0, _get["default"])(instance, 'actionItem.config.target.boundaryMode'); // Validate event key if eventStateKey was provided, otherwise default to true
7369
7370    var validEventKey = eventStateKey ? instance.eventStateKey === eventStateKey : true; // Remove engine instances that match the required ids
7371
7372    if (instance.actionListId === actionListId && instance.eventId === eventId && validEventKey) {
7373      // Avoid removal when root boundary does not contain instance element
7374      if (eventElementRoot && boundaryMode && !elementApi.elementContains(eventElementRoot, instance.element)) {
7375        return;
7376      }
7377
7378      removeInstance(instance, store);
7379
7380      if (instance.verbose) {
7381        store.dispatch((0, _IX2EngineActions.actionListPlaybackChanged)({
7382          actionListId: actionListId,
7383          isPlaying: false
7384        }));
7385      }
7386    }
7387  });
7388} // $FlowFixMe
7389
7390
7391function startActionGroup(_ref19) {
7392  var store = _ref19.store,
7393      eventId = _ref19.eventId,
7394      eventTarget = _ref19.eventTarget,
7395      eventStateKey = _ref19.eventStateKey,
7396      actionListId = _ref19.actionListId,
7397      _ref19$groupIndex = _ref19.groupIndex,
7398      groupIndex = _ref19$groupIndex === void 0 ? 0 : _ref19$groupIndex,
7399      immediate = _ref19.immediate,
7400      verbose = _ref19.verbose;
7401
7402  var _event$action;
7403
7404  var _store$getState13 = store.getState(),
7405      ixData = _store$getState13.ixData,
7406      ixSession = _store$getState13.ixSession;
7407
7408  var events = ixData.events;
7409  var event = events[eventId] || {};
7410  var _event$mediaQueries3 = event.mediaQueries,
7411      mediaQueries = _event$mediaQueries3 === void 0 ? ixData.mediaQueryKeys : _event$mediaQueries3;
7412  var actionList = (0, _get["default"])(ixData, "actionLists.".concat(actionListId), {});
7413  var actionItemGroups = actionList.actionItemGroups,
7414      useFirstGroupAsInitialState = actionList.useFirstGroupAsInitialState; // Abort playback if no action groups
7415
7416  if (!actionItemGroups || !actionItemGroups.length) {
7417    return false;
7418  } // Reset to first group when event loop is configured
7419
7420
7421  if (groupIndex >= actionItemGroups.length && (0, _get["default"])(event, 'config.loop')) {
7422    groupIndex = 0;
7423  } // Skip initial state group during action list playback, as it should already be applied
7424
7425
7426  if (groupIndex === 0 && useFirstGroupAsInitialState) {
7427    groupIndex++;
7428  } // Identify first animated group and apply the initial QuickEffect delay
7429
7430
7431  var isFirstGroup = groupIndex === 0 || groupIndex === 1 && useFirstGroupAsInitialState;
7432  var instanceDelay = isFirstGroup && isQuickEffect((_event$action = event.action) === null || _event$action === void 0 ? void 0 : _event$action.actionTypeId) ? event.config.delay : undefined; // Abort playback if no action items exist at group index
7433
7434  var actionItems = (0, _get["default"])(actionItemGroups, [groupIndex, 'actionItems'], []);
7435
7436  if (!actionItems.length) {
7437    return false;
7438  } // Abort playback if current media query is not listed in event config
7439
7440
7441  if (!shouldAllowMediaQuery(mediaQueries, ixSession.mediaQueryKey)) {
7442    return false;
7443  } // Limit affected elements when event target is within a boundary node
7444
7445
7446  var eventElementRoot = ixSession.hasBoundaryNodes && eventTarget ? elementApi.getClosestElement(eventTarget, BOUNDARY_SELECTOR) : null;
7447  var carrierIndex = getMaxDurationItemIndex(actionItems);
7448  var groupStartResult = false;
7449  actionItems.forEach(function (actionItem, actionIndex) {
7450    var config = actionItem.config,
7451        actionTypeId = actionItem.actionTypeId;
7452    var shouldUsePlugin = isPluginType(actionTypeId);
7453    var target = config.target;
7454
7455    if (!target) {
7456      return;
7457    }
7458
7459    var elementRoot = target.boundaryMode ? eventElementRoot : null;
7460    var elements = getAffectedElements({
7461      config: config,
7462      event: event,
7463      eventTarget: eventTarget,
7464      elementRoot: elementRoot,
7465      elementApi: elementApi
7466    });
7467    elements.forEach(function (element, elementIndex) {
7468      var pluginInstance = shouldUsePlugin ? // $FlowFixMe
7469      createPluginInstance(actionTypeId)(element, actionItem) : null;
7470      var pluginDuration = shouldUsePlugin ? // $FlowFixMe
7471      getPluginDuration(actionTypeId)(element, actionItem) : null;
7472      groupStartResult = true;
7473      var isCarrier = carrierIndex === actionIndex && elementIndex === 0;
7474      var computedStyle = getComputedStyle({
7475        element: element,
7476        actionItem: actionItem
7477      });
7478      var destination = getDestinationValues({
7479        element: element,
7480        actionItem: actionItem,
7481        elementApi: elementApi
7482      }, // $FlowFixMe
7483      pluginInstance);
7484      createInstance({
7485        store: store,
7486        element: element,
7487        actionItem: actionItem,
7488        eventId: eventId,
7489        eventTarget: eventTarget,
7490        eventStateKey: eventStateKey,
7491        actionListId: actionListId,
7492        groupIndex: groupIndex,
7493        isCarrier: isCarrier,
7494        computedStyle: computedStyle,
7495        destination: destination,
7496        immediate: immediate,
7497        verbose: verbose,
7498        pluginInstance: pluginInstance,
7499        pluginDuration: pluginDuration,
7500        instanceDelay: instanceDelay
7501      });
7502    });
7503  });
7504  return groupStartResult;
7505}
7506
7507function createInstance(options) {
7508  var _ixData$events$eventI; // $FlowFixMe
7509
7510
7511  var store = options.store,
7512      computedStyle = options.computedStyle,
7513      rest = (0, _objectWithoutPropertiesLoose2["default"])(options, ["store", "computedStyle"]);
7514  var element = rest.element,
7515      actionItem = rest.actionItem,
7516      immediate = rest.immediate,
7517      pluginInstance = rest.pluginInstance,
7518      continuous = rest.continuous,
7519      restingValue = rest.restingValue,
7520      eventId = rest.eventId;
7521  var autoStart = !continuous;
7522  var instanceId = getInstanceId();
7523
7524  var _store$getState14 = store.getState(),
7525      ixElements = _store$getState14.ixElements,
7526      ixSession = _store$getState14.ixSession,
7527      ixData = _store$getState14.ixData;
7528
7529  var elementId = getElementId(ixElements, element);
7530
7531  var _ref20 = ixElements[elementId] || {},
7532      refState = _ref20.refState;
7533
7534  var refType = elementApi.getRefType(element);
7535  var skipMotion = ixSession.reducedMotion && _constants.ReducedMotionTypes[actionItem.actionTypeId];
7536  var skipToValue;
7537
7538  if (skipMotion && continuous) {
7539    switch ((_ixData$events$eventI = ixData.events[eventId]) === null || _ixData$events$eventI === void 0 ? void 0 : _ixData$events$eventI.eventTypeId) {
7540      case _constants.EventTypeConsts.MOUSE_MOVE:
7541      case _constants.EventTypeConsts.MOUSE_MOVE_IN_VIEWPORT:
7542        skipToValue = restingValue;
7543        break;
7544
7545      default:
7546        skipToValue = 0.5;
7547        break;
7548    }
7549  }
7550
7551  var origin = getInstanceOrigin(element, refState, computedStyle, actionItem, elementApi, // $FlowFixMe
7552  pluginInstance);
7553  store.dispatch((0, _IX2EngineActions.instanceAdded)((0, _extends2["default"])({
7554    instanceId: instanceId,
7555    elementId: elementId,
7556    origin: origin,
7557    refType: refType,
7558    skipMotion: skipMotion,
7559    skipToValue: skipToValue
7560  }, rest)));
7561  dispatchCustomEvent(document.body, 'ix2-animation-started', instanceId);
7562
7563  if (immediate) {
7564    renderImmediateInstance(store, instanceId);
7565    return;
7566  }
7567
7568  observeStore({
7569    store: store,
7570    select: function select(_ref21) {
7571      var ixInstances = _ref21.ixInstances;
7572      return ixInstances[instanceId];
7573    },
7574    onChange: handleInstanceChange
7575  });
7576
7577  if (autoStart) {
7578    store.dispatch((0, _IX2EngineActions.instanceStarted)(instanceId, ixSession.tick));
7579  }
7580}
7581
7582function removeInstance(instance, store) {
7583  dispatchCustomEvent(document.body, 'ix2-animation-stopping', {
7584    instanceId: instance.id,
7585    state: store.getState()
7586  });
7587  var elementId = instance.elementId,
7588      actionItem = instance.actionItem;
7589
7590  var _store$getState15 = store.getState(),
7591      ixElements = _store$getState15.ixElements;
7592
7593  var _ref22 = ixElements[elementId] || {},
7594      ref = _ref22.ref,
7595      refType = _ref22.refType;
7596
7597  if (refType === HTML_ELEMENT) {
7598    cleanupHTMLElement(ref, actionItem, elementApi);
7599  }
7600
7601  store.dispatch((0, _IX2EngineActions.instanceRemoved)(instance.id));
7602}
7603
7604function dispatchCustomEvent(element, eventName, detail) {
7605  var event = document.createEvent('CustomEvent');
7606  event.initCustomEvent(eventName, true, true, detail); // $FlowFixMe
7607
7608  element.dispatchEvent(event);
7609}
7610
7611function renderImmediateInstance(store, instanceId) {
7612  var _store$getState16 = store.getState(),
7613      ixParameters = _store$getState16.ixParameters;
7614
7615  store.dispatch((0, _IX2EngineActions.instanceStarted)(instanceId, 0));
7616  store.dispatch((0, _IX2EngineActions.animationFrameChanged)(performance.now(), ixParameters));
7617
7618  var _store$getState17 = store.getState(),
7619      ixInstances = _store$getState17.ixInstances;
7620
7621  handleInstanceChange(ixInstances[instanceId], store);
7622}
7623
7624function handleInstanceChange(instance, store) {
7625  var active = instance.active,
7626      continuous = instance.continuous,
7627      complete = instance.complete,
7628      elementId = instance.elementId,
7629      actionItem = instance.actionItem,
7630      actionTypeId = instance.actionTypeId,
7631      renderType = instance.renderType,
7632      current = instance.current,
7633      groupIndex = instance.groupIndex,
7634      eventId = instance.eventId,
7635      eventTarget = instance.eventTarget,
7636      eventStateKey = instance.eventStateKey,
7637      actionListId = instance.actionListId,
7638      isCarrier = instance.isCarrier,
7639      styleProp = instance.styleProp,
7640      verbose = instance.verbose,
7641      pluginInstance = instance.pluginInstance; // Bypass render if current media query is not listed in event config
7642
7643  var _store$getState18 = store.getState(),
7644      ixData = _store$getState18.ixData,
7645      ixSession = _store$getState18.ixSession;
7646
7647  var events = ixData.events;
7648  var event = events[eventId] || {};
7649  var _event$mediaQueries4 = event.mediaQueries,
7650      mediaQueries = _event$mediaQueries4 === void 0 ? ixData.mediaQueryKeys : _event$mediaQueries4;
7651
7652  if (!shouldAllowMediaQuery(mediaQueries, ixSession.mediaQueryKey)) {
7653    return;
7654  }
7655
7656  if (continuous || active || complete) {
7657    if (current || renderType === RENDER_GENERAL && complete) {
7658      // Render current values to ref state and grab latest
7659      store.dispatch((0, _IX2EngineActions.elementStateChanged)(elementId, actionTypeId, current, actionItem));
7660
7661      var _store$getState19 = store.getState(),
7662          ixElements = _store$getState19.ixElements;
7663
7664      var _ref23 = ixElements[elementId] || {},
7665          ref = _ref23.ref,
7666          refType = _ref23.refType,
7667          refState = _ref23.refState;
7668
7669      var actionState = refState && refState[actionTypeId]; // Choose render based on ref type
7670
7671      switch (refType) {
7672        case HTML_ELEMENT:
7673          {
7674            renderHTMLElement(ref, refState, actionState, eventId, actionItem, styleProp, elementApi, renderType, pluginInstance);
7675            break;
7676          }
7677      }
7678    }
7679
7680    if (complete) {
7681      if (isCarrier) {
7682        var started = startActionGroup({
7683          store: store,
7684          eventId: eventId,
7685          eventTarget: eventTarget,
7686          eventStateKey: eventStateKey,
7687          actionListId: actionListId,
7688          groupIndex: groupIndex + 1,
7689          verbose: verbose
7690        });
7691
7692        if (verbose && !started) {
7693          store.dispatch((0, _IX2EngineActions.actionListPlaybackChanged)({
7694            actionListId: actionListId,
7695            isPlaying: false
7696          }));
7697        }
7698      }
7699
7700      removeInstance(instance, store);
7701    }
7702  }
7703}
7704
7705/***/ }),
7706/* 124 */
7707/***/ (function(module, exports, __webpack_require__) {
7708
7709var defineProperty = __webpack_require__(125);
7710
7711/**
7712 * The base implementation of `assignValue` and `assignMergeValue` without
7713 * value checks.
7714 *
7715 * @private
7716 * @param {Object} object The object to modify.
7717 * @param {string} key The key of the property to assign.
7718 * @param {*} value The value to assign.
7719 */
7720function baseAssignValue(object, key, value) {
7721  if (key == '__proto__' && defineProperty) {
7722    defineProperty(object, key, {
7723      'configurable': true,
7724      'enumerable': true,
7725      'value': value,
7726      'writable': true
7727    });
7728  } else {
7729    object[key] = value;
7730  }
7731}
7732
7733module.exports = baseAssignValue;
7734
7735
7736/***/ }),
7737/* 125 */
7738/***/ (function(module, exports, __webpack_require__) {
7739
7740var getNative = __webpack_require__(11);
7741
7742var defineProperty = (function() {
7743  try {
7744    var func = getNative(Object, 'defineProperty');
7745    func({}, '', {});
7746    return func;
7747  } catch (e) {}
7748}());
7749
7750module.exports = defineProperty;
7751
7752
7753/***/ }),
7754/* 126 */
7755/***/ (function(module, exports, __webpack_require__) {
7756
7757var isObject = __webpack_require__(8);
7758
7759/** Built-in value references. */
7760var objectCreate = Object.create;
7761
7762/**
7763 * The base implementation of `_.create` without support for assigning
7764 * properties to the created object.
7765 *
7766 * @private
7767 * @param {Object} proto The object to inherit from.
7768 * @returns {Object} Returns the new object.
7769 */
7770var baseCreate = (function() {
7771  function object() {}
7772  return function(proto) {
7773    if (!isObject(proto)) {
7774      return {};
7775    }
7776    if (objectCreate) {
7777      return objectCreate(proto);
7778    }
7779    object.prototype = proto;
7780    var result = new object;
7781    object.prototype = undefined;
7782    return result;
7783  };
7784}());
7785
7786module.exports = baseCreate;
7787
7788
7789/***/ }),
7790/* 127 */
7791/***/ (function(module, exports, __webpack_require__) {
7792
7793var metaMap = __webpack_require__(325),
7794    noop = __webpack_require__(326);
7795
7796/**
7797 * Gets metadata for `func`.
7798 *
7799 * @private
7800 * @param {Function} func The function to query.
7801 * @returns {*} Returns the metadata for `func`.
7802 */
7803var getData = !metaMap ? noop : function(func) {
7804  return metaMap.get(func);
7805};
7806
7807module.exports = getData;
7808
7809
7810/***/ }),
7811/* 128 */
7812/***/ (function(module, exports, __webpack_require__) {
7813
7814var realNames = __webpack_require__(327);
7815
7816/** Used for built-in method references. */
7817var objectProto = Object.prototype;
7818
7819/** Used to check objects for own properties. */
7820var hasOwnProperty = objectProto.hasOwnProperty;
7821
7822/**
7823 * Gets the name of `func`.
7824 *
7825 * @private
7826 * @param {Function} func The function to query.
7827 * @returns {string} Returns the function name.
7828 */
7829function getFuncName(func) {
7830  var result = (func.name + ''),
7831      array = realNames[result],
7832      length = hasOwnProperty.call(realNames, result) ? array.length : 0;
7833
7834  while (length--) {
7835    var data = array[length],
7836        otherFunc = data.func;
7837    if (otherFunc == null || otherFunc == func) {
7838      return data.name;
7839    }
7840  }
7841  return result;
7842}
7843
7844module.exports = getFuncName;
7845
7846
7847/***/ }),
7848/* 129 */
7849/***/ (function(module, exports, __webpack_require__) {
7850
7851__webpack_require__(130);
7852__webpack_require__(131);
7853__webpack_require__(132);
7854__webpack_require__(134);
7855__webpack_require__(135);
7856__webpack_require__(136);
7857__webpack_require__(137);
7858__webpack_require__(39);
7859__webpack_require__(139);
7860__webpack_require__(334);
7861__webpack_require__(335);
7862__webpack_require__(336);
7863__webpack_require__(337);
7864__webpack_require__(342);
7865module.exports = __webpack_require__(343);
7866
7867
7868/***/ }),
7869/* 130 */
7870/***/ (function(module, exports, __webpack_require__) {
7871
7872"use strict";
7873 // @wf-will-never-add-flow-to-this-file
7874
7875/*
7876 global
7877 window, document, Event
7878*/
7879
7880/*----------------------------------------
7881 * objectFitPolyfill 2.3.0
7882 *
7883 * Basic, no-frills version -
7884 * Defaults to object-fit: cover and object-position: 50% 50%
7885 *
7886 * Made by Constance Chen
7887 * Released under the MIT license
7888 *
7889 * https://github.com/constancecchen/object-fit-polyfill
7890 *--------------------------------------*/
7891
7892var _interopRequireDefault = __webpack_require__(0);
7893
7894var _typeof2 = _interopRequireDefault(__webpack_require__(13));
7895
7896(function () {
7897  // if the page is being rendered on the server, don't continue
7898  if (typeof window === 'undefined') return; // Workaround for Edge 16+, which only implemented object-fit for <img> tags
7899  // TODO: Keep an eye on Edge to determine which version has full final support
7900
7901  var edgeVersion = window.navigator.userAgent.match(/Edge\/(\d{2})\./);
7902  var edgePartialSupport = edgeVersion ? parseInt(edgeVersion[1], 10) >= 16 : false; // If the browser does support object-fit, we don't need to continue
7903
7904  var hasSupport = 'objectFit' in document.documentElement.style !== false;
7905
7906  if (hasSupport && !edgePartialSupport) {
7907    window.objectFitPolyfill = function () {
7908      return false;
7909    };
7910
7911    return;
7912  }
7913  /**
7914   * Check the container's parent element to make sure it will
7915   * correctly handle and clip absolutely positioned children
7916   *
7917   * @param {node} $container - parent element
7918   */
7919
7920
7921  var checkParentContainer = function checkParentContainer($container) {
7922    var styles = window.getComputedStyle($container, null);
7923    var position = styles.getPropertyValue('position');
7924    var overflow = styles.getPropertyValue('overflow');
7925    var display = styles.getPropertyValue('display');
7926
7927    if (!position || position === 'static') {
7928      $container.style.position = 'relative';
7929    }
7930
7931    if (overflow !== 'hidden') {
7932      $container.style.overflow = 'hidden';
7933    } // Guesstimating that people want the parent to act like full width/height wrapper here.
7934    // Mostly attempts to target <picture> elements, which default to inline.
7935
7936
7937    if (!display || display === 'inline') {
7938      $container.style.display = 'block';
7939    }
7940
7941    if ($container.clientHeight === 0) {
7942      $container.style.height = '100%';
7943    } // Add a CSS class hook, in case people need to override styles for any reason.
7944
7945
7946    if ($container.className.indexOf('object-fit-polyfill') === -1) {
7947      $container.className += ' object-fit-polyfill';
7948    }
7949  };
7950  /**
7951   * Check for pre-set max-width/height, min-width/height,
7952   * positioning, or margins, which can mess up image calculations
7953   *
7954   * @param {node} $media - img/video element
7955   */
7956
7957
7958  var checkMediaProperties = function checkMediaProperties($media) {
7959    var styles = window.getComputedStyle($media, null);
7960    var constraints = {
7961      'max-width': 'none',
7962      'max-height': 'none',
7963      'min-width': '0px',
7964      'min-height': '0px',
7965      top: 'auto',
7966      right: 'auto',
7967      bottom: 'auto',
7968      left: 'auto',
7969      'margin-top': '0px',
7970      'margin-right': '0px',
7971      'margin-bottom': '0px',
7972      'margin-left': '0px'
7973    };
7974
7975    for (var property in constraints) {
7976      var constraint = styles.getPropertyValue(property);
7977
7978      if (constraint !== constraints[property]) {
7979        $media.style[property] = constraints[property];
7980      }
7981    }
7982  };
7983  /**
7984   * Calculate & set object-fit
7985   *
7986   * @param {node} $media - img/video/picture element
7987   */
7988
7989
7990  var objectFit = function objectFit($media) {
7991    // If necessary, make the parent container work with absolutely positioned elements
7992    var $container = $media.parentNode;
7993    checkParentContainer($container); // Check for any pre-set CSS which could mess up image calculations
7994
7995    checkMediaProperties($media); // Mathematically figure out which side needs covering, and add CSS positioning & centering
7996
7997    $media.style.position = 'absolute';
7998    $media.style.height = '100%';
7999    $media.style.width = 'auto';
8000
8001    if ($media.clientWidth > $container.clientWidth) {
8002      $media.style.top = '0';
8003      $media.style.marginTop = '0';
8004      $media.style.left = '50%';
8005      $media.style.marginLeft = $media.clientWidth / -2 + 'px';
8006    } else {
8007      $media.style.width = '100%';
8008      $media.style.height = 'auto';
8009      $media.style.left = '0';
8010      $media.style.marginLeft = '0';
8011      $media.style.top = '50%';
8012      $media.style.marginTop = $media.clientHeight / -2 + 'px';
8013    }
8014  };
8015  /**
8016   * Initialize plugin
8017   *
8018   * @param {node} media - Optional specific DOM node(s) to be polyfilled
8019   */
8020
8021
8022  var objectFitPolyfill = function objectFitPolyfill(media) {
8023    if (typeof media === 'undefined' || media instanceof Event) {
8024      // If left blank, or a default event, all media on the page will be polyfilled.
8025      media = document.querySelectorAll('[data-object-fit]');
8026    } else if (media && media.nodeName) {
8027      // If it's a single node, wrap it in an array so it works.
8028      media = [media];
8029    } else if ((0, _typeof2["default"])(media) === 'object' && media.length && media[0].nodeName) {
8030      // If it's an array of DOM nodes (e.g. a jQuery selector), it's fine as-is.
8031      // eslint-disable-next-line no-self-assign
8032      media = media;
8033    } else {
8034      // Otherwise, if it's invalid or an incorrect type, return false to let people know.
8035      return false;
8036    }
8037
8038    for (var i = 0; i < media.length; i++) {
8039      if (!media[i].nodeName) continue;
8040      var mediaType = media[i].nodeName.toLowerCase();
8041
8042      if (mediaType === 'img') {
8043        if (edgePartialSupport) continue; // Edge supports object-fit for images (but nothing else), so no need to polyfill
8044
8045        if (media[i].complete) {
8046          objectFit(media[i]);
8047        } else {
8048          media[i].addEventListener('load', function () {
8049            objectFit(this);
8050          });
8051        }
8052      } else if (mediaType === 'video') {
8053        if (media[i].readyState > 0) {
8054          objectFit(media[i]);
8055        } else {
8056          media[i].addEventListener('loadedmetadata', function () {
8057            objectFit(this);
8058          });
8059        }
8060      } else {
8061        objectFit(media[i]);
8062      }
8063    }
8064
8065    return true;
8066  };
8067
8068  if (document.readyState === 'loading') {
8069    // Loading hasn't finished yet
8070    document.addEventListener('DOMContentLoaded', objectFitPolyfill);
8071  } else {
8072    // `DOMContentLoaded` has already fired
8073    objectFitPolyfill();
8074  }
8075
8076  window.addEventListener('resize', objectFitPolyfill);
8077  window.objectFitPolyfill = objectFitPolyfill;
8078})();
8079
8080/***/ }),
8081/* 131 */
8082/***/ (function(module, exports, __webpack_require__) {
8083
8084"use strict";
8085 // @wf-will-never-add-flow-to-this-file
8086
8087/*
8088  global
8089  window, document, $, Webflow
8090*/
8091
8092(function () {
8093  // if the page is being rendered on the server, don't continue
8094  if (typeof window === 'undefined') return;
8095
8096  function setAllBackgroundVideoStates(shouldPlay) {
8097    if (Webflow.env('design')) {
8098      return;
8099    } // 1. set every video
8100
8101
8102    $('video').each(function () {
8103      shouldPlay && $(this).prop('autoplay') ? this.play() : this.pause();
8104    }); // 2. set every video controller button
8105
8106    $('.w-background-video--control').each(function () {
8107      if (shouldPlay) {
8108        showPauseButton($(this));
8109      } else {
8110        showPlayButton($(this));
8111      }
8112    });
8113  }
8114
8115  function showPlayButton($btn) {
8116    $btn.find('> span').each(function (i) {
8117      $(this).prop('hidden', function () {
8118        return i === 0;
8119      });
8120    });
8121  }
8122
8123  function showPauseButton($btn) {
8124    $btn.find('> span').each(function (i) {
8125      $(this).prop('hidden', function () {
8126        return i === 1;
8127      });
8128    });
8129  }
8130
8131  $(document).ready(function () {
8132    var watcher = window.matchMedia('(prefers-reduced-motion: reduce)'); // respond to changing preferences
8133
8134    watcher.addEventListener('change', function (e) {
8135      setAllBackgroundVideoStates(!e.matches);
8136    });
8137
8138    if (watcher.matches) {
8139      // user currently prefers reduced motion, pause all immediately
8140      setAllBackgroundVideoStates(false);
8141    } // show play button for videos without autoplay
8142
8143
8144    $('video:not([autoplay])').each(function () {
8145      $(this).parent().find('.w-background-video--control').each(function () {
8146        showPlayButton($(this));
8147      });
8148    });
8149    $(document).on('click', '.w-background-video--control', function (e) {
8150      if (Webflow.env('design')) return;
8151      var btn = $(e.currentTarget);
8152      var video = $("video#".concat(btn.attr('aria-controls'))).get(0);
8153      if (!video) return;
8154
8155      if (video.paused) {
8156        var play = video.play();
8157        showPauseButton(btn); // IE does not return a promise from .play()
8158
8159        if (play && typeof play["catch"] === 'function') {
8160          play["catch"](function () {
8161            // something went wrong and it's not playing
8162            showPlayButton(btn);
8163          });
8164        }
8165      } else {
8166        video.pause();
8167        showPlayButton(btn);
8168      }
8169    });
8170  });
8171})();
8172
8173/***/ }),
8174/* 132 */
8175/***/ (function(module, exports, __webpack_require__) {
8176
8177"use strict";
8178 // @wf-will-never-add-flow-to-this-file
8179
8180/* globals document, window, navigator */
8181
8182/* eslint-disable no-var */
8183
8184/**
8185 * Webflow: Brand pages on the subdomain
8186 */
8187
8188var Webflow = __webpack_require__(3);
8189
8190Webflow.define('brand', module.exports = function ($) {
8191  var api = {};
8192  var doc = document;
8193  var $html = $('html');
8194  var $body = $('body');
8195  var namespace = '.w-webflow-badge';
8196  var location = window.location;
8197  var isPhantom = /PhantomJS/i.test(navigator.userAgent);
8198  var fullScreenEvents = 'fullscreenchange webkitfullscreenchange mozfullscreenchange msfullscreenchange';
8199  var brandElement; // -----------------------------------
8200  // Module methods
8201
8202  api.ready = function () {
8203    var shouldBrand = $html.attr('data-wf-status');
8204    var publishedDomain = $html.attr('data-wf-domain') || '';
8205
8206    if (/\.webflow\.io$/i.test(publishedDomain) && location.hostname !== publishedDomain) {
8207      shouldBrand = true;
8208    }
8209
8210    if (shouldBrand && !isPhantom) {
8211      brandElement = brandElement || createBadge();
8212      ensureBrand();
8213      setTimeout(ensureBrand, 500);
8214      $(doc).off(fullScreenEvents, onFullScreenChange).on(fullScreenEvents, onFullScreenChange);
8215    }
8216  };
8217
8218  function onFullScreenChange() {
8219    var fullScreen = doc.fullScreen || doc.mozFullScreen || doc.webkitIsFullScreen || doc.msFullscreenElement || Boolean(doc.webkitFullscreenElement);
8220    $(brandElement).attr('style', fullScreen ? 'display: none !important;' : '');
8221  }
8222
8223  function createBadge() {
8224    var $brand = $('<a class="w-webflow-badge"></a>').attr('href', 'https://webflow.com?utm_campaign=brandjs');
8225    var $logoArt = $('<img>').attr('src', 'img/webflow-badge-icon.f67cd735e3.svg').attr('alt', '').css({
8226      marginRight: '8px',
8227      width: '16px'
8228    });
8229    var $logoText = $('<img>').attr('src', 'img/webflow-badge-text.6faa6a38cd.svg').attr('alt', 'Made in Webflow');
8230    $brand.append($logoArt, $logoText);
8231    return $brand[0];
8232  }
8233
8234  function ensureBrand() {
8235    var found = $body.children(namespace);
8236    var match = found.length && found.get(0) === brandElement;
8237    var inEditor = Webflow.env('editor');
8238
8239    if (match) {
8240      // Remove brand when Editor is active
8241      if (inEditor) {
8242        found.remove();
8243      } // Exit early, brand is in place
8244
8245
8246      return;
8247    } // Remove any invalid brand elements
8248
8249
8250    if (found.length) {
8251      found.remove();
8252    } // Append the brand (unless Editor is active)
8253
8254
8255    if (!inEditor) {
8256      $body.append(brandElement);
8257    }
8258  } // Export module
8259
8260
8261  return api;
8262});
8263
8264/***/ }),
8265/* 133 */
8266/***/ (function(module, exports, __webpack_require__) {
8267
8268"use strict";
8269 // @wf-will-never-add-flow-to-this-file
8270// Include tram for frame-throttling
8271
8272/* globals window */
8273
8274/* eslint-disable no-var */
8275
8276var $ = window.$;
8277var tram = __webpack_require__(69) && $.tram;
8278/*!
8279 * Webflow._ (aka) Underscore.js 1.6.0 (custom build)
8280 * _.each
8281 * _.map
8282 * _.find
8283 * _.filter
8284 * _.any
8285 * _.contains
8286 * _.delay
8287 * _.defer
8288 * _.throttle (webflow)
8289 * _.debounce
8290 * _.keys
8291 * _.has
8292 * _.now
8293 *
8294 * http://underscorejs.org
8295 * (c) 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
8296 * Underscore may be freely distributed under the MIT license.
8297 * @license MIT
8298 */
8299
8300module.exports = function () {
8301  var _ = {}; // Current version.
8302
8303  _.VERSION = '1.6.0-Webflow'; // Establish the object that gets returned to break out of a loop iteration.
8304
8305  var breaker = {}; // Save bytes in the minified (but not gzipped) version:
8306
8307  /* eslint-disable one-var */
8308
8309  var ArrayProto = Array.prototype,
8310      ObjProto = Object.prototype,
8311      FuncProto = Function.prototype;
8312  /* eslint-enable one-var */
8313  // Create quick reference variables for speed access to core prototypes.
8314
8315  /* eslint-disable one-var, no-unused-vars */
8316
8317  var push = ArrayProto.push,
8318      slice = ArrayProto.slice,
8319      concat = ArrayProto.concat,
8320      toString = ObjProto.toString,
8321      hasOwnProperty = ObjProto.hasOwnProperty;
8322  /* eslint-enable one-var, no-unused-vars */
8323  // All **ECMAScript 5** native function implementations that we hope to use
8324  // are declared here.
8325
8326  /* eslint-disable one-var, no-unused-vars */
8327
8328  var nativeForEach = ArrayProto.forEach,
8329      nativeMap = ArrayProto.map,
8330      nativeReduce = ArrayProto.reduce,
8331      nativeReduceRight = ArrayProto.reduceRight,
8332      nativeFilter = ArrayProto.filter,
8333      nativeEvery = ArrayProto.every,
8334      nativeSome = ArrayProto.some,
8335      nativeIndexOf = ArrayProto.indexOf,
8336      nativeLastIndexOf = ArrayProto.lastIndexOf,
8337      nativeIsArray = Array.isArray,
8338      nativeKeys = Object.keys,
8339      nativeBind = FuncProto.bind;
8340  /* eslint-enable one-var, no-unused-vars */
8341  // Collection Functions
8342  // --------------------
8343  // The cornerstone, an `each` implementation, aka `forEach`.
8344  // Handles objects with the built-in `forEach`, arrays, and raw objects.
8345  // Delegates to **ECMAScript 5**'s native `forEach` if available.
8346
8347  var each = _.each = _.forEach = function (obj, iterator, context) {
8348    /* jshint shadow:true */
8349    if (obj == null) return obj;
8350
8351    if (nativeForEach && obj.forEach === nativeForEach) {
8352      obj.forEach(iterator, context); // eslint-disable-next-line no-implicit-coercion
8353    } else if (obj.length === +obj.length) {
8354      for (var i = 0, length = obj.length; i < length; i++) {
8355        if (iterator.call(context, obj[i], i, obj) === breaker) return;
8356      }
8357    } else {
8358      var keys = _.keys(obj); // eslint-disable-next-line no-redeclare
8359
8360
8361      for (var i = 0, length = keys.length; i < length; i++) {
8362        if (iterator.call(context, obj[keys[i]], keys[i], obj) === breaker) return;
8363      }
8364    }
8365
8366    return obj;
8367  }; // Return the results of applying the iterator to each element.
8368  // Delegates to **ECMAScript 5**'s native `map` if available.
8369
8370
8371  _.map = _.collect = function (obj, iterator, context) {
8372    var results = [];
8373    if (obj == null) return results;
8374    if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);
8375    each(obj, function (value, index, list) {
8376      results.push(iterator.call(context, value, index, list));
8377    });
8378    return results;
8379  }; // Return the first value which passes a truth test. Aliased as `detect`.
8380
8381
8382  _.find = _.detect = function (obj, predicate, context) {
8383    var result;
8384    any(obj, function (value, index, list) {
8385      if (predicate.call(context, value, index, list)) {
8386        result = value;
8387        return true;
8388      }
8389    });
8390    return result;
8391  }; // Return all the elements that pass a truth test.
8392  // Delegates to **ECMAScript 5**'s native `filter` if available.
8393  // Aliased as `select`.
8394
8395
8396  _.filter = _.select = function (obj, predicate, context) {
8397    var results = [];
8398    if (obj == null) return results;
8399    if (nativeFilter && obj.filter === nativeFilter) return obj.filter(predicate, context);
8400    each(obj, function (value, index, list) {
8401      if (predicate.call(context, value, index, list)) results.push(value);
8402    });
8403    return results;
8404  }; // Determine if at least one element in the object matches a truth test.
8405  // Delegates to **ECMAScript 5**'s native `some` if available.
8406  // Aliased as `any`.
8407
8408
8409  var any = _.some = _.any = function (obj, predicate, context) {
8410    predicate || (predicate = _.identity);
8411    var result = false;
8412    if (obj == null) return result;
8413    if (nativeSome && obj.some === nativeSome) return obj.some(predicate, context);
8414    each(obj, function (value, index, list) {
8415      if (result || (result = predicate.call(context, value, index, list))) return breaker;
8416    });
8417    return !!result; // eslint-disable-line no-implicit-coercion
8418  }; // Determine if the array or object contains a given value (using `===`).
8419  // Aliased as `include`.
8420
8421
8422  _.contains = _.include = function (obj, target) {
8423    if (obj == null) return false;
8424    if (nativeIndexOf && obj.indexOf === nativeIndexOf) // eslint-disable-next-line eqeqeq
8425      return obj.indexOf(target) != -1;
8426    return any(obj, function (value) {
8427      return value === target;
8428    });
8429  }; // Function (ahem) Functions
8430  // --------------------
8431  // Delays a function for the given number of milliseconds, and then calls
8432  // it with the arguments supplied.
8433
8434
8435  _.delay = function (func, wait) {
8436    var args = slice.call(arguments, 2);
8437    return setTimeout(function () {
8438      return func.apply(null, args);
8439    }, wait);
8440  }; // Defers a function, scheduling it to run after the current call stack has
8441  // cleared.
8442
8443
8444  _.defer = function (func) {
8445    return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1)));
8446  }; // Returns a function, that, when invoked, will only be triggered once every
8447  // browser animation frame - using tram's requestAnimationFrame polyfill.
8448
8449
8450  _.throttle = function (func) {
8451    // eslint-disable-next-line one-var
8452    var wait, args, context;
8453    return function () {
8454      if (wait) return;
8455      wait = true;
8456      args = arguments;
8457      context = this;
8458      tram.frame(function () {
8459        wait = false;
8460        func.apply(context, args);
8461      });
8462    };
8463  }; // Returns a function, that, as long as it continues to be invoked, will not
8464  // be triggered. The function will be called after it stops being called for
8465  // N milliseconds. If `immediate` is passed, trigger the function on the
8466  // leading edge, instead of the trailing.
8467
8468
8469  _.debounce = function (func, wait, immediate) {
8470    // eslint-disable-next-line one-var
8471    var timeout, args, context, timestamp, result;
8472
8473    var later = function later() {
8474      var last = _.now() - timestamp;
8475
8476      if (last < wait) {
8477        timeout = setTimeout(later, wait - last);
8478      } else {
8479        timeout = null;
8480
8481        if (!immediate) {
8482          result = func.apply(context, args);
8483          context = args = null;
8484        }
8485      }
8486    };
8487
8488    return function () {
8489      context = this;
8490      args = arguments;
8491      timestamp = _.now();
8492      var callNow = immediate && !timeout;
8493
8494      if (!timeout) {
8495        timeout = setTimeout(later, wait);
8496      }
8497
8498      if (callNow) {
8499        result = func.apply(context, args);
8500        context = args = null;
8501      }
8502
8503      return result;
8504    };
8505  }; // Object Functions
8506  // ----------------
8507  // Fill in a given object with default properties.
8508
8509
8510  _.defaults = function (obj) {
8511    if (!_.isObject(obj)) return obj;
8512
8513    for (var i = 1, length = arguments.length; i < length; i++) {
8514      var source = arguments[i];
8515
8516      for (var prop in source) {
8517        // eslint-disable-next-line no-void
8518        if (obj[prop] === void 0) obj[prop] = source[prop];
8519      }
8520    }
8521
8522    return obj;
8523  }; // Retrieve the names of an object's properties.
8524  // Delegates to **ECMAScript 5**'s native `Object.keys`
8525
8526
8527  _.keys = function (obj) {
8528    if (!_.isObject(obj)) return [];
8529    if (nativeKeys) return nativeKeys(obj);
8530    var keys = [];
8531
8532    for (var key in obj) {
8533      if (_.has(obj, key)) keys.push(key);
8534    }
8535
8536    return keys;
8537  }; // Shortcut function for checking if an object has a given property directly
8538  // on itself (in other words, not on a prototype).
8539
8540
8541  _.has = function (obj, key) {
8542    return hasOwnProperty.call(obj, key);
8543  }; // Is a given variable an object?
8544
8545
8546  _.isObject = function (obj) {
8547    return obj === Object(obj);
8548  }; // Utility Functions
8549  // -----------------
8550  // A (possibly faster) way to get the current timestamp as an integer.
8551
8552
8553  _.now = Date.now || function () {
8554    return new Date().getTime();
8555  }; // By default, Underscore uses ERB-style template delimiters, change the
8556  // following template settings to use alternative delimiters.
8557
8558
8559  _.templateSettings = {
8560    evaluate: /<%([\s\S]+?)%>/g,
8561    interpolate: /<%=([\s\S]+?)%>/g,
8562    escape: /<%-([\s\S]+?)%>/g
8563  }; // When customizing `templateSettings`, if you don't want to define an
8564  // interpolation, evaluation or escaping regex, we need one that is
8565  // guaranteed not to match.
8566
8567  var noMatch = /(.)^/; // Certain characters need to be escaped so that they can be put into a
8568  // string literal.
8569
8570  var escapes = {
8571    "'": "'",
8572    '\\': '\\',
8573    '\r': 'r',
8574    '\n': 'n',
8575    "\u2028": 'u2028',
8576    "\u2029": 'u2029'
8577  };
8578  var escaper = /\\|'|\r|\n|\u2028|\u2029/g;
8579
8580  var escapeChar = function escapeChar(match) {
8581    return '\\' + escapes[match];
8582  }; // JavaScript micro-templating, similar to John Resig's implementation.
8583  // Underscore templating handles arbitrary delimiters, preserves whitespace,
8584  // and correctly escapes quotes within interpolated code.
8585  // NB: `oldSettings` only exists for backwards compatibility.
8586
8587
8588  _.template = function (text, settings, oldSettings) {
8589    if (!settings && oldSettings) settings = oldSettings;
8590    settings = _.defaults({}, settings, _.templateSettings); // Combine delimiters into one regular expression via alternation.
8591
8592    var matcher = RegExp([(settings.escape || noMatch).source, (settings.interpolate || noMatch).source, (settings.evaluate || noMatch).source].join('|') + '|$', 'g'); // Compile the template source, escaping string literals appropriately.
8593
8594    var index = 0;
8595    var source = "__p+='";
8596    text.replace(matcher, function (match, escape, interpolate, evaluate, offset) {
8597      source += text.slice(index, offset).replace(escaper, escapeChar);
8598      index = offset + match.length;
8599
8600      if (escape) {
8601        source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'";
8602      } else if (interpolate) {
8603        source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'";
8604      } else if (evaluate) {
8605        source += "';\n" + evaluate + "\n__p+='";
8606      } // Adobe VMs need the match returned to produce the correct offest.
8607
8608
8609      return match;
8610    });
8611    source += "';\n"; // If a variable is not specified, place data values in local scope.
8612
8613    if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n';
8614    source = "var __t,__p='',__j=Array.prototype.join," + "print=function(){__p+=__j.call(arguments,'');};\n" + source + 'return __p;\n';
8615
8616    try {
8617      // eslint-disable-next-line no-new-func
8618      var render = new Function(settings.variable || 'obj', '_', source);
8619    } catch (e) {
8620      e.source = source;
8621      throw e;
8622    }
8623
8624    var template = function template(data) {
8625      return render.call(this, data, _);
8626    }; // Provide the compiled source as a convenience for precompilation.
8627
8628
8629    var argument = settings.variable || 'obj';
8630    template.source = 'function(' + argument + '){\n' + source + '}';
8631    return template;
8632  }; // Export underscore
8633
8634
8635  return _;
8636}();
8637/* eslint-enable */
8638
8639/***/ }),
8640/* 134 */
8641/***/ (function(module, exports, __webpack_require__) {
8642
8643"use strict";
8644 // @wf-will-never-add-flow-to-this-file
8645
8646/* globals document, window, localStorage, WEBFLOW_API_HOST, WEBFLOW_DEFAULT_HOST */
8647
8648/* eslint-disable no-var */
8649
8650/**
8651 * Webflow: Editor loader
8652 */
8653
8654var Webflow = __webpack_require__(3);
8655
8656Webflow.define('edit', module.exports = function ($, _, options) {
8657  options = options || {}; // Exit early in test env or when inside an iframe
8658
8659  if (Webflow.env('test') || Webflow.env('frame')) {
8660    // Allow test fixtures to continue
8661    if (!options.fixture && !inCypress()) {
8662      return {
8663        exit: 1
8664      };
8665    }
8666  }
8667
8668  var api = {};
8669  var $win = $(window);
8670  var $html = $(document.documentElement);
8671  var location = document.location;
8672  var hashchange = 'hashchange';
8673  var loaded;
8674  var loadEditor = options.load || load;
8675  var hasLocalStorage = false;
8676
8677  try {
8678    // Check localStorage for editor data
8679    hasLocalStorage = localStorage && localStorage.getItem && localStorage.getItem('WebflowEditor');
8680  } catch (e) {// SecurityError: browser storage has been disabled
8681  }
8682
8683  if (hasLocalStorage) {
8684    loadEditor();
8685  } else if (location.search) {
8686    // Check url query for `edit` parameter or any url ending in `?edit`
8687    if (/[?&](edit)(?:[=&?]|$)/.test(location.search) || /\?edit$/.test(location.href)) {
8688      loadEditor();
8689    }
8690  } else {
8691    // Check hash fragment to support `#hash?edit`
8692    $win.on(hashchange, checkHash).triggerHandler(hashchange);
8693  }
8694
8695  function checkHash() {
8696    if (loaded) {
8697      return;
8698    } // Load editor when hash contains `?edit`
8699
8700
8701    if (/\?edit/.test(location.hash)) {
8702      loadEditor();
8703    }
8704  }
8705
8706  function load() {
8707    loaded = true; // Predefine global immediately to benefit Webflow.env
8708
8709    window.WebflowEditor = true;
8710    $win.off(hashchange, checkHash);
8711    checkThirdPartyCookieSupport(function (thirdPartyCookiesSupported) {
8712      $.ajax({
8713        url: cleanSlashes("https://editor-api.webflow.com" + '/api/editor/view'),
8714        data: {
8715          siteId: $html.attr('data-wf-site')
8716        },
8717        xhrFields: {
8718          withCredentials: true
8719        },
8720        dataType: 'json',
8721        crossDomain: true,
8722        success: success(thirdPartyCookiesSupported)
8723      });
8724    });
8725  }
8726
8727  function success(thirdPartyCookiesSupported) {
8728    return function (data) {
8729      if (!data) {
8730        console.error('Could not load editor data');
8731        return;
8732      }
8733
8734      data.thirdPartyCookiesSupported = thirdPartyCookiesSupported;
8735      getScript(prefix(data.bugReporterScriptPath), function () {
8736        getScript(prefix(data.scriptPath), function () {
8737          window.WebflowEditor(data);
8738        });
8739      });
8740    };
8741  }
8742
8743  function getScript(url, done) {
8744    $.ajax({
8745      type: 'GET',
8746      url: url,
8747      dataType: 'script',
8748      cache: true
8749    }).then(done, error);
8750  }
8751
8752  function error(jqXHR, textStatus, errorThrown) {
8753    console.error('Could not load editor script: ' + textStatus);
8754    throw errorThrown;
8755  }
8756
8757  function prefix(url) {
8758    return url.indexOf('//') >= 0 ? url : cleanSlashes("https://editor-api.webflow.com" + url);
8759  }
8760
8761  function cleanSlashes(url) {
8762    return url.replace(/([^:])\/\//g, '$1/');
8763  }
8764
8765  function checkThirdPartyCookieSupport(callback) {
8766    var iframe = window.document.createElement('iframe');
8767    iframe.src = "https://webflow.com" + '/site/third-party-cookie-check.html';
8768    iframe.style.display = 'none';
8769    iframe.sandbox = 'allow-scripts allow-same-origin';
8770
8771    var handleMessage = function handleMessage(event) {
8772      if (event.data === 'WF_third_party_cookies_unsupported') {
8773        cleanUpCookieCheckerIframe(iframe, handleMessage);
8774        callback(false);
8775      } else if (event.data === 'WF_third_party_cookies_supported') {
8776        cleanUpCookieCheckerIframe(iframe, handleMessage);
8777        callback(true);
8778      }
8779    };
8780
8781    iframe.onerror = function () {
8782      cleanUpCookieCheckerIframe(iframe, handleMessage);
8783      callback(false);
8784    };
8785
8786    window.addEventListener('message', handleMessage, false);
8787    window.document.body.appendChild(iframe);
8788  }
8789
8790  function cleanUpCookieCheckerIframe(iframe, listener) {
8791    window.removeEventListener('message', listener, false);
8792    iframe.remove();
8793  } // Export module
8794
8795
8796  return api;
8797});
8798
8799function inCypress() {
8800  try {
8801    return window.top.__Cypress__;
8802  } catch (e) {
8803    return false;
vendor: 4,984 bytes, lines 8804-8983
8804  }
8805}
8806
8807/***/ }),
8808/* 135 */
8809/***/ (function(module, exports, __webpack_require__) {
8810
8811"use strict";
8812 // @wf-will-never-add-flow-to-this-file
8813
8814/* globals window, document */
8815
8816/* eslint-disable no-var */
8817
8818/**
8819 * Webflow: focus-visible
8820 */
8821
8822var Webflow = __webpack_require__(3);
8823/*
8824 * This polyfill comes from https://github.com/WICG/focus-visible
8825 */
8826
8827
8828Webflow.define('focus-visible', module.exports = function () {
8829  /**
8830   * Applies the :focus-visible polyfill at the given scope.
8831   * A scope in this case is either the top-level Document or a Shadow Root.
8832   *
8833   * @param {(Document|ShadowRoot)} scope
8834   * @see https://github.com/WICG/focus-visible
8835   */
8836  function applyFocusVisiblePolyfill(scope) {
8837    var hadKeyboardEvent = true;
8838    var hadFocusVisibleRecently = false;
8839    var hadFocusVisibleRecentlyTimeout = null;
8840    var inputTypesAllowlist = {
8841      text: true,
8842      search: true,
8843      url: true,
8844      tel: true,
8845      email: true,
8846      password: true,
8847      number: true,
8848      date: true,
8849      month: true,
8850      week: true,
8851      time: true,
8852      datetime: true,
8853      'datetime-local': true
8854    };
8855    /**
8856     * Helper function for legacy browsers and iframes which sometimes focus
8857     * elements like document, body, and non-interactive SVG.
8858     * @param {Element} el
8859     */
8860
8861    function isValidFocusTarget(el) {
8862      if (el && el !== document && el.nodeName !== 'HTML' && el.nodeName !== 'BODY' && 'classList' in el && 'contains' in el.classList) {
8863        return true;
8864      }
8865
8866      return false;
8867    }
8868    /**
8869     * Computes whether the given element should automatically trigger the
8870     * `focus-visible` class being added, i.e. whether it should always match
8871     * `:focus-visible` when focused.
8872     * @param {Element} el
8873     * @return {boolean}
8874     */
8875
8876
8877    function focusTriggersKeyboardModality(el) {
8878      var type = el.type;
8879      var tagName = el.tagName;
8880
8881      if (tagName === 'INPUT' && inputTypesAllowlist[type] && !el.readOnly) {
8882        return true;
8883      }
8884
8885      if (tagName === 'TEXTAREA' && !el.readOnly) {
8886        return true;
8887      }
8888
8889      if (el.isContentEditable) {
8890        return true;
8891      }
8892
8893      return false;
8894    }
8895
8896    function addFocusVisibleAttribute(el) {
8897      if (el.getAttribute('data-wf-focus-visible')) {
8898        return;
8899      }
8900
8901      el.setAttribute('data-wf-focus-visible', 'true');
8902    }
8903
8904    function removeFocusVisibleAttribute(el) {
8905      if (!el.getAttribute('data-wf-focus-visible')) {
8906        return;
8907      }
8908
8909      el.removeAttribute('data-wf-focus-visible');
8910    }
8911    /**
8912     * If the most recent user interaction was via the keyboard;
8913     * and the key press did not include a meta, alt/option, or control key;
8914     * then the modality is keyboard. Otherwise, the modality is not keyboard.
8915     * Apply `focus-visible` to any current active element and keep track
8916     * of our keyboard modality state with `hadKeyboardEvent`.
8917     * @param {KeyboardEvent} e
8918     */
8919
8920
8921    function onKeyDown(e) {
8922      if (e.metaKey || e.altKey || e.ctrlKey) {
8923        return;
8924      }
8925
8926      if (isValidFocusTarget(scope.activeElement)) {
8927        addFocusVisibleAttribute(scope.activeElement);
8928      }
8929
8930      hadKeyboardEvent = true;
8931    }
8932    /**
8933     * If at any point a user clicks with a pointing device, ensure that we change
8934     * the modality away from keyboard.
8935     * This avoids the situation where a user presses a key on an already focused
8936     * element, and then clicks on a different element, focusing it with a
8937     * pointing device, while we still think we're in keyboard modality.
8938     * @param {Event} e
8939     */
8940
8941
8942    function onPointerDown() {
8943      hadKeyboardEvent = false;
8944    }
8945    /**
8946     * On `focus`, add the `focus-visible` class to the target if:
8947     * - the target received focus as a result of keyboard navigation, or
8948     * - the event target is an element that will likely require interaction
8949     *   via the keyboard (e.g. a text box)
8950     * @param {Event} e
8951     */
8952
8953
8954    function onFocus(e) {
8955      // Prevent IE from focusing the document or HTML element.
8956      if (!isValidFocusTarget(e.target)) {
8957        return;
8958      }
8959
8960      if (hadKeyboardEvent || focusTriggersKeyboardModality(e.target)) {
8961        addFocusVisibleAttribute(e.target);
8962      }
8963    }
8964    /**
8965     * On `blur`, remove the `focus-visible` class from the target.
8966     * @param {Event} e
8967     */
8968
8969
8970    function onBlur(e) {
8971      if (!isValidFocusTarget(e.target)) {
8972        return;
8973      }
8974
8975      if (e.target.hasAttribute('data-wf-focus-visible')) {
8976        // To detect a tab/window switch, we look for a blur event followed
8977        // rapidly by a visibility change.
8978        // If we don't see a visibility change within 100ms, it's probably a
8979        // regular focus change.
8980        hadFocusVisibleRecently = true;
8981        window.clearTimeout(hadFocusVisibleRecentlyTimeout);
8982        hadFocusVisibleRecentlyTimeout = window.setTimeout(function () {
8983          hadFocusVisibleRecently = false;
8984        }, 100);
8985        removeFocusVisibleAttribute(e.target);
8986      }
8987    }
8988    /**
8989     * If the user changes tabs, keep track of whether or not the previously
8990     * focused element had .focus-visible.
8991     * @param {Event} e
8992     */
8993
8994
8995    function onVisibilityChange() {
8996      if (document.visibilityState === 'hidden') {
8997        // If the tab becomes active again, the browser will handle calling focus
8998        // on the element (Safari actually calls it twice).
8999        // If this tab change caused a blur on an element with focus-visible,
9000        // re-apply the class when the user switches back to the tab.
9001        if (hadFocusVisibleRecently) {
9002          hadKeyboardEvent = true;
9003        }
9004
9005        addInitialPointerMoveListeners();
9006      }
9007    }
9008    /**
9009     * Add a group of listeners to detect usage of any pointing devices.
9010     * These listeners will be added when the polyfill first loads, and anytime
9011     * the window is blurred, so that they are active when the window regains
9012     * focus.
9013     */
9014
9015
9016    function addInitialPointerMoveListeners() {
9017      document.addEventListener('mousemove', onInitialPointerMove);
9018      document.addEventListener('mousedown', onInitialPointerMove);
9019      document.addEventListener('mouseup', onInitialPointerMove);
9020      document.addEventListener('pointermove', onInitialPointerMove);
9021      document.addEventListener('pointerdown', onInitialPointerMove);
9022      document.addEventListener('pointerup', onInitialPointerMove);
9023      document.addEventListener('touchmove', onInitialPointerMove);
9024      document.addEventListener('touchstart', onInitialPointerMove);
9025      document.addEventListener('touchend', onInitialPointerMove);
9026    }
9027
9028    function removeInitialPointerMoveListeners() {
9029      document.removeEventListener('mousemove', onInitialPointerMove);
9030      document.removeEventListener('mousedown', onInitialPointerMove);
9031      document.removeEventListener('mouseup', onInitialPointerMove);
9032      document.removeEventListener('pointermove', onInitialPointerMove);
9033      document.removeEventListener('pointerdown', onInitialPointerMove);
9034      document.removeEventListener('pointerup', onInitialPointerMove);
9035      document.removeEventListener('touchmove', onInitialPointerMove);
9036      document.removeEventListener('touchstart', onInitialPointerMove);
9037      document.removeEventListener('touchend', onInitialPointerMove);
9038    }
9039    /**
9040     * When the polfyill first loads, assume the user is in keyboard modality.
9041     * If any event is received from a pointing device (e.g. mouse, pointer,
9042     * touch), turn off keyboard modality.
9043     * This accounts for situations where focus enters the page from the URL bar.
9044     * @param {Event} e
9045     */
9046
9047
9048    function onInitialPointerMove(e) {
9049      // Work around a Safari quirk that fires a mousemove on <html> whenever the
9050      // window blurs, even if you're tabbing out of the page. ¯\_(ツ)_/¯
9051      if (e.target.nodeName && e.target.nodeName.toLowerCase() === 'html') {
9052        return;
9053      }
9054
9055      hadKeyboardEvent = false;
9056      removeInitialPointerMoveListeners();
9057    } // For some kinds of state, we are interested in changes at the global scope
9058    // only. For example, global pointer input, global key presses and global
9059    // visibility change should affect the state at every scope:
9060
9061
9062    document.addEventListener('keydown', onKeyDown, true);
9063    document.addEventListener('mousedown', onPointerDown, true);
9064    document.addEventListener('pointerdown', onPointerDown, true);
9065    document.addEventListener('touchstart', onPointerDown, true);
9066    document.addEventListener('visibilitychange', onVisibilityChange, true);
9067    addInitialPointerMoveListeners(); // For focus and blur, we specifically care about state changes in the local
9068    // scope. This is because focus / blur events that originate from within a
9069    // shadow root are not re-dispatched from the host element if it was already
9070    // the active element in its own scope:
9071
9072    scope.addEventListener('focus', onFocus, true);
9073    scope.addEventListener('blur', onBlur, true);
9074  }
9075
9076  function ready() {
9077    if (typeof document !== 'undefined') {
9078      try {
9079        // check for native support; this will throw if the selector is not considered valid
9080        document.querySelector(':focus-visible');
9081      } catch (e) {
9082        // :focus-visible pseudo-selector is not supported natively
9083        applyFocusVisiblePolyfill(document);
9084      }
9085    }
9086  } // Export module
9087
9088
9089  return {
9090    ready: ready
9091  };
9092});
9093
9094/***/ }),
9095/* 136 */
9096/***/ (function(module, exports, __webpack_require__) {
9097
9098"use strict";
9099 // @wf-will-never-add-flow-to-this-file
9100
9101/* globals window, document */
9102
9103/* eslint-disable no-var */
9104
9105/**
9106 * Webflow: focus-within
9107 */
9108
9109var Webflow = __webpack_require__(3); // polyfill based off of https://github.com/matteobad/focus-within-polyfill
9110
9111
9112Webflow.define('focus-within', module.exports = function () {
9113  /**
9114   * Calculate the entire event path.
9115   *
9116   * @param {Element} node
9117   * @return {Array} computedPath
9118   */
9119  function computeEventPath(node) {
9120    var path = [node];
9121    var parent = null;
9122
9123    while (parent = node.parentNode || node.host || node.defaultView) {
9124      path.push(parent);
9125      node = parent;
9126    }
9127
9128    return path;
9129  }
9130
9131  function addFocusWithinAttribute(el) {
9132    if (typeof el.getAttribute !== 'function' || el.getAttribute('data-wf-focus-within')) {
9133      return;
9134    }
9135
9136    el.setAttribute('data-wf-focus-within', 'true');
9137  }
9138
9139  function removeFocusWithinAttribute(el) {
9140    if (typeof el.getAttribute !== 'function' || !el.getAttribute('data-wf-focus-within')) {
9141      return;
9142    }
9143
9144    el.removeAttribute('data-wf-focus-within');
9145  }
9146  /**
9147   * Attach event listerns to initiate polyfill
9148   * @return {boolean}
9149   */
9150
9151
9152  function loadFocusWithinPolyfill() {
9153    var handler = function handler(e) {
9154      var running;
9155      /**
9156       * Request animation frame callback.
9157       * Remove previously applied attributes.
9158       * Add new attributes.
9159       */
9160
9161      function action() {
9162        running = false;
9163
9164        if ('blur' === e.type) {
9165          Array.prototype.slice.call(computeEventPath(e.target)).forEach(removeFocusWithinAttribute);
9166        }
9167
9168        if ('focus' === e.type) {
9169          Array.prototype.slice.call(computeEventPath(e.target)).forEach(addFocusWithinAttribute);
9170        }
9171      }
9172
9173      if (!running) {
9174        window.requestAnimationFrame(action);
9175        running = true;
9176      }
9177    };
9178
9179    document.addEventListener('focus', handler, true);
9180    document.addEventListener('blur', handler, true);
9181    addFocusWithinAttribute(document.body);
9182    return true;
9183  }
9184
9185  function ready() {
9186    if (typeof document !== 'undefined' && document.body.hasAttribute('data-wf-focus-within')) {
9187      try {
9188        // check for native support; this will throw if the selector is not considered valid
9189        document.querySelector(':focus-within');
9190      } catch (e) {
9191        loadFocusWithinPolyfill();
9192      }
9193    }
9194  } // Export module
9195
9196
9197  return {
9198    ready: ready
9199  };
9200});
9201
9202/***/ }),
9203/* 137 */
9204/***/ (function(module, exports, __webpack_require__) {
9205
9206"use strict";
9207 // @wf-will-never-add-flow-to-this-file
9208
9209/* globals document, MouseEvent */
9210
9211/* eslint-disable no-var */
9212
9213/**
9214 * Webflow: focus
9215 */
9216
9217var Webflow = __webpack_require__(3);
9218/*
9219 * Safari has a weird bug where it doesn't support :focus for links with hrefs,
9220 * buttons, and input[type=button|submit], so we listen for mousedown events
9221 * instead and force the element to emit a focus event in those cases.
9222
9223 * See these webkit bugs for reference:
9224 * https://bugs.webkit.org/show_bug.cgi?id=22261
9225 * https://bugs.webkit.org/show_bug.cgi?id=229895
9226 */
9227
9228
9229Webflow.define('focus', module.exports = function () {
9230  var capturedEvents = [];
9231  var capturing = false;
9232
9233  function captureEvent(e) {
9234    if (capturing) {
9235      e.preventDefault();
9236      e.stopPropagation();
9237      e.stopImmediatePropagation();
9238      capturedEvents.unshift(e);
9239    }
9240  }
9241  /*
9242   * The only mousedown events we care about here are ones emanating from
9243   * (A) anchor links with href attribute,
9244   * (B) non-disabled buttons,
9245   * (C) non-disabled textarea,
9246   * (D) non-disabled inputs of type "button", "reset", "checkbox", "radio", "submit"
9247   * (E) non-interactive elements (button, a, input, textarea, select) that have a tabindex with a numeric value
9248   * (F) audio elements
9249   * (G) video elements with controls attribute
9250   */
9251
9252
9253  function isPolyfilledFocusEvent(e) {
9254    var el = e.target;
9255    var tag = el.tagName;
9256    return /^a$/i.test(tag) && el.href != null || // (A)
9257    /^(button|textarea)$/i.test(tag) && el.disabled !== true || // (B) (C)
9258    /^input$/i.test(tag) && /^(button|reset|submit|radio|checkbox)$/i.test(el.type) && !el.disabled || // (D)
9259    !/^(button|input|textarea|select|a)$/i.test(tag) && !Number.isNaN(Number.parseFloat(el.tabIndex)) || // (E)
9260    /^audio$/i.test(tag) || // (F)
9261    /^video$/i.test(tag) && el.controls === true // (G)
9262    ;
9263  }
9264
9265  function handler(e) {
9266    if (isPolyfilledFocusEvent(e)) {
9267      // start capturing possible out-of-order mouse events
9268      capturing = true;
9269      /*
9270       * enqueue the focus event _after_ the current batch of events, which
9271       * includes any blur events. The correct order of events is:
9272       *
9273       * [this element] MOUSEDOWN               <-- this event
9274       * [previously active element] BLUR
9275       * [previously active element] FOCUSOUT
9276       * [this element] FOCUS                   <-- forced event
9277       * [this element] FOCUSIN                 <-- forced event
9278       * [this element] MOUSEUP                 <-- possibly captured event (it may have fired _before_ the FOCUS event)
9279       * [this element] CLICK                   <-- possibly captured event (it may have fired _before_ the FOCUS event)
9280       */
9281
9282      setTimeout(function () {
9283        // stop capturing possible out-of-order mouse events
9284        capturing = false; // trigger focus event
9285
9286        e.target.focus(); // re-dispatch captured mouse events in order
9287
9288        while (capturedEvents.length > 0) {
9289          var event = capturedEvents.pop();
9290          event.target.dispatchEvent(new MouseEvent(event.type, event));
9291        }
9292      }, 0);
9293    }
9294  }
9295
9296  function ready() {
9297    if (typeof document !== 'undefined' && document.body.hasAttribute('data-wf-focus-within') && Webflow.env.safari) {
9298      document.addEventListener('mousedown', handler, true);
9299      document.addEventListener('mouseup', captureEvent, true);
9300      document.addEventListener('click', captureEvent, true);
9301    }
9302  } // Export module
9303
9304
9305  return {
9306    ready: ready
9307  };
9308});
9309
9310/***/ }),
9311/* 138 */
9312/***/ (function(module, exports, __webpack_require__) {
9313
9314"use strict";
9315// @wf-will-never-add-flow-to-this-file
9316
9317/* globals window */
9318
9319/* eslint-disable no-var */
9320
9321/**
9322 * Webflow: IX Event triggers for other modules
9323 */
9324// eslint-disable-next-line strict
9325
9326
9327var $ = window.jQuery;
9328var api = {};
9329var eventQueue = [];
9330var namespace = '.w-ix';
9331var eventTriggers = {
9332  reset: function reset(i, el) {
9333    el.__wf_intro = null;
9334  },
9335  intro: function intro(i, el) {
9336    if (el.__wf_intro) {
9337      return;
9338    }
9339
9340    el.__wf_intro = true;
9341    $(el).triggerHandler(api.types.INTRO);
9342  },
9343  outro: function outro(i, el) {
9344    if (!el.__wf_intro) {
9345      return;
9346    }
9347
9348    el.__wf_intro = null;
9349    $(el).triggerHandler(api.types.OUTRO);
9350  }
9351};
9352api.triggers = {};
9353api.types = {
9354  INTRO: 'w-ix-intro' + namespace,
9355  OUTRO: 'w-ix-outro' + namespace
9356}; // Trigger any events in queue + restore trigger methods
9357
9358api.init = function () {
9359  var count = eventQueue.length;
9360
9361  for (var i = 0; i < count; i++) {
9362    var memo = eventQueue[i];
9363    memo[0](0, memo[1]);
9364  }
9365
9366  eventQueue = [];
9367  $.extend(api.triggers, eventTriggers);
9368}; // Replace all triggers with async wrapper to queue events until init
9369
9370
9371api.async = function () {
9372  for (var key in eventTriggers) {
9373    var func = eventTriggers[key];
9374
9375    if (!eventTriggers.hasOwnProperty(key)) {
9376      continue;
9377    } // Replace trigger method with async wrapper
9378
9379
9380    api.triggers[key] = function (i, el) {
9381      eventQueue.push([func, el]);
9382    };
9383  }
9384}; // Default triggers to async queue
9385
9386
9387api.async();
9388module.exports = api;
9389
9390/***/ }),
9391/* 139 */
9392/***/ (function(module, exports, __webpack_require__) {
9393
9394"use strict";
9395 // @wf-will-never-add-flow-to-this-file
9396
9397/* eslint-disable no-var */
9398
9399/**
9400 * Webflow: Interactions 2
9401 */
9402
9403var Webflow = __webpack_require__(3);
9404
9405var ix2 = __webpack_require__(140);
9406
9407ix2.setEnv(Webflow.env);
9408Webflow.define('ix2', module.exports = function () {
9409  return ix2;
9410});
9411
9412/***/ }),
9413/* 140 */
9414/***/ (function(module, exports, __webpack_require__) {
9415
9416"use strict";
9417
9418
9419var _interopRequireWildcard = __webpack_require__(18);
9420
9421var _interopRequireDefault = __webpack_require__(0);
9422
9423Object.defineProperty(exports, "__esModule", {
9424  value: true
9425});
9426exports.setEnv = setEnv;
9427exports.init = init;
9428exports.destroy = destroy;
9429exports.actions = exports.store = void 0;
9430
9431__webpack_require__(141);
9432
9433var _redux = __webpack_require__(87);
9434
9435var _IX2Reducer = _interopRequireDefault(__webpack_require__(188));
9436
9437var _IX2VanillaEngine = __webpack_require__(123);
9438
9439var actions = _interopRequireWildcard(__webpack_require__(65));
9440
9441exports.actions = actions; // Array.includes needed for IE11 @packages/systems/ix2/shared/utils/quick-effects
9442
9443var store = (0, _redux.createStore)(_IX2Reducer["default"]);
9444exports.store = store;
9445
9446function setEnv(env) {
9447  if (env()) {
9448    (0, _IX2VanillaEngine.observeRequests)(store);
9449  }
9450}
9451
9452function init(rawData) {
9453  destroy();
9454  (0, _IX2VanillaEngine.startEngine)({
9455    store: store,
9456    rawData: rawData,
9457    allowEvents: true
9458  });
9459}
9460
9461function destroy() {
9462  (0, _IX2VanillaEngine.stopEngine)(store);
9463}
9464
9465/***/ }),
9466/* 141 */
9467/***/ (function(module, exports, __webpack_require__) {
9468
9469var parent = __webpack_require__(142);
9470
9471module.exports = parent;
9472
9473
9474/***/ }),
9475/* 142 */
9476/***/ (function(module, exports, __webpack_require__) {
9477
9478var parent = __webpack_require__(143);
9479
9480module.exports = parent;
9481
9482
9483/***/ }),
9484/* 143 */
9485/***/ (function(module, exports, __webpack_require__) {
9486
9487__webpack_require__(144);
9488var entryUnbind = __webpack_require__(176);
9489
9490module.exports = entryUnbind('Array', 'includes');
9491
9492
9493/***/ }),
9494/* 144 */
9495/***/ (function(module, exports, __webpack_require__) {
9496
9497"use strict";
9498
9499var $ = __webpack_require__(145);
9500var $includes = __webpack_require__(85).includes;
9501var addToUnscopables = __webpack_require__(171);
9502
9503// `Array.prototype.includes` method
9504// https://tc39.es/ecma262/#sec-array.prototype.includes
9505$({ target: 'Array', proto: true }, {
9506  includes: function includes(el /* , fromIndex = 0 */) {
9507    return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);
9508  }
9509});
9510
9511// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
9512addToUnscopables('includes');
9513
9514
9515/***/ }),
9516/* 145 */
9517/***/ (function(module, exports, __webpack_require__) {
9518
9519var global = __webpack_require__(1);
9520var getOwnPropertyDescriptor = __webpack_require__(70).f;
9521var createNonEnumerableProperty = __webpack_require__(43);
9522var redefine = __webpack_require__(159);
9523var setGlobal = __webpack_require__(42);
9524var copyConstructorProperties = __webpack_require__(163);
9525var isForced = __webpack_require__(170);
9526
9527/*
9528  options.target      - name of the target object
9529  options.global      - target is the global object
9530  options.stat        - export as static methods of target
9531  options.proto       - export as prototype methods of target
9532  options.real        - real prototype method for the `pure` version
9533  options.forced      - export even if the native feature is available
9534  options.bind        - bind methods to the target, required for the `pure` version
9535  options.wrap        - wrap constructors to preventing global pollution, required for the `pure` version
9536  options.unsafe      - use the simple assignment of property instead of delete + defineProperty
9537  options.sham        - add a flag to not completely full polyfills
9538  options.enumerable  - export as enumerable property
9539  options.noTargetGet - prevent calling a getter on target
9540  options.name        - the .name of the function if it does not match the key
9541*/
9542module.exports = function (options, source) {
9543  var TARGET = options.target;
9544  var GLOBAL = options.global;
9545  var STATIC = options.stat;
9546  var FORCED, target, key, targetProperty, sourceProperty, descriptor;
9547  if (GLOBAL) {
9548    target = global;
9549  } else if (STATIC) {
9550    target = global[TARGET] || setGlobal(TARGET, {});
9551  } else {
9552    target = (global[TARGET] || {}).prototype;
9553  }
9554  if (target) for (key in source) {
9555    sourceProperty = source[key];
9556    if (options.noTargetGet) {
9557      descriptor = getOwnPropertyDescriptor(target, key);
9558      targetProperty = descriptor && descriptor.value;
9559    } else targetProperty = target[key];
9560    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);
9561    // contained in target
9562    if (!FORCED && targetProperty !== undefined) {
9563      if (typeof sourceProperty == typeof targetProperty) continue;
9564      copyConstructorProperties(sourceProperty, targetProperty);
9565    }
9566    // add a flag to not completely full polyfills
9567    if (options.sham || (targetProperty && targetProperty.sham)) {
9568      createNonEnumerableProperty(sourceProperty, 'sham', true);
9569    }
9570    // extend global
9571    redefine(target, key, sourceProperty, options);
9572  }
9573};
9574
9575
9576/***/ }),
9577/* 146 */
9578/***/ (function(module, exports, __webpack_require__) {
9579
9580"use strict";
9581
9582var $propertyIsEnumerable = {}.propertyIsEnumerable;
9583// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
9584var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
9585
9586// Nashorn ~ JDK8 bug
9587var NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);
9588
9589// `Object.prototype.propertyIsEnumerable` method implementation
9590// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable
9591exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {
9592  var descriptor = getOwnPropertyDescriptor(this, V);
9593  return !!descriptor && descriptor.enumerable;
9594} : $propertyIsEnumerable;
9595
9596
9597/***/ }),
9598/* 147 */
9599/***/ (function(module, exports, __webpack_require__) {
9600
9601var global = __webpack_require__(1);
9602var uncurryThis = __webpack_require__(5);
9603var fails = __webpack_require__(19);
9604var classof = __webpack_require__(148);
9605
9606var Object = global.Object;
9607var split = uncurryThis(''.split);
9608
9609// fallback for non-array-like ES3 and non-enumerable old V8 strings
9610module.exports = fails(function () {
9611  // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346
9612  // eslint-disable-next-line no-prototype-builtins -- safe
9613  return !Object('z').propertyIsEnumerable(0);
9614}) ? function (it) {
9615  return classof(it) == 'String' ? split(it, '') : Object(it);
9616} : Object;
9617
9618
9619/***/ }),
9620/* 148 */
9621/***/ (function(module, exports, __webpack_require__) {
9622
9623var uncurryThis = __webpack_require__(5);
9624
9625var toString = uncurryThis({}.toString);
9626var stringSlice = uncurryThis(''.slice);
9627
9628module.exports = function (it) {
9629  return stringSlice(toString(it), 8, -1);
9630};
9631
9632
9633/***/ }),
9634/* 149 */
9635/***/ (function(module, exports, __webpack_require__) {
9636
9637var global = __webpack_require__(1);
9638var call = __webpack_require__(40);
9639var isObject = __webpack_require__(20);
9640var isSymbol = __webpack_require__(74);
9641var getMethod = __webpack_require__(153);
9642var ordinaryToPrimitive = __webpack_require__(156);
9643var wellKnownSymbol = __webpack_require__(77);
9644
9645var TypeError = global.TypeError;
9646var TO_PRIMITIVE = wellKnownSymbol('toPrimitive');
9647
9648// `ToPrimitive` abstract operation
9649// https://tc39.es/ecma262/#sec-toprimitive
9650module.exports = function (input, pref) {
9651  if (!isObject(input) || isSymbol(input)) return input;
9652  var exoticToPrim = getMethod(input, TO_PRIMITIVE);
9653  var result;
9654  if (exoticToPrim) {
9655    if (pref === undefined) pref = 'default';
9656    result = call(exoticToPrim, input, pref);
9657    if (!isObject(result) || isSymbol(result)) return result;
9658    throw TypeError("Can't convert object to primitive value");
9659  }
9660  if (pref === undefined) pref = 'number';
9661  return ordinaryToPrimitive(input, pref);
9662};
9663
9664
9665/***/ }),
9666/* 150 */
9667/***/ (function(module, exports, __webpack_require__) {
9668
9669var uncurryThis = __webpack_require__(5);
9670
9671module.exports = uncurryThis({}.isPrototypeOf);
9672
9673
vendor: 9,260 bytes, lines 9674-10001
9674/***/ }),
9675/* 151 */
9676/***/ (function(module, exports, __webpack_require__) {
9677
9678var global = __webpack_require__(1);
9679var userAgent = __webpack_require__(152);
9680
9681var process = global.process;
9682var Deno = global.Deno;
9683var versions = process && process.versions || Deno && Deno.version;
9684var v8 = versions && versions.v8;
9685var match, version;
9686
9687if (v8) {
9688  match = v8.split('.');
9689  // in old Chrome, versions of V8 isn't V8 = Chrome / 10
9690  // but their correct versions are not interesting for us
9691  version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);
9692}
9693
9694// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`
9695// so check `userAgent` even if `.v8` exists, but 0
9696if (!version && userAgent) {
9697  match = userAgent.match(/Edge\/(\d+)/);
9698  if (!match || match[1] >= 74) {
9699    match = userAgent.match(/Chrome\/(\d+)/);
9700    if (match) version = +match[1];
9701  }
9702}
9703
9704module.exports = version;
9705
9706
9707/***/ }),
9708/* 152 */
9709/***/ (function(module, exports, __webpack_require__) {
9710
9711var getBuiltIn = __webpack_require__(27);
9712
9713module.exports = getBuiltIn('navigator', 'userAgent') || '';
9714
9715
9716/***/ }),
9717/* 153 */
9718/***/ (function(module, exports, __webpack_require__) {
9719
9720var aCallable = __webpack_require__(154);
9721
9722// `GetMethod` abstract operation
9723// https://tc39.es/ecma262/#sec-getmethod
9724module.exports = function (V, P) {
9725  var func = V[P];
9726  return func == null ? undefined : aCallable(func);
9727};
9728
9729
9730/***/ }),
9731/* 154 */
9732/***/ (function(module, exports, __webpack_require__) {
9733
9734var global = __webpack_require__(1);
9735var isCallable = __webpack_require__(7);
9736var tryToString = __webpack_require__(155);
9737
9738var TypeError = global.TypeError;
9739
9740// `Assert: IsCallable(argument) is true`
9741module.exports = function (argument) {
9742  if (isCallable(argument)) return argument;
9743  throw TypeError(tryToString(argument) + ' is not a function');
9744};
9745
9746
9747/***/ }),
9748/* 155 */
9749/***/ (function(module, exports, __webpack_require__) {
9750
9751var global = __webpack_require__(1);
9752
9753var String = global.String;
9754
9755module.exports = function (argument) {
9756  try {
9757    return String(argument);
9758  } catch (error) {
9759    return 'Object';
9760  }
9761};
9762
9763
9764/***/ }),
9765/* 156 */
9766/***/ (function(module, exports, __webpack_require__) {
9767
9768var global = __webpack_require__(1);
9769var call = __webpack_require__(40);
9770var isCallable = __webpack_require__(7);
9771var isObject = __webpack_require__(20);
9772
9773var TypeError = global.TypeError;
9774
9775// `OrdinaryToPrimitive` abstract operation
9776// https://tc39.es/ecma262/#sec-ordinarytoprimitive
9777module.exports = function (input, pref) {
9778  var fn, val;
9779  if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;
9780  if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;
9781  if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;
9782  throw TypeError("Can't convert object to primitive value");
9783};
9784
9785
9786/***/ }),
9787/* 157 */
9788/***/ (function(module, exports) {
9789
9790module.exports = false;
9791
9792
9793/***/ }),
9794/* 158 */
9795/***/ (function(module, exports, __webpack_require__) {
9796
9797var global = __webpack_require__(1);
9798var requireObjectCoercible = __webpack_require__(72);
9799
9800var Object = global.Object;
9801
9802// `ToObject` abstract operation
9803// https://tc39.es/ecma262/#sec-toobject
9804module.exports = function (argument) {
9805  return Object(requireObjectCoercible(argument));
9806};
9807
9808
9809/***/ }),
9810/* 159 */
9811/***/ (function(module, exports, __webpack_require__) {
9812
9813var global = __webpack_require__(1);
9814var isCallable = __webpack_require__(7);
9815var hasOwn = __webpack_require__(9);
9816var createNonEnumerableProperty = __webpack_require__(43);
9817var setGlobal = __webpack_require__(42);
9818var inspectSource = __webpack_require__(82);
9819var InternalStateModule = __webpack_require__(160);
9820var CONFIGURABLE_FUNCTION_NAME = __webpack_require__(162).CONFIGURABLE;
9821
9822var getInternalState = InternalStateModule.get;
9823var enforceInternalState = InternalStateModule.enforce;
9824var TEMPLATE = String(String).split('String');
9825
9826(module.exports = function (O, key, value, options) {
9827  var unsafe = options ? !!options.unsafe : false;
9828  var simple = options ? !!options.enumerable : false;
9829  var noTargetGet = options ? !!options.noTargetGet : false;
9830  var name = options && options.name !== undefined ? options.name : key;
9831  var state;
9832  if (isCallable(value)) {
9833    if (String(name).slice(0, 7) === 'Symbol(') {
9834      name = '[' + String(name).replace(/^Symbol\(([^)]*)\)/, '$1') + ']';
9835    }
9836    if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {
9837      createNonEnumerableProperty(value, 'name', name);
9838    }
9839    state = enforceInternalState(value);
9840    if (!state.source) {
9841      state.source = TEMPLATE.join(typeof name == 'string' ? name : '');
9842    }
9843  }
9844  if (O === global) {
9845    if (simple) O[key] = value;
9846    else setGlobal(key, value);
9847    return;
9848  } else if (!unsafe) {
9849    delete O[key];
9850  } else if (!noTargetGet && O[key]) {
9851    simple = true;
9852  }
9853  if (simple) O[key] = value;
9854  else createNonEnumerableProperty(O, key, value);
9855// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
9856})(Function.prototype, 'toString', function toString() {
9857  return isCallable(this) && getInternalState(this).source || inspectSource(this);
9858});
9859
9860
9861/***/ }),
9862/* 160 */
9863/***/ (function(module, exports, __webpack_require__) {
9864
9865var NATIVE_WEAK_MAP = __webpack_require__(161);
9866var global = __webpack_require__(1);
9867var uncurryThis = __webpack_require__(5);
9868var isObject = __webpack_require__(20);
9869var createNonEnumerableProperty = __webpack_require__(43);
9870var hasOwn = __webpack_require__(9);
9871var shared = __webpack_require__(41);
9872var sharedKey = __webpack_require__(83);
9873var hiddenKeys = __webpack_require__(44);
9874
9875var OBJECT_ALREADY_INITIALIZED = 'Object already initialized';
9876var TypeError = global.TypeError;
9877var WeakMap = global.WeakMap;
9878var set, get, has;
9879
9880var enforce = function (it) {
9881  return has(it) ? get(it) : set(it, {});
9882};
9883
9884var getterFor = function (TYPE) {
9885  return function (it) {
9886    var state;
9887    if (!isObject(it) || (state = get(it)).type !== TYPE) {
9888      throw TypeError('Incompatible receiver, ' + TYPE + ' required');
9889    } return state;
9890  };
9891};
9892
9893if (NATIVE_WEAK_MAP || shared.state) {
9894  var store = shared.state || (shared.state = new WeakMap());
9895  var wmget = uncurryThis(store.get);
9896  var wmhas = uncurryThis(store.has);
9897  var wmset = uncurryThis(store.set);
9898  set = function (it, metadata) {
9899    if (wmhas(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);
9900    metadata.facade = it;
9901    wmset(store, it, metadata);
9902    return metadata;
9903  };
9904  get = function (it) {
9905    return wmget(store, it) || {};
9906  };
9907  has = function (it) {
9908    return wmhas(store, it);
9909  };
9910} else {
9911  var STATE = sharedKey('state');
9912  hiddenKeys[STATE] = true;
9913  set = function (it, metadata) {
9914    if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);
9915    metadata.facade = it;
9916    createNonEnumerableProperty(it, STATE, metadata);
9917    return metadata;
9918  };
9919  get = function (it) {
9920    return hasOwn(it, STATE) ? it[STATE] : {};
9921  };
9922  has = function (it) {
9923    return hasOwn(it, STATE);
9924  };
9925}
9926
9927module.exports = {
9928  set: set,
9929  get: get,
9930  has: has,
9931  enforce: enforce,
9932  getterFor: getterFor
9933};
9934
9935
9936/***/ }),
9937/* 161 */
9938/***/ (function(module, exports, __webpack_require__) {
9939
9940var global = __webpack_require__(1);
9941var isCallable = __webpack_require__(7);
9942var inspectSource = __webpack_require__(82);
9943
9944var WeakMap = global.WeakMap;
9945
9946module.exports = isCallable(WeakMap) && /native code/.test(inspectSource(WeakMap));
9947
9948
9949/***/ }),
9950/* 162 */
9951/***/ (function(module, exports, __webpack_require__) {
9952
9953var DESCRIPTORS = __webpack_require__(14);
9954var hasOwn = __webpack_require__(9);
9955
9956var FunctionPrototype = Function.prototype;
9957// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
9958var getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;
9959
9960var EXISTS = hasOwn(FunctionPrototype, 'name');
9961// additional protection from minified / mangled / dropped function names
9962var PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';
9963var CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));
9964
9965module.exports = {
9966  EXISTS: EXISTS,
9967  PROPER: PROPER,
9968  CONFIGURABLE: CONFIGURABLE
9969};
9970
9971
9972/***/ }),
9973/* 163 */
9974/***/ (function(module, exports, __webpack_require__) {
9975
9976var hasOwn = __webpack_require__(9);
9977var ownKeys = __webpack_require__(164);
9978var getOwnPropertyDescriptorModule = __webpack_require__(70);
9979var definePropertyModule = __webpack_require__(28);
9980
9981module.exports = function (target, source) {
9982  var keys = ownKeys(source);
9983  var defineProperty = definePropertyModule.f;
9984  var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;
9985  for (var i = 0; i < keys.length; i++) {
9986    var key = keys[i];
9987    if (!hasOwn(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));
9988  }
9989};
9990
9991
9992/***/ }),
9993/* 164 */
9994/***/ (function(module, exports, __webpack_require__) {
9995
9996var getBuiltIn = __webpack_require__(27);
9997var uncurryThis = __webpack_require__(5);
9998var getOwnPropertyNamesModule = __webpack_require__(165);
9999var getOwnPropertySymbolsModule = __webpack_require__(169);
10000var anObject = __webpack_require__(29);
10001
vendor: 1,501 bytes, lines 10002-10050
10002var concat = uncurryThis([].concat);
10003
10004// all object keys, includes non-enumerable and symbols
10005module.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {
10006  var keys = getOwnPropertyNamesModule.f(anObject(it));
10007  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;
10008  return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;
10009};
10010
10011
10012/***/ }),
10013/* 165 */
10014/***/ (function(module, exports, __webpack_require__) {
10015
10016var internalObjectKeys = __webpack_require__(84);
10017var enumBugKeys = __webpack_require__(45);
10018
10019var hiddenKeys = enumBugKeys.concat('length', 'prototype');
10020
10021// `Object.getOwnPropertyNames` method
10022// https://tc39.es/ecma262/#sec-object.getownpropertynames
10023// eslint-disable-next-line es/no-object-getownpropertynames -- safe
10024exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
10025  return internalObjectKeys(O, hiddenKeys);
10026};
10027
10028
10029/***/ }),
10030/* 166 */
10031/***/ (function(module, exports, __webpack_require__) {
10032
10033var toIntegerOrInfinity = __webpack_require__(86);
10034
10035var max = Math.max;
10036var min = Math.min;
10037
10038// Helper for a popular repeating case of the spec:
10039// Let integer be ? ToInteger(index).
10040// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).
10041module.exports = function (index, length) {
10042  var integer = toIntegerOrInfinity(index);
10043  return integer < 0 ? max(integer + length, 0) : min(integer, length);
10044};
10045
10046
10047/***/ }),
10048/* 167 */
10049/***/ (function(module, exports, __webpack_require__) {
10050
vendor: 7,288 bytes, lines 10051-10300
10051var toLength = __webpack_require__(168);
10052
10053// `LengthOfArrayLike` abstract operation
10054// https://tc39.es/ecma262/#sec-lengthofarraylike
10055module.exports = function (obj) {
10056  return toLength(obj.length);
10057};
10058
10059
10060/***/ }),
10061/* 168 */
10062/***/ (function(module, exports, __webpack_require__) {
10063
10064var toIntegerOrInfinity = __webpack_require__(86);
10065
10066var min = Math.min;
10067
10068// `ToLength` abstract operation
10069// https://tc39.es/ecma262/#sec-tolength
10070module.exports = function (argument) {
10071  return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991
10072};
10073
10074
10075/***/ }),
10076/* 169 */
10077/***/ (function(module, exports) {
10078
10079// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe
10080exports.f = Object.getOwnPropertySymbols;
10081
10082
10083/***/ }),
10084/* 170 */
10085/***/ (function(module, exports, __webpack_require__) {
10086
10087var fails = __webpack_require__(19);
10088var isCallable = __webpack_require__(7);
10089
10090var replacement = /#|\.prototype\./;
10091
10092var isForced = function (feature, detection) {
10093  var value = data[normalize(feature)];
10094  return value == POLYFILL ? true
10095    : value == NATIVE ? false
10096    : isCallable(detection) ? fails(detection)
10097    : !!detection;
10098};
10099
10100var normalize = isForced.normalize = function (string) {
10101  return String(string).replace(replacement, '.').toLowerCase();
10102};
10103
10104var data = isForced.data = {};
10105var NATIVE = isForced.NATIVE = 'N';
10106var POLYFILL = isForced.POLYFILL = 'P';
10107
10108module.exports = isForced;
10109
10110
10111/***/ }),
10112/* 171 */
10113/***/ (function(module, exports, __webpack_require__) {
10114
10115var wellKnownSymbol = __webpack_require__(77);
10116var create = __webpack_require__(172);
10117var definePropertyModule = __webpack_require__(28);
10118
10119var UNSCOPABLES = wellKnownSymbol('unscopables');
10120var ArrayPrototype = Array.prototype;
10121
10122// Array.prototype[@@unscopables]
10123// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
10124if (ArrayPrototype[UNSCOPABLES] == undefined) {
10125  definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {
10126    configurable: true,
10127    value: create(null)
10128  });
10129}
10130
10131// add a key to Array.prototype[@@unscopables]
10132module.exports = function (key) {
10133  ArrayPrototype[UNSCOPABLES][key] = true;
10134};
10135
10136
10137/***/ }),
10138/* 172 */
10139/***/ (function(module, exports, __webpack_require__) {
10140
10141/* global ActiveXObject -- old IE, WSH */
10142var anObject = __webpack_require__(29);
10143var defineProperties = __webpack_require__(173);
10144var enumBugKeys = __webpack_require__(45);
10145var hiddenKeys = __webpack_require__(44);
10146var html = __webpack_require__(175);
10147var documentCreateElement = __webpack_require__(81);
10148var sharedKey = __webpack_require__(83);
10149
10150var GT = '>';
10151var LT = '<';
10152var PROTOTYPE = 'prototype';
10153var SCRIPT = 'script';
10154var IE_PROTO = sharedKey('IE_PROTO');
10155
10156var EmptyConstructor = function () { /* empty */ };
10157
10158var scriptTag = function (content) {
10159  return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;
10160};
10161
10162// Create object with fake `null` prototype: use ActiveX Object with cleared prototype
10163var NullProtoObjectViaActiveX = function (activeXDocument) {
10164  activeXDocument.write(scriptTag(''));
10165  activeXDocument.close();
10166  var temp = activeXDocument.parentWindow.Object;
10167  activeXDocument = null; // avoid memory leak
10168  return temp;
10169};
10170
10171// Create object with fake `null` prototype: use iframe Object with cleared prototype
10172var NullProtoObjectViaIFrame = function () {
10173  // Thrash, waste and sodomy: IE GC bug
10174  var iframe = documentCreateElement('iframe');
10175  var JS = 'java' + SCRIPT + ':';
10176  var iframeDocument;
10177  iframe.style.display = 'none';
10178  html.appendChild(iframe);
10179  // https://github.com/zloirock/core-js/issues/475
10180  iframe.src = String(JS);
10181  iframeDocument = iframe.contentWindow.document;
10182  iframeDocument.open();
10183  iframeDocument.write(scriptTag('document.F=Object'));
10184  iframeDocument.close();
10185  return iframeDocument.F;
10186};
10187
10188// Check for document.domain and active x support
10189// No need to use active x approach when document.domain is not set
10190// see https://github.com/es-shims/es5-shim/issues/150
10191// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346
10192// avoid IE GC bug
10193var activeXDocument;
10194var NullProtoObject = function () {
10195  try {
10196    activeXDocument = new ActiveXObject('htmlfile');
10197  } catch (error) { /* ignore */ }
10198  NullProtoObject = typeof document != 'undefined'
10199    ? document.domain && activeXDocument
10200      ? NullProtoObjectViaActiveX(activeXDocument) // old IE
10201      : NullProtoObjectViaIFrame()
10202    : NullProtoObjectViaActiveX(activeXDocument); // WSH
10203  var length = enumBugKeys.length;
10204  while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];
10205  return NullProtoObject();
10206};
10207
10208hiddenKeys[IE_PROTO] = true;
10209
10210// `Object.create` method
10211// https://tc39.es/ecma262/#sec-object.create
10212module.exports = Object.create || function create(O, Properties) {
10213  var result;
10214  if (O !== null) {
10215    EmptyConstructor[PROTOTYPE] = anObject(O);
10216    result = new EmptyConstructor();
10217    EmptyConstructor[PROTOTYPE] = null;
10218    // add "__proto__" for Object.getPrototypeOf polyfill
10219    result[IE_PROTO] = O;
10220  } else result = NullProtoObject();
10221  return Properties === undefined ? result : defineProperties(result, Properties);
10222};
10223
10224
10225/***/ }),
10226/* 173 */
10227/***/ (function(module, exports, __webpack_require__) {
10228
10229var DESCRIPTORS = __webpack_require__(14);
10230var definePropertyModule = __webpack_require__(28);
10231var anObject = __webpack_require__(29);
10232var toIndexedObject = __webpack_require__(26);
10233var objectKeys = __webpack_require__(174);
10234
10235// `Object.defineProperties` method
10236// https://tc39.es/ecma262/#sec-object.defineproperties
10237// eslint-disable-next-line es/no-object-defineproperties -- safe
10238module.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {
10239  anObject(O);
10240  var props = toIndexedObject(Properties);
10241  var keys = objectKeys(Properties);
10242  var length = keys.length;
10243  var index = 0;
10244  var key;
10245  while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);
10246  return O;
10247};
10248
10249
10250/***/ }),
10251/* 174 */
10252/***/ (function(module, exports, __webpack_require__) {
10253
10254var internalObjectKeys = __webpack_require__(84);
10255var enumBugKeys = __webpack_require__(45);
10256
10257// `Object.keys` method
10258// https://tc39.es/ecma262/#sec-object.keys
10259// eslint-disable-next-line es/no-object-keys -- safe
10260module.exports = Object.keys || function keys(O) {
10261  return internalObjectKeys(O, enumBugKeys);
10262};
10263
10264
10265/***/ }),
10266/* 175 */
10267/***/ (function(module, exports, __webpack_require__) {
10268
10269var getBuiltIn = __webpack_require__(27);
10270
10271module.exports = getBuiltIn('document', 'documentElement');
10272
10273
10274/***/ }),
10275/* 176 */
10276/***/ (function(module, exports, __webpack_require__) {
10277
10278var global = __webpack_require__(1);
10279var uncurryThis = __webpack_require__(5);
10280
10281module.exports = function (CONSTRUCTOR, METHOD) {
10282  return uncurryThis(global[CONSTRUCTOR].prototype[METHOD]);
10283};
10284
10285
10286/***/ }),
10287/* 177 */
10288/***/ (function(module, __webpack_exports__, __webpack_require__) {
10289
10290"use strict";
10291__webpack_require__.r(__webpack_exports__);
10292/* harmony import */ var _Symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(89);
10293/* harmony import */ var _getRawTag_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(180);
10294/* harmony import */ var _objectToString_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(181);
10295
10296
10297
10298
10299/** `Object#toString` result references. */
10300var nullTag = '[object Null]',
10301    undefinedTag = '[object Undefined]';
10302
10303/** Built-in value references. */
10304var symToStringTag = _Symbol_js__WEBPACK_IMPORTED_MODULE_0__["default"] ? _Symbol_js__WEBPACK_IMPORTED_MODULE_0__["default"].toStringTag : undefined;
10305
10306/**
10307 * The base implementation of `getTag` without fallbacks for buggy environments.
10308 *
10309 * @private
10310 * @param {*} value The value to query.
10311 * @returns {string} Returns the `toStringTag`.
10312 */
10313function baseGetTag(value) {
10314  if (value == null) {
10315    return value === undefined ? undefinedTag : nullTag;
10316  }
10317  return (symToStringTag && symToStringTag in Object(value))
10318    ? Object(_getRawTag_js__WEBPACK_IMPORTED_MODULE_1__["default"])(value)
10319    : Object(_objectToString_js__WEBPACK_IMPORTED_MODULE_2__["default"])(value);
10320}
10321
10322/* harmony default export */ __webpack_exports__["default"] = (baseGetTag);
10323
10324
10325/***/ }),
10326/* 178 */
10327/***/ (function(module, __webpack_exports__, __webpack_require__) {
10328
10329"use strict";
10330__webpack_require__.r(__webpack_exports__);
10331/* harmony import */ var _freeGlobal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(179);
10332
10333
10334/** Detect free variable `self`. */
10335var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
10336
10337/** Used as a reference to the global object. */
10338var root = _freeGlobal_js__WEBPACK_IMPORTED_MODULE_0__["default"] || freeSelf || Function('return this')();
10339
10340/* harmony default export */ __webpack_exports__["default"] = (root);
10341
10342
10343/***/ }),
10344/* 179 */
10345/***/ (function(module, __webpack_exports__, __webpack_require__) {
10346
10347"use strict";
10348__webpack_require__.r(__webpack_exports__);
10349/* WEBPACK VAR INJECTION */(function(global) {/** Detect free variable `global` from Node.js. */
10350var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
10351
10352/* harmony default export */ __webpack_exports__["default"] = (freeGlobal);
10353
10354/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(25)))
10355
10356/***/ }),
10357/* 180 */
10358/***/ (function(module, __webpack_exports__, __webpack_require__) {
10359
10360"use strict";
10361__webpack_require__.r(__webpack_exports__);
10362/* harmony import */ var _Symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(89);
10363
10364
10365/** Used for built-in method references. */
10366var objectProto = Object.prototype;
10367
10368/** Used to check objects for own properties. */
10369var hasOwnProperty = objectProto.hasOwnProperty;
10370
10371/**
10372 * Used to resolve the
10373 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
10374 * of values.
10375 */
10376var nativeObjectToString = objectProto.toString;
10377
10378/** Built-in value references. */
10379var symToStringTag = _Symbol_js__WEBPACK_IMPORTED_MODULE_0__["default"] ? _Symbol_js__WEBPACK_IMPORTED_MODULE_0__["default"].toStringTag : undefined;
10380
10381/**
10382 * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
10383 *
10384 * @private
10385 * @param {*} value The value to query.
10386 * @returns {string} Returns the raw `toStringTag`.
10387 */
10388function getRawTag(value) {
10389  var isOwn = hasOwnProperty.call(value, symToStringTag),
10390      tag = value[symToStringTag];
10391
10392  try {
10393    value[symToStringTag] = undefined;
10394    var unmasked = true;
10395  } catch (e) {}
10396
10397  var result = nativeObjectToString.call(value);
10398  if (unmasked) {
10399    if (isOwn) {
10400      value[symToStringTag] = tag;
10401    } else {
10402      delete value[symToStringTag];
10403    }
10404  }
10405  return result;
10406}
10407
10408/* harmony default export */ __webpack_exports__["default"] = (getRawTag);
10409
10410
10411/***/ }),
10412/* 181 */
10413/***/ (function(module, __webpack_exports__, __webpack_require__) {
10414
10415"use strict";
10416__webpack_require__.r(__webpack_exports__);
10417/** Used for built-in method references. */
10418var objectProto = Object.prototype;
10419
10420/**
10421 * Used to resolve the
10422 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
10423 * of values.
10424 */
10425var nativeObjectToString = objectProto.toString;
10426
10427/**
10428 * Converts `value` to a string using `Object.prototype.toString`.
10429 *
10430 * @private
10431 * @param {*} value The value to convert.
10432 * @returns {string} Returns the converted string.
10433 */
10434function objectToString(value) {
10435  return nativeObjectToString.call(value);
10436}
10437
10438/* harmony default export */ __webpack_exports__["default"] = (objectToString);
10439
10440
10441/***/ }),
10442/* 182 */
10443/***/ (function(module, __webpack_exports__, __webpack_require__) {
10444
10445"use strict";
10446__webpack_require__.r(__webpack_exports__);
10447/* harmony import */ var _overArg_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(183);
10448
10449
10450/** Built-in value references. */
10451var getPrototype = Object(_overArg_js__WEBPACK_IMPORTED_MODULE_0__["default"])(Object.getPrototypeOf, Object);
10452
10453/* harmony default export */ __webpack_exports__["default"] = (getPrototype);
10454
10455
10456/***/ }),
10457/* 183 */
10458/***/ (function(module, __webpack_exports__, __webpack_require__) {
10459
10460"use strict";
10461__webpack_require__.r(__webpack_exports__);
10462/**
10463 * Creates a unary function that invokes `func` with its argument transformed.
10464 *
10465 * @private
10466 * @param {Function} func The function to wrap.
10467 * @param {Function} transform The argument transform.
10468 * @returns {Function} Returns the new function.
10469 */
10470function overArg(func, transform) {
10471  return function(arg) {
10472    return func(transform(arg));
10473  };
10474}
10475
10476/* harmony default export */ __webpack_exports__["default"] = (overArg);
10477
10478
10479/***/ }),
10480/* 184 */
10481/***/ (function(module, __webpack_exports__, __webpack_require__) {
10482
10483"use strict";
10484__webpack_require__.r(__webpack_exports__);
10485/**
10486 * Checks if `value` is object-like. A value is object-like if it's not `null`
10487 * and has a `typeof` result of "object".
10488 *
10489 * @static
10490 * @memberOf _
10491 * @since 4.0.0
10492 * @category Lang
10493 * @param {*} value The value to check.
10494 * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
10495 * @example
10496 *
10497 * _.isObjectLike({});
10498 * // => true
10499 *
10500 * _.isObjectLike([1, 2, 3]);
10501 * // => true
10502 *
10503 * _.isObjectLike(_.noop);
10504 * // => false
10505 *
10506 * _.isObjectLike(null);
10507 * // => false
10508 */
10509function isObjectLike(value) {
10510  return value != null && typeof value == 'object';
10511}
10512
10513/* harmony default export */ __webpack_exports__["default"] = (isObjectLike);
10514
10515
10516/***/ }),
10517/* 185 */
10518/***/ (function(module, __webpack_exports__, __webpack_require__) {
10519
10520"use strict";
10521__webpack_require__.r(__webpack_exports__);
10522/* WEBPACK VAR INJECTION */(function(global, module) {/* harmony import */ var _ponyfill_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(187);
10523/* global window */
10524
10525
10526var root;
10527
10528if (typeof self !== 'undefined') {
10529  root = self;
10530} else if (typeof window !== 'undefined') {
10531  root = window;
10532} else if (typeof global !== 'undefined') {
10533  root = global;
10534} else if (true) {
10535  root = module;
10536} else {}
10537
10538var result = Object(_ponyfill_js__WEBPACK_IMPORTED_MODULE_0__["default"])(root);
10539/* harmony default export */ __webpack_exports__["default"] = (result);
10540
10541/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(25), __webpack_require__(186)(module)))
10542
10543/***/ }),
10544/* 186 */
10545/***/ (function(module, exports) {
10546
10547module.exports = function(originalModule) {
10548	if (!originalModule.webpackPolyfill) {
10549		var module = Object.create(originalModule);
10550		// module.parent = undefined by default
10551		if (!module.children) module.children = [];
10552		Object.defineProperty(module, "loaded", {
10553			enumerable: true,
10554			get: function() {
10555				return module.l;
10556			}
10557		});
10558		Object.defineProperty(module, "id", {
10559			enumerable: true,
10560			get: function() {
10561				return module.i;
10562			}
10563		});
10564		Object.defineProperty(module, "exports", {
10565			enumerable: true
10566		});
10567		module.webpackPolyfill = 1;
10568	}
10569	return module;
10570};
10571
10572
10573/***/ }),
10574/* 187 */
10575/***/ (function(module, __webpack_exports__, __webpack_require__) {
10576
10577"use strict";
10578__webpack_require__.r(__webpack_exports__);
10579/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return symbolObservablePonyfill; });
10580function symbolObservablePonyfill(root) {
10581	var result;
10582	var Symbol = root.Symbol;
10583
10584	if (typeof Symbol === 'function') {
10585		if (Symbol.observable) {
10586			result = Symbol.observable;
10587		} else {
10588			result = Symbol('observable');
10589			Symbol.observable = result;
10590		}
10591	} else {
10592		result = '@@observable';
10593	}
10594
10595	return result;
10596};
10597
10598
10599/***/ }),
10600/* 188 */
10601/***/ (function(module, exports, __webpack_require__) {
10602
10603"use strict";
10604
10605
10606Object.defineProperty(exports, "__esModule", {
10607  value: true
10608});
10609exports["default"] = void 0;
10610
10611var _redux = __webpack_require__(87);
10612
10613var _IX2DataReducer = __webpack_require__(189);
10614
10615var _IX2RequestReducer = __webpack_require__(195);
10616
10617var _IX2SessionReducer = __webpack_require__(196);
10618
10619var _shared = __webpack_require__(15);
10620
10621var _IX2InstancesReducer = __webpack_require__(282);
10622
10623var _IX2ParametersReducer = __webpack_require__(283);
10624
10625var ixElements = _shared.IX2ElementsReducer.ixElements;
10626
10627var _default = (0, _redux.combineReducers)({
10628  ixData: _IX2DataReducer.ixData,
10629  ixRequest: _IX2RequestReducer.ixRequest,
10630  ixSession: _IX2SessionReducer.ixSession,
10631  ixElements: ixElements,
10632  ixInstances: _IX2InstancesReducer.ixInstances,
10633  ixParameters: _IX2ParametersReducer.ixParameters
10634});
10635
10636exports["default"] = _default;
10637
10638/***/ }),
10639/* 189 */
10640/***/ (function(module, exports, __webpack_require__) {
10641
10642"use strict";
10643
10644
10645Object.defineProperty(exports, "__esModule", {
10646  value: true
10647});
10648exports.ixData = void 0;
10649
10650var _constants = __webpack_require__(4);
10651
10652var IX2_RAW_DATA_IMPORTED = _constants.IX2EngineActionTypes.IX2_RAW_DATA_IMPORTED;
10653
10654var ixData = function ixData() {
10655  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Object.freeze({});
10656  var action = arguments.length > 1 ? arguments[1] : undefined;
10657
10658  switch (action.type) {
10659    case IX2_RAW_DATA_IMPORTED:
10660      {
10661        return action.payload.ixData || Object.freeze({});
10662      }
10663
10664    default:
10665      {
10666        return state;
10667      }
10668  }
10669};
10670
10671exports.ixData = ixData;
10672
10673/***/ }),
10674/* 190 */
10675/***/ (function(module, exports, __webpack_require__) {
10676
10677"use strict";
10678
10679
10680Object.defineProperty(exports, "__esModule", {
10681  value: true
10682});
10683exports.QuickEffectDirectionConsts = exports.QuickEffectIds = exports.EventLimitAffectedElements = exports.EventContinuousMouseAxes = exports.EventBasedOn = exports.EventAppliesTo = exports.EventTypeConsts = void 0;
10684/**
10685 * Event Type IDs
10686 */
10687
10688var EventTypeConsts = {
10689  NAVBAR_OPEN: 'NAVBAR_OPEN',
10690  NAVBAR_CLOSE: 'NAVBAR_CLOSE',
10691  TAB_ACTIVE: 'TAB_ACTIVE',
10692  TAB_INACTIVE: 'TAB_INACTIVE',
10693  SLIDER_ACTIVE: 'SLIDER_ACTIVE',
10694  SLIDER_INACTIVE: 'SLIDER_INACTIVE',
10695  DROPDOWN_OPEN: 'DROPDOWN_OPEN',
10696  DROPDOWN_CLOSE: 'DROPDOWN_CLOSE',
10697  MOUSE_CLICK: 'MOUSE_CLICK',
10698  MOUSE_SECOND_CLICK: 'MOUSE_SECOND_CLICK',
10699  MOUSE_DOWN: 'MOUSE_DOWN',
10700  MOUSE_UP: 'MOUSE_UP',
10701  MOUSE_OVER: 'MOUSE_OVER',
10702  MOUSE_OUT: 'MOUSE_OUT',
10703  MOUSE_MOVE: 'MOUSE_MOVE',
10704  MOUSE_MOVE_IN_VIEWPORT: 'MOUSE_MOVE_IN_VIEWPORT',
10705  SCROLL_INTO_VIEW: 'SCROLL_INTO_VIEW',
10706  SCROLL_OUT_OF_VIEW: 'SCROLL_OUT_OF_VIEW',
10707  SCROLLING_IN_VIEW: 'SCROLLING_IN_VIEW',
10708  ECOMMERCE_CART_OPEN: 'ECOMMERCE_CART_OPEN',
10709  ECOMMERCE_CART_CLOSE: 'ECOMMERCE_CART_CLOSE',
10710  PAGE_START: 'PAGE_START',
10711  PAGE_FINISH: 'PAGE_FINISH',
10712  PAGE_SCROLL_UP: 'PAGE_SCROLL_UP',
10713  PAGE_SCROLL_DOWN: 'PAGE_SCROLL_DOWN',
10714  PAGE_SCROLL: 'PAGE_SCROLL'
10715};
10716/**
10717 * Event Config Enums
10718 */
10719
10720exports.EventTypeConsts = EventTypeConsts;
10721var EventAppliesTo = {
10722  ELEMENT: 'ELEMENT',
10723  CLASS: 'CLASS',
10724  PAGE: 'PAGE'
10725};
10726exports.EventAppliesTo = EventAppliesTo;
10727var EventBasedOn = {
10728  ELEMENT: 'ELEMENT',
10729  VIEWPORT: 'VIEWPORT'
10730};
10731exports.EventBasedOn = EventBasedOn;
10732var EventContinuousMouseAxes = {
10733  X_AXIS: 'X_AXIS',
10734  Y_AXIS: 'Y_AXIS'
10735};
10736exports.EventContinuousMouseAxes = EventContinuousMouseAxes;
10737var EventLimitAffectedElements = {
10738  CHILDREN: 'CHILDREN',
10739  SIBLINGS: 'SIBLINGS',
10740  IMMEDIATE_CHILDREN: 'IMMEDIATE_CHILDREN'
10741};
10742/**
10743 * Quick Effect Enums
10744 */
10745
10746exports.EventLimitAffectedElements = EventLimitAffectedElements;
10747var QuickEffectIds = {
10748  FADE_EFFECT: 'FADE_EFFECT',
10749  SLIDE_EFFECT: 'SLIDE_EFFECT',
10750  GROW_EFFECT: 'GROW_EFFECT',
10751  SHRINK_EFFECT: 'SHRINK_EFFECT',
10752  SPIN_EFFECT: 'SPIN_EFFECT',
10753  FLY_EFFECT: 'FLY_EFFECT',
10754  POP_EFFECT: 'POP_EFFECT',
10755  FLIP_EFFECT: 'FLIP_EFFECT',
10756  JIGGLE_EFFECT: 'JIGGLE_EFFECT',
10757  PULSE_EFFECT: 'PULSE_EFFECT',
10758  DROP_EFFECT: 'DROP_EFFECT',
10759  BLINK_EFFECT: 'BLINK_EFFECT',
10760  BOUNCE_EFFECT: 'BOUNCE_EFFECT',
10761  FLIP_LEFT_TO_RIGHT_EFFECT: 'FLIP_LEFT_TO_RIGHT_EFFECT',
10762  FLIP_RIGHT_TO_LEFT_EFFECT: 'FLIP_RIGHT_TO_LEFT_EFFECT',
10763  RUBBER_BAND_EFFECT: 'RUBBER_BAND_EFFECT',
10764  JELLO_EFFECT: 'JELLO_EFFECT',
10765  GROW_BIG_EFFECT: 'GROW_BIG_EFFECT',
10766  SHRINK_BIG_EFFECT: 'SHRINK_BIG_EFFECT',
10767  PLUGIN_LOTTIE_EFFECT: 'PLUGIN_LOTTIE_EFFECT'
10768};
10769/**
10770 * Quick Effect Direction Enums
10771 */
10772
10773exports.QuickEffectIds = QuickEffectIds;
10774var QuickEffectDirectionConsts = {
10775  LEFT: 'LEFT',
10776  RIGHT: 'RIGHT',
10777  BOTTOM: 'BOTTOM',
10778  TOP: 'TOP',
10779  BOTTOM_LEFT: 'BOTTOM_LEFT',
10780  BOTTOM_RIGHT: 'BOTTOM_RIGHT',
10781  TOP_RIGHT: 'TOP_RIGHT',
10782  TOP_LEFT: 'TOP_LEFT',
10783  CLOCKWISE: 'CLOCKWISE',
10784  COUNTER_CLOCKWISE: 'COUNTER_CLOCKWISE'
10785};
10786exports.QuickEffectDirectionConsts = QuickEffectDirectionConsts;
10787
10788/***/ }),
10789/* 191 */
10790/***/ (function(module, exports, __webpack_require__) {
10791
10792"use strict";
10793
10794
10795Object.defineProperty(exports, "__esModule", {
10796  value: true
10797});
10798exports.InteractionTypeConsts = void 0;
10799var InteractionTypeConsts = {
10800  MOUSE_CLICK_INTERACTION: 'MOUSE_CLICK_INTERACTION',
10801  MOUSE_HOVER_INTERACTION: 'MOUSE_HOVER_INTERACTION',
10802  MOUSE_MOVE_INTERACTION: 'MOUSE_MOVE_INTERACTION',
10803  SCROLL_INTO_VIEW_INTERACTION: 'SCROLL_INTO_VIEW_INTERACTION',
10804  SCROLLING_IN_VIEW_INTERACTION: 'SCROLLING_IN_VIEW_INTERACTION',
10805  MOUSE_MOVE_IN_VIEWPORT_INTERACTION: 'MOUSE_MOVE_IN_VIEWPORT_INTERACTION',
10806  PAGE_IS_SCROLLING_INTERACTION: 'PAGE_IS_SCROLLING_INTERACTION',
10807  PAGE_LOAD_INTERACTION: 'PAGE_LOAD_INTERACTION',
10808  PAGE_SCROLLED_INTERACTION: 'PAGE_SCROLLED_INTERACTION',
10809  NAVBAR_INTERACTION: 'NAVBAR_INTERACTION',
10810  DROPDOWN_INTERACTION: 'DROPDOWN_INTERACTION',
10811  ECOMMERCE_CART_INTERACTION: 'ECOMMERCE_CART_INTERACTION',
10812  TAB_INTERACTION: 'TAB_INTERACTION',
10813  SLIDER_INTERACTION: 'SLIDER_INTERACTION'
10814};
10815exports.InteractionTypeConsts = InteractionTypeConsts;
10816
10817/***/ }),
10818/* 192 */
10819/***/ (function(module, exports, __webpack_require__) {
10820
10821"use strict";
10822
10823
10824var _interopRequireDefault = __webpack_require__(0);
10825
10826var _defineProperty2 = _interopRequireDefault(__webpack_require__(21));
10827
10828var _ReducedMotionTypes;
10829
10830Object.defineProperty(exports, "__esModule", {
10831  value: true
10832});
10833exports.ReducedMotionTypes = void 0;
10834
10835var _animationActions = __webpack_require__(94);
10836
10837var _animationActions$Act = _animationActions.ActionTypeConsts,
10838    TRANSFORM_MOVE = _animationActions$Act.TRANSFORM_MOVE,
10839    TRANSFORM_SCALE = _animationActions$Act.TRANSFORM_SCALE,
10840    TRANSFORM_ROTATE = _animationActions$Act.TRANSFORM_ROTATE,
10841    TRANSFORM_SKEW = _animationActions$Act.TRANSFORM_SKEW,
10842    STYLE_SIZE = _animationActions$Act.STYLE_SIZE,
10843    STYLE_FILTER = _animationActions$Act.STYLE_FILTER,
10844    STYLE_FONT_VARIATION = _animationActions$Act.STYLE_FONT_VARIATION;
10845/**
10846 * Reduced Motion: Action types to bypass during `prefers-reduced-motion`
10847 */
10848
10849var ReducedMotionTypes = (_ReducedMotionTypes = {}, (0, _defineProperty2["default"])(_ReducedMotionTypes, TRANSFORM_MOVE, true), (0, _defineProperty2["default"])(_ReducedMotionTypes, TRANSFORM_SCALE, true), (0, _defineProperty2["default"])(_ReducedMotionTypes, TRANSFORM_ROTATE, true), (0, _defineProperty2["default"])(_ReducedMotionTypes, TRANSFORM_SKEW, true), (0, _defineProperty2["default"])(_ReducedMotionTypes, STYLE_SIZE, true), (0, _defineProperty2["default"])(_ReducedMotionTypes, STYLE_FILTER, true), (0, _defineProperty2["default"])(_ReducedMotionTypes, STYLE_FONT_VARIATION, true), _ReducedMotionTypes);
10850exports.ReducedMotionTypes = ReducedMotionTypes;
10851
10852/***/ }),
10853/* 193 */
10854/***/ (function(module, exports, __webpack_require__) {
10855
10856"use strict";
10857
10858
10859Object.defineProperty(exports, "__esModule", {
10860  value: true
10861});
10862exports.IX2_TEST_FRAME_RENDERED = exports.IX2_MEDIA_QUERIES_DEFINED = exports.IX2_VIEWPORT_WIDTH_CHANGED = exports.IX2_ACTION_LIST_PLAYBACK_CHANGED = exports.IX2_ELEMENT_STATE_CHANGED = exports.IX2_INSTANCE_REMOVED = exports.IX2_INSTANCE_STARTED = exports.IX2_INSTANCE_ADDED = exports.IX2_PARAMETER_CHANGED = exports.IX2_ANIMATION_FRAME_CHANGED = exports.IX2_EVENT_STATE_CHANGED = exports.IX2_EVENT_LISTENER_ADDED = exports.IX2_CLEAR_REQUESTED = exports.IX2_STOP_REQUESTED = exports.IX2_PLAYBACK_REQUESTED = exports.IX2_PREVIEW_REQUESTED = exports.IX2_SESSION_STOPPED = exports.IX2_SESSION_STARTED = exports.IX2_SESSION_INITIALIZED = exports.IX2_RAW_DATA_IMPORTED = void 0;
10863var IX2_RAW_DATA_IMPORTED = 'IX2_RAW_DATA_IMPORTED';
10864exports.IX2_RAW_DATA_IMPORTED = IX2_RAW_DATA_IMPORTED;
10865var IX2_SESSION_INITIALIZED = 'IX2_SESSION_INITIALIZED';
10866exports.IX2_SESSION_INITIALIZED = IX2_SESSION_INITIALIZED;
10867var IX2_SESSION_STARTED = 'IX2_SESSION_STARTED';
10868exports.IX2_SESSION_STARTED = IX2_SESSION_STARTED;
10869var IX2_SESSION_STOPPED = 'IX2_SESSION_STOPPED';
10870exports.IX2_SESSION_STOPPED = IX2_SESSION_STOPPED;
10871var IX2_PREVIEW_REQUESTED = 'IX2_PREVIEW_REQUESTED';
10872exports.IX2_PREVIEW_REQUESTED = IX2_PREVIEW_REQUESTED;
10873var IX2_PLAYBACK_REQUESTED = 'IX2_PLAYBACK_REQUESTED';
10874exports.IX2_PLAYBACK_REQUESTED = IX2_PLAYBACK_REQUESTED;
10875var IX2_STOP_REQUESTED = 'IX2_STOP_REQUESTED';
10876exports.IX2_STOP_REQUESTED = IX2_STOP_REQUESTED;
10877var IX2_CLEAR_REQUESTED = 'IX2_CLEAR_REQUESTED';
10878exports.IX2_CLEAR_REQUESTED = IX2_CLEAR_REQUESTED;
10879var IX2_EVENT_LISTENER_ADDED = 'IX2_EVENT_LISTENER_ADDED';
10880exports.IX2_EVENT_LISTENER_ADDED = IX2_EVENT_LISTENER_ADDED;
10881var IX2_EVENT_STATE_CHANGED = 'IX2_EVENT_STATE_CHANGED';
10882exports.IX2_EVENT_STATE_CHANGED = IX2_EVENT_STATE_CHANGED;
10883var IX2_ANIMATION_FRAME_CHANGED = 'IX2_ANIMATION_FRAME_CHANGED';
10884exports.IX2_ANIMATION_FRAME_CHANGED = IX2_ANIMATION_FRAME_CHANGED;
10885var IX2_PARAMETER_CHANGED = 'IX2_PARAMETER_CHANGED';
10886exports.IX2_PARAMETER_CHANGED = IX2_PARAMETER_CHANGED;
10887var IX2_INSTANCE_ADDED = 'IX2_INSTANCE_ADDED';
10888exports.IX2_INSTANCE_ADDED = IX2_INSTANCE_ADDED;
10889var IX2_INSTANCE_STARTED = 'IX2_INSTANCE_STARTED';
10890exports.IX2_INSTANCE_STARTED = IX2_INSTANCE_STARTED;
10891var IX2_INSTANCE_REMOVED = 'IX2_INSTANCE_REMOVED';
10892exports.IX2_INSTANCE_REMOVED = IX2_INSTANCE_REMOVED;
10893var IX2_ELEMENT_STATE_CHANGED = 'IX2_ELEMENT_STATE_CHANGED';
10894exports.IX2_ELEMENT_STATE_CHANGED = IX2_ELEMENT_STATE_CHANGED;
10895var IX2_ACTION_LIST_PLAYBACK_CHANGED = 'IX2_ACTION_LIST_PLAYBACK_CHANGED';
10896exports.IX2_ACTION_LIST_PLAYBACK_CHANGED = IX2_ACTION_LIST_PLAYBACK_CHANGED;
10897var IX2_VIEWPORT_WIDTH_CHANGED = 'IX2_VIEWPORT_WIDTH_CHANGED';
10898exports.IX2_VIEWPORT_WIDTH_CHANGED = IX2_VIEWPORT_WIDTH_CHANGED;
10899var IX2_MEDIA_QUERIES_DEFINED = 'IX2_MEDIA_QUERIES_DEFINED';
10900exports.IX2_MEDIA_QUERIES_DEFINED = IX2_MEDIA_QUERIES_DEFINED;
10901var IX2_TEST_FRAME_RENDERED = 'IX2_TEST_FRAME_RENDERED';
10902exports.IX2_TEST_FRAME_RENDERED = IX2_TEST_FRAME_RENDERED;
10903
10904/***/ }),
10905/* 194 */
10906/***/ (function(module, exports, __webpack_require__) {
10907
10908"use strict";
10909
10910
10911Object.defineProperty(exports, "__esModule", {
10912  value: true
10913});
10914exports.RENDER_PLUGIN = exports.RENDER_STYLE = exports.RENDER_GENERAL = exports.RENDER_TRANSFORM = exp
10914orts.ABSTRACT_NODE = exports.PLAIN_OBJECT = exports.HTML_ELEMENT = exports.PRESERVE_3D = exports.PARENT = exports.SIBLINGS = exports.IMMEDIATE_CHILDREN = exports.CHILDREN = exports.BAR_DELIMITER = exports.COLON_DELIMITER = exports.COMMA_DELIMITER = exports.AUTO = exports.WILL_CHANGE = exports.FLEX = exports.DISPLAY = exports.COLOR = exports.BORDER_COLOR = exports.BACKGROUND = exports.BACKGROUND_COLOR = exports.HEIGHT = exports.WIDTH = exports.FONT_VARIATION_SETTINGS = exports.FILTER = exports.OPACITY = exports.SKEW_Y = exports.SKEW_X = exports.SKEW = exports.ROTATE_Z = exports.ROTATE_Y = exports.ROTATE_X = exports.SCALE_3D = exports.SCALE_Z = exports.SCALE_Y = exports.SCALE_X = exports.TRANSLATE_3D = exports.TRANSLATE_Z = exports.TRANSLATE_Y = exports.TRANSLATE_X = exports.TRANSFORM = exports.CONFIG_UNIT = exports.CONFIG_Z_UNIT = exports.CONFIG_Y_UNIT = exports.CONFIG_X_UNIT = exports.CONFIG_VALUE = exports.CONFIG_Z_VALUE = exports.CONFIG_Y_VALUE = exports.CONFIG_X_VALUE = exports.BOUNDARY_SELECTOR = exports.W_MOD_IX = exports.W_MOD_JS = exports.WF_PAGE = exports.IX2_ID_DELIMITER = void 0;
10915var IX2_ID_DELIMITER = '|';
10916exports.IX2_ID_DELIMITER = IX2_ID_DELIMITER;
10917var WF_PAGE = 'data-wf-page';
10918exports.WF_PAGE = WF_PAGE;
10919var W_MOD_JS = 'w-mod-js';
10920exports.W_MOD_JS = W_MOD_JS;
10921var W_MOD_IX = 'w-mod-ix';
10922exports.W_MOD_IX = W_MOD_IX;
10923var BOUNDARY_SELECTOR = '.w-dyn-item';
10924exports.BOUNDARY_SELECTOR = BOUNDARY_SELECTOR;
10925var CONFIG_X_VALUE = 'xValue';
10926exports.CONFIG_X_VALUE = CONFIG_X_VALUE;
10927var CONFIG_Y_VALUE = 'yValue';
10928exports.CONFIG_Y_VALUE = CONFIG_Y_VALUE;
10929var CONFIG_Z_VALUE = 'zValue';
10930exports.CONFIG_Z_VALUE = CONFIG_Z_VALUE;
10931var CONFIG_VALUE = 'value';
10932exports.CONFIG_VALUE = CONFIG_VALUE;
10933var CONFIG_X_UNIT = 'xUnit';
10934exports.CONFIG_X_UNIT = CONFIG_X_UNIT;
10935var CONFIG_Y_UNIT = 'yUnit';
10936exports.CONFIG_Y_UNIT = CONFIG_Y_UNIT;
10937var CONFIG_Z_UNIT = 'zUnit';
10938exports.CONFIG_Z_UNIT = CONFIG_Z_UNIT;
10939var CONFIG_UNIT = 'unit';
10940exports.CONFIG_UNIT = CONFIG_UNIT;
10941var TRANSFORM = 'transform';
10942exports.TRANSFORM = TRANSFORM;
10943var TRANSLATE_X = 'translateX';
10944exports.TRANSLATE_X = TRANSLATE_X;
10945var TRANSLATE_Y = 'translateY';
10946exports.TRANSLATE_Y = TRANSLATE_Y;
10947var TRANSLATE_Z = 'translateZ';
10948exports.TRANSLATE_Z = TRANSLATE_Z;
10949var TRANSLATE_3D = 'translate3d';
10950exports.TRANSLATE_3D = TRANSLATE_3D;
10951var SCALE_X = 'scaleX';
10952exports.SCALE_X = SCALE_X;
10953var SCALE_Y = 'scaleY';
10954exports.SCALE_Y = SCALE_Y;
10955var SCALE_Z = 'scaleZ';
10956exports.SCALE_Z = SCALE_Z;
10957var SCALE_3D = 'scale3d';
10958exports.SCALE_3D = SCALE_3D;
10959var ROTATE_X = 'rotateX';
10960exports.ROTATE_X = ROTATE_X;
10961var ROTATE_Y = 'rotateY';
10962exports.ROTATE_Y = ROTATE_Y;
10963var ROTATE_Z = 'rotateZ';
10964exports.ROTATE_Z = ROTATE_Z;
10965var SKEW = 'skew';
10966exports.SKEW = SKEW;
10967var SKEW_X = 'skewX';
10968exports.SKEW_X = SKEW_X;
10969var SKEW_Y = 'skewY';
10970exports.SKEW_Y = SKEW_Y;
10971var OPACITY = 'opacity';
10972exports.OPACITY = OPACITY;
10973var FILTER = 'filter';
10974exports.FILTER = FILTER;
10975var FONT_VARIATION_SETTINGS = 'font-variation-settings';
10976exports.FONT_VARIATION_SETTINGS = FONT_VARIATION_SETTINGS;
10977var WIDTH = 'width';
10978exports.WIDTH = WIDTH;
10979var HEIGHT = 'height';
10980exports.HEIGHT = HEIGHT;
10981var BACKGROUND_COLOR = 'backgroundColor';
10982exports.BACKGROUND_COLOR = BACKGROUND_COLOR;
10983var BACKGROUND = 'background';
10984exports.BACKGROUND = BACKGROUND;
10985var BORDER_COLOR = 'borderColor';
10986exports.BORDER_COLOR = BORDER_COLOR;
10987var COLOR = 'color';
10988exports.COLOR = COLOR;
10989var DISPLAY = 'display';
10990exports.DISPLAY = DISPLAY;
10991var FLEX = 'flex';
10992exports.FLEX = FLEX;
10993var WILL_CHANGE = 'willChange';
10994exports.WILL_CHANGE = WILL_CHANGE;
10995var AUTO = 'AUTO';
10996exports.AUTO = AUTO;
10997var COMMA_DELIMITER = ',';
10998exports.COMMA_DELIMITER = COMMA_DELIMITER;
10999var COLON_DELIMITER = ':';
11000exports.COLON_DELIMITER = COLON_DELIMITER;
11001var BAR_DELIMITER = '|';
11002exports.BAR_DELIMITER = BAR_DELIMITER;
11003var CHILDREN = 'CHILDREN';
11004exports.CHILDREN = CHILDREN;
11005var IMMEDIATE_CHILDREN = 'IMMEDIATE_CHILDREN';
11006exports.IMMEDIATE_CHILDREN = IMMEDIATE_CHILDREN;
11007var SIBLINGS = 'SIBLINGS';
11008exports.SIBLINGS = SIBLINGS;
11009var PARENT = 'PARENT';
11010exports.PARENT = PARENT;
11011var PRESERVE_3D = 'preserve-3d';
11012exports.PRESERVE_3D = PRESERVE_3D;
11013var HTML_ELEMENT = 'HTML_ELEMENT';
11014exports.HTML_ELEMENT = HTML_ELEMENT;
11015var PLAIN_OBJECT = 'PLAIN_OBJECT';
11016exports.PLAIN_OBJECT = PLAIN_OBJECT;
11017var ABSTRACT_NODE = 'ABSTRACT_NODE';
11018exports.ABSTRACT_NODE = ABSTRACT_NODE;
11019var RENDER_TRANSFORM = 'RENDER_TRANSFORM';
11020exports.RENDER_TRANSFORM = RENDER_TRANSFORM;
11021var RENDER_GENERAL = 'RENDER_GENERAL';
11022exports.RENDER_GENERAL = RENDER_GENERAL;
11023var RENDER_STYLE = 'RENDER_STYLE';
11024exports.RENDER_STYLE = RENDER_STYLE;
11025var RENDER_PLUGIN = 'RENDER_PLUGIN';
11026exports.RENDER_PLUGIN = RENDER_PLUGIN;
11027
11028/***/ }),
11029/* 195 */
11030/***/ (function(module, exports, __webpack_require__) {
11031
11032"use strict";
11033
11034
11035var _interopRequireDefault2 = __webpack_require__(0);
11036
11037var _defineProperty2 = _interopRequireDefault2(__webpack_require__(21));
11038
11039var _Object$create;
11040
11041var _interopRequireDefault = __webpack_require__(0);
11042
11043Object.defineProperty(exports, "__esModule", {
11044  value: true
11045});
11046exports.ixRequest = void 0;
11047
11048var _extends2 = _interopRequireDefault(__webpack_require__(30));
11049
11050var _constants = __webpack_require__(4);
11051
11052var _timm = __webpack_require__(22);
11053
11054var _constants$IX2EngineA = _constants.IX2EngineActionTypes,
11055    IX2_PREVIEW_REQUESTED = _constants$IX2EngineA.IX2_PREVIEW_REQUESTED,
11056    IX2_PLAYBACK_REQUESTED = _constants$IX2EngineA.IX2_PLAYBACK_REQUESTED,
11057    IX2_STOP_REQUESTED = _constants$IX2EngineA.IX2_STOP_REQUESTED,
11058    IX2_CLEAR_REQUESTED = _constants$IX2EngineA.IX2_CLEAR_REQUESTED;
11059var initialState = {
11060  preview: {},
11061  playback: {},
11062  stop: {},
11063  clear: {}
11064};
11065var stateKeys = Object.create(null, (_Object$create = {}, (0, _defineProperty2["default"])(_Object$create, IX2_PREVIEW_REQUESTED, {
11066  value: 'preview'
11067}), (0, _defineProperty2["default"])(_Object$create, IX2_PLAYBACK_REQUESTED, {
11068  value: 'playback'
11069}), (0, _defineProperty2["default"])(_Object$create, IX2_STOP_REQUESTED, {
11070  value: 'stop'
11071}), (0, _defineProperty2["default"])(_Object$create, IX2_CLEAR_REQUESTED, {
11072  value: 'clear'
11073}), _Object$create));
11074
11075var ixRequest = function ixRequest() {
11076  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
11077  var action = arguments.length > 1 ? arguments[1] : undefined;
11078
11079  if (action.type in stateKeys) {
11080    var key = [stateKeys[action.type]];
11081    return (0, _timm.setIn)(state, [key], (0, _extends2["default"])({}, action.payload));
11082  }
11083
11084  return state;
11085};
11086
11087exports.ixRequest = ixRequest;
11088
11089/***/ }),
11090/* 196 */
11091/***/ (function(module, exports, __webpack_require__) {
11092
11093"use strict";
11094
11095
11096Object.defineProperty(exports, "__esModule", {
11097  value: true
11098});
11099exports.ixSession = void 0;
11100
11101var _constants = __webpack_require__(4);
11102
11103var _timm = __webpack_require__(22);
11104
11105var _constants$IX2EngineA = _constants.IX2EngineActionTypes,
11106    IX2_SESSION_INITIALIZED = _constants$IX2EngineA.IX2_SESSION_INITIALIZED,
11107    IX2_SESSION_STARTED = _constants$IX2EngineA.IX2_SESSION_STARTED,
11108    IX2_TEST_FRAME_RENDERED = _constants$IX2EngineA.IX2_TEST_FRAME_RENDERED,
11109    IX2_SESSION_STOPPED = _constants$IX2EngineA.IX2_SESSION_STOPPED,
11110    IX2_EVENT_LISTENER_ADDED = _constants$IX2EngineA.IX2_EVENT_LISTENER_ADDED,
11111    IX2_EVENT_STATE_CHANGED = _constants$IX2EngineA.IX2_EVENT_STATE_CHANGED,
11112    IX2_ANIMATION_FRAME_CHANGED = _constants$IX2EngineA.IX2_ANIMATION_FRAME_CHANGED,
11113    IX2_ACTION_LIST_PLAYBACK_CHANGED = _constants$IX2EngineA.IX2_ACTION_LIST_PLAYBACK_CHANGED,
11114    IX2_VIEWPORT_WIDTH_CHANGED = _constants$IX2EngineA.IX2_VIEWPORT_WIDTH_CHANGED,
11115    IX2_MEDIA_QUERIES_DEFINED = _constants$IX2EngineA.IX2_MEDIA_QUERIES_DEFINED;
11116var initialState = {
11117  active: false,
11118  tick: 0,
11119  eventListeners: [],
11120  eventState: {},
11121  playbackState: {},
11122  viewportWidth: 0,
11123  mediaQueryKey: null,
11124  hasBoundaryNodes: false,
11125  hasDefinedMediaQueries: false,
11126  reducedMotion: false
11127};
11128var TEST_FRAME_STEPS_SIZE = 20; // $FlowFixMe
11129
11130var ixSession = function ixSession() {
11131  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
11132  var action = arguments.length > 1 ? arguments[1] : undefined;
11133
11134  switch (action.type) {
11135    case IX2_SESSION_INITIALIZED:
11136      {
11137        var _action$payload = action.payload,
11138            hasBoundaryNodes = _action$payload.hasBoundaryNodes,
11139            reducedMotion = _action$payload.reducedMotion;
11140        return (0, _timm.merge)(state, {
11141          hasBoundaryNodes: hasBoundaryNodes,
11142          reducedMotion: reducedMotion
11143        });
11144      }
11145
11146    case IX2_SESSION_STARTED:
11147      {
11148        return (0, _timm.set)(state, 'active', true);
11149      }
11150
11151    case IX2_TEST_FRAME_RENDERED:
11152      {
11153        var _action$payload$step = action.payload.step,
11154            step = _action$payload$step === void 0 ? TEST_FRAME_STEPS_SIZE : _action$payload$step;
11155        return (0, _timm.set)(state, 'tick', state.tick + step);
11156      }
11157
11158    case IX2_SESSION_STOPPED:
11159      {
11160        return initialState;
11161      }
11162
11163    case IX2_ANIMATION_FRAME_CHANGED:
11164      {
11165        var now = action.payload.now;
11166        return (0, _timm.set)(state, 'tick', now);
11167      }
11168
11169    case IX2_EVENT_LISTENER_ADDED:
11170      {
11171        var eventListeners = (0, _timm.addLast)(state.eventListeners, action.payload);
11172        return (0, _timm.set)(state, 'eventListeners', eventListeners);
11173      }
11174
11175    case IX2_EVENT_STATE_CHANGED:
11176      {
11177        var _action$payload2 = action.payload,
11178            stateKey = _action$payload2.stateKey,
11179            newState = _action$payload2.newState;
11180        return (0, _timm.setIn)(state, ['eventState', stateKey], newState);
11181      }
11182
11183    case IX2_ACTION_LIST_PLAYBACK_CHANGED:
11184      {
11185        var _action$payload3 = action.payload,
11186            actionListId = _action$payload3.actionListId,
11187            isPlaying = _action$payload3.isPlaying;
11188        return (0, _timm.setIn)(state, ['playbackState', actionListId], isPlaying);
11189      }
11190
11191    case IX2_VIEWPORT_WIDTH_CHANGED:
11192      {
11193        var _action$payload4 = action.payload,
11194            width = _action$payload4.width,
11195            mediaQueries = _action$payload4.mediaQueries;
11196        var mediaQueryCount = mediaQueries.length;
11197        var mediaQueryKey = null;
11198
11199        for (var i = 0; i < mediaQueryCount; i++) {
11200          var _mediaQueries$i = mediaQueries[i],
11201              key = _mediaQueries$i.key,
11202              min = _mediaQueries$i.min,
11203              max = _mediaQueries$i.max;
11204
11205          if (width >= min && width <= max) {
11206            mediaQueryKey = key;
11207            break;
11208          }
11209        }
11210
11211        return (0, _timm.merge)(state, {
11212          viewportWidth: width,
11213          mediaQueryKey: mediaQueryKey
11214        });
11215      }
11216
11217    case IX2_MEDIA_QUERIES_DEFINED:
11218      {
11219        return (0, _timm.set)(state, 'hasDefinedMediaQueries', true);
11220      }
11221
11222    default:
11223      {
11224        return state;
11225      }
11226  }
11227};
11228
11229exports.ixSession = ixSession;
11230
11231/***/ }),
11232/* 197 */
11233/***/ (function(module, exports, __webpack_require__) {
11234
11235var baseIsMatch = __webpack_require__(198),
11236    getMatchData = __webpack_require__(250),
11237    matchesStrictComparable = __webpack_require__(111);
11238
11239/**
11240 * The base implementation of `_.matches` which doesn't clone `source`.
11241 *
11242 * @private
11243 * @param {Object} source The object of property values to match.
11244 * @returns {Function} Returns the new spec function.
11245 */
11246function baseMatches(source) {
11247  var matchData = getMatchData(source);
11248  if (matchData.length == 1 && matchData[0][2]) {
11249    return matchesStrictComparable(matchData[0][0], matchData[0][1]);
11250  }
11251  return function(object) {
11252    return object === source || baseIsMatch(object, source, matchData);
11253  };
11254}
11255
11256module.exports = baseMatches;
11257
11258
11259/***/ }),
11260/* 198 */
11261/***/ (function(module, exports, __webpack_require__) {
11262
11263var Stack = __webpack_require__(97),
11264    baseIsEqual = __webpack_require__(101);
11265
11266/** Used to compose bitmasks for value comparisons. */
11267var COMPARE_PARTIAL_FLAG = 1,
11268    COMPARE_UNORDERED_FLAG = 2;
11269
11270/**
11271 * The base implementation of `_.isMatch` without support for iteratee shorthands.
11272 *
11273 * @private
11274 * @param {Object} object The object to inspect.
11275 * @param {Object} source The object of property values to match.
11276 * @param {Array} matchData The property names, values, and compare flags to match.
11277 * @param {Function} [customizer] The function to customize comparisons.
11278 * @returns {boolean} Returns `true` if `object` is a match, else `false`.
11279 */
11280function baseIsMatch(object, source, matchData, customizer) {
11281  var index = matchData.length,
11282      length = index,
11283      noCustomizer = !customizer;
11284
11285  if (object == null) {
11286    return !length;
11287  }
11288  object = Object(object);
11289  while (index--) {
11290    var data = matchData[index];
11291    if ((noCustomizer && data[2])
11292          ? data[1] !== object[data[0]]
11293          : !(data[0] in object)
11294        ) {
11295      return false;
vendor: 4,246 bytes, lines 11296-11512
11296    }
11297  }
11298  while (++index < length) {
11299    data = matchData[index];
11300    var key = data[0],
11301        objValue = object[key],
11302        srcValue = data[1];
11303
11304    if (noCustomizer && data[2]) {
11305      if (objValue === undefined && !(key in object)) {
11306        return false;
11307      }
11308    } else {
11309      var stack = new Stack;
11310      if (customizer) {
11311        var result = customizer(objValue, srcValue, key, object, source, stack);
11312      }
11313      if (!(result === undefined
11314            ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)
11315            : result
11316          )) {
11317        return false;
11318      }
11319    }
11320  }
11321  return true;
11322}
11323
11324module.exports = baseIsMatch;
11325
11326
11327/***/ }),
11328/* 199 */
11329/***/ (function(module, exports) {
11330
11331/**
11332 * Removes all key-value entries from the list cache.
11333 *
11334 * @private
11335 * @name clear
11336 * @memberOf ListCache
11337 */
11338function listCacheClear() {
11339  this.__data__ = [];
11340  this.size = 0;
11341}
11342
11343module.exports = listCacheClear;
11344
11345
11346/***/ }),
11347/* 200 */
11348/***/ (function(module, exports, __webpack_require__) {
11349
11350var assocIndexOf = __webpack_require__(32);
11351
11352/** Used for built-in method references. */
11353var arrayProto = Array.prototype;
11354
11355/** Built-in value references. */
11356var splice = arrayProto.splice;
11357
11358/**
11359 * Removes `key` and its value from the list cache.
11360 *
11361 * @private
11362 * @name delete
11363 * @memberOf ListCache
11364 * @param {string} key The key of the value to remove.
11365 * @returns {boolean} Returns `true` if the entry was removed, else `false`.
11366 */
11367function listCacheDelete(key) {
11368  var data = this.__data__,
11369      index = assocIndexOf(data, key);
11370
11371  if (index < 0) {
11372    return false;
11373  }
11374  var lastIndex = data.length - 1;
11375  if (index == lastIndex) {
11376    data.pop();
11377  } else {
11378    splice.call(data, index, 1);
11379  }
11380  --this.size;
11381  return true;
11382}
11383
11384module.exports = listCacheDelete;
11385
11386
11387/***/ }),
11388/* 201 */
11389/***/ (function(module, exports, __webpack_require__) {
11390
11391var assocIndexOf = __webpack_require__(32);
11392
11393/**
11394 * Gets the list cache value for `key`.
11395 *
11396 * @private
11397 * @name get
11398 * @memberOf ListCache
11399 * @param {string} key The key of the value to get.
11400 * @returns {*} Returns the entry value.
11401 */
11402function listCacheGet(key) {
11403  var data = this.__data__,
11404      index = assocIndexOf(data, key);
11405
11406  return index < 0 ? undefined : data[index][1];
11407}
11408
11409module.exports = listCacheGet;
11410
11411
11412/***/ }),
11413/* 202 */
11414/***/ (function(module, exports, __webpack_require__) {
11415
11416var assocIndexOf = __webpack_require__(32);
11417
11418/**
11419 * Checks if a list cache value for `key` exists.
11420 *
11421 * @private
11422 * @name has
11423 * @memberOf ListCache
11424 * @param {string} key The key of the entry to check.
11425 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
11426 */
11427function listCacheHas(key) {
11428  return assocIndexOf(this.__data__, key) > -1;
11429}
11430
11431module.exports = listCacheHas;
11432
11433
11434/***/ }),
11435/* 203 */
11436/***/ (function(module, exports, __webpack_require__) {
11437
11438var assocIndexOf = __webpack_require__(32);
11439
11440/**
11441 * Sets the list cache `key` to `value`.
11442 *
11443 * @private
11444 * @name set
11445 * @memberOf ListCache
11446 * @param {string} key The key of the value to set.
11447 * @param {*} value The value to set.
11448 * @returns {Object} Returns the list cache instance.
11449 */
11450function listCacheSet(key, value) {
11451  var data = this.__data__,
11452      index = assocIndexOf(data, key);
11453
11454  if (index < 0) {
11455    ++this.size;
11456    data.push([key, value]);
11457  } else {
11458    data[index][1] = value;
11459  }
11460  return this;
11461}
11462
11463module.exports = listCacheSet;
11464
11465
11466/***/ }),
11467/* 204 */
11468/***/ (function(module, exports, __webpack_require__) {
11469
11470var ListCache = __webpack_require__(31);
11471
11472/**
11473 * Removes all key-value entries from the stack.
11474 *
11475 * @private
11476 * @name clear
11477 * @memberOf Stack
11478 */
11479function stackClear() {
11480  this.__data__ = new ListCache;
11481  this.size = 0;
11482}
11483
11484module.exports = stackClear;
11485
11486
11487/***/ }),
11488/* 205 */
11489/***/ (function(module, exports) {
11490
11491/**
11492 * Removes `key` and its value from the stack.
11493 *
11494 * @private
11495 * @name delete
11496 * @memberOf Stack
11497 * @param {string} key The key of the value to remove.
11498 * @returns {boolean} Returns `true` if the entry was removed, else `false`.
11499 */
11500function stackDelete(key) {
11501  var data = this.__data__,
11502      result = data['delete'](key);
11503
11504  this.size = data.size;
11505  return result;
11506}
11507
11508module.exports = stackDelete;
11509
11510
11511/***/ }),
11512/* 206 */
vendor: 11,192 bytes, lines 11513-12009
11513/***/ (function(module, exports) {
11514
11515/**
11516 * Gets the stack value for `key`.
11517 *
11518 * @private
11519 * @name get
11520 * @memberOf Stack
11521 * @param {string} key The key of the value to get.
11522 * @returns {*} Returns the entry value.
11523 */
11524function stackGet(key) {
11525  return this.__data__.get(key);
11526}
11527
11528module.exports = stackGet;
11529
11530
11531/***/ }),
11532/* 207 */
11533/***/ (function(module, exports) {
11534
11535/**
11536 * Checks if a stack value for `key` exists.
11537 *
11538 * @private
11539 * @name has
11540 * @memberOf Stack
11541 * @param {string} key The key of the entry to check.
11542 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
11543 */
11544function stackHas(key) {
11545  return this.__data__.has(key);
11546}
11547
11548module.exports = stackHas;
11549
11550
11551/***/ }),
11552/* 208 */
11553/***/ (function(module, exports, __webpack_require__) {
11554
11555var ListCache = __webpack_require__(31),
11556    Map = __webpack_require__(50),
11557    MapCache = __webpack_require__(51);
11558
11559/** Used as the size to enable large array optimizations. */
11560var LARGE_ARRAY_SIZE = 200;
11561
11562/**
11563 * Sets the stack `key` to `value`.
11564 *
11565 * @private
11566 * @name set
11567 * @memberOf Stack
11568 * @param {string} key The key of the value to set.
11569 * @param {*} value The value to set.
11570 * @returns {Object} Returns the stack cache instance.
11571 */
11572function stackSet(key, value) {
11573  var data = this.__data__;
11574  if (data instanceof ListCache) {
11575    var pairs = data.__data__;
11576    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {
11577      pairs.push([key, value]);
11578      this.size = ++data.size;
11579      return this;
11580    }
11581    data = this.__data__ = new MapCache(pairs);
11582  }
11583  data.set(key, value);
11584  this.size = data.size;
11585  return this;
11586}
11587
11588module.exports = stackSet;
11589
11590
11591/***/ }),
11592/* 209 */
11593/***/ (function(module, exports, __webpack_require__) {
11594
11595var isFunction = __webpack_require__(98),
11596    isMasked = __webpack_require__(212),
11597    isObject = __webpack_require__(8),
11598    toSource = __webpack_require__(100);
11599
11600/**
11601 * Used to match `RegExp`
11602 * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
11603 */
11604var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
11605
11606/** Used to detect host constructors (Safari). */
11607var reIsHostCtor = /^\[object .+?Constructor\]$/;
11608
11609/** Used for built-in method references. */
11610var funcProto = Function.prototype,
11611    objectProto = Object.prototype;
11612
11613/** Used to resolve the decompiled source of functions. */
11614var funcToString = funcProto.toString;
11615
11616/** Used to check objects for own properties. */
11617var hasOwnProperty = objectProto.hasOwnProperty;
11618
11619/** Used to detect if a method is native. */
11620var reIsNative = RegExp('^' +
11621  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
11622  .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
11623);
11624
11625/**
11626 * The base implementation of `_.isNative` without bad shim checks.
11627 *
11628 * @private
11629 * @param {*} value The value to check.
11630 * @returns {boolean} Returns `true` if `value` is a native function,
11631 *  else `false`.
11632 */
11633function baseIsNative(value) {
11634  if (!isObject(value) || isMasked(value)) {
11635    return false;
11636  }
11637  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;
11638  return pattern.test(toSource(value));
11639}
11640
11641module.exports = baseIsNative;
11642
11643
11644/***/ }),
11645/* 210 */
11646/***/ (function(module, exports, __webpack_require__) {
11647
11648var Symbol = __webpack_require__(23);
11649
11650/** Used for built-in method references. */
11651var objectProto = Object.prototype;
11652
11653/** Used to check objects for own properties. */
11654var hasOwnProperty = objectProto.hasOwnProperty;
11655
11656/**
11657 * Used to resolve the
11658 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
11659 * of values.
11660 */
11661var nativeObjectToString = objectProto.toString;
11662
11663/** Built-in value references. */
11664var symToStringTag = Symbol ? Symbol.toStringTag : undefined;
11665
11666/**
11667 * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
11668 *
11669 * @private
11670 * @param {*} value The value to query.
11671 * @returns {string} Returns the raw `toStringTag`.
11672 */
11673function getRawTag(value) {
11674  var isOwn = hasOwnProperty.call(value, symToStringTag),
11675      tag = value[symToStringTag];
11676
11677  try {
11678    value[symToStringTag] = undefined;
11679    var unmasked = true;
11680  } catch (e) {}
11681
11682  var result = nativeObjectToString.call(value);
11683  if (unmasked) {
11684    if (isOwn) {
11685      value[symToStringTag] = tag;
11686    } else {
11687      delete value[symToStringTag];
11688    }
11689  }
11690  return result;
11691}
11692
11693module.exports = getRawTag;
11694
11695
11696/***/ }),
11697/* 211 */
11698/***/ (function(module, exports) {
11699
11700/** Used for built-in method references. */
11701var objectProto = Object.prototype;
11702
11703/**
11704 * Used to resolve the
11705 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
11706 * of values.
11707 */
11708var nativeObjectToString = objectProto.toString;
11709
11710/**
11711 * Converts `value` to a string using `Object.prototype.toString`.
11712 *
11713 * @private
11714 * @param {*} value The value to convert.
11715 * @returns {string} Returns the converted string.
11716 */
11717function objectToString(value) {
11718  return nativeObjectToString.call(value);
11719}
11720
11721module.exports = objectToString;
11722
11723
11724/***/ }),
11725/* 212 */
11726/***/ (function(module, exports, __webpack_require__) {
11727
11728var coreJsData = __webpack_require__(213);
11729
11730/** Used to detect methods masquerading as native. */
11731var maskSrcKey = (function() {
11732  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
11733  return uid ? ('Symbol(src)_1.' + uid) : '';
11734}());
11735
11736/**
11737 * Checks if `func` has its source masked.
11738 *
11739 * @private
11740 * @param {Function} func The function to check.
11741 * @returns {boolean} Returns `true` if `func` is masked, else `false`.
11742 */
11743function isMasked(func) {
11744  return !!maskSrcKey && (maskSrcKey in func);
11745}
11746
11747module.exports = isMasked;
11748
11749
11750/***/ }),
11751/* 213 */
11752/***/ (function(module, exports, __webpack_require__) {
11753
11754var root = __webpack_require__(6);
11755
11756/** Used to detect overreaching core-js shims. */
11757var coreJsData = root['__core-js_shared__'];
11758
11759module.exports = coreJsData;
11760
11761
11762/***/ }),
11763/* 214 */
11764/***/ (function(module, exports) {
11765
11766/**
11767 * Gets the value at `key` of `object`.
11768 *
11769 * @private
11770 * @param {Object} [object] The object to query.
11771 * @param {string} key The key of the property to get.
11772 * @returns {*} Returns the property value.
11773 */
11774function getValue(object, key) {
11775  return object == null ? undefined : object[key];
11776}
11777
11778module.exports = getValue;
11779
11780
11781/***/ }),
11782/* 215 */
11783/***/ (function(module, exports, __webpack_require__) {
11784
11785var Hash = __webpack_require__(216),
11786    ListCache = __webpack_require__(31),
11787    Map = __webpack_require__(50);
11788
11789/**
11790 * Removes all key-value entries from the map.
11791 *
11792 * @private
11793 * @name clear
11794 * @memberOf MapCache
11795 */
11796function mapCacheClear() {
11797  this.size = 0;
11798  this.__data__ = {
11799    'hash': new Hash,
11800    'map': new (Map || ListCache),
11801    'string': new Hash
11802  };
11803}
11804
11805module.exports = mapCacheClear;
11806
11807
11808/***/ }),
11809/* 216 */
11810/***/ (function(module, exports, __webpack_require__) {
11811
11812var hashClear = __webpack_require__(217),
11813    hashDelete = __webpack_require__(218),
11814    hashGet = __webpack_require__(219),
11815    hashHas = __webpack_require__(220),
11816    hashSet = __webpack_require__(221);
11817
11818/**
11819 * Creates a hash object.
11820 *
11821 * @private
11822 * @constructor
11823 * @param {Array} [entries] The key-value pairs to cache.
11824 */
11825function Hash(entries) {
11826  var index = -1,
11827      length = entries == null ? 0 : entries.length;
11828
11829  this.clear();
11830  while (++index < length) {
11831    var entry = entries[index];
11832    this.set(entry[0], entry[1]);
11833  }
11834}
11835
11836// Add methods to `Hash`.
11837Hash.prototype.clear = hashClear;
11838Hash.prototype['delete'] = hashDelete;
11839Hash.prototype.get = hashGet;
11840Hash.prototype.has = hashHas;
11841Hash.prototype.set = hashSet;
11842
11843module.exports = Hash;
11844
11845
11846/***/ }),
11847/* 217 */
11848/***/ (function(module, exports, __webpack_require__) {
11849
11850var nativeCreate = __webpack_require__(33);
11851
11852/**
11853 * Removes all key-value entries from the hash.
11854 *
11855 * @private
11856 * @name clear
11857 * @memberOf Hash
11858 */
11859function hashClear() {
11860  this.__data__ = nativeCreate ? nativeCreate(null) : {};
11861  this.size = 0;
11862}
11863
11864module.exports = hashClear;
11865
11866
11867/***/ }),
11868/* 218 */
11869/***/ (function(module, exports) {
11870
11871/**
11872 * Removes `key` and its value from the hash.
11873 *
11874 * @private
11875 * @name delete
11876 * @memberOf Hash
11877 * @param {Object} hash The hash to modify.
11878 * @param {string} key The key of the value to remove.
11879 * @returns {boolean} Returns `true` if the entry was removed, else `false`.
11880 */
11881function hashDelete(key) {
11882  var result = this.has(key) && delete this.__data__[key];
11883  this.size -= result ? 1 : 0;
11884  return result;
11885}
11886
11887module.exports = hashDelete;
11888
11889
11890/***/ }),
11891/* 219 */
11892/***/ (function(module, exports, __webpack_require__) {
11893
11894var nativeCreate = __webpack_require__(33);
11895
11896/** Used to stand-in for `undefined` hash values. */
11897var HASH_UNDEFINED = '__lodash_hash_undefined__';
11898
11899/** Used for built-in method references. */
11900var objectProto = Object.prototype;
11901
11902/** Used to check objects for own properties. */
11903var hasOwnProperty = objectProto.hasOwnProperty;
11904
11905/**
11906 * Gets the hash value for `key`.
11907 *
11908 * @private
11909 * @name get
11910 * @memberOf Hash
11911 * @param {string} key The key of the value to get.
11912 * @returns {*} Returns the entry value.
11913 */
11914function hashGet(key) {
11915  var data = this.__data__;
11916  if (nativeCreate) {
11917    var result = data[key];
11918    return result === HASH_UNDEFINED ? undefined : result;
11919  }
11920  return hasOwnProperty.call(data, key) ? data[key] : undefined;
11921}
11922
11923module.exports = hashGet;
11924
11925
11926/***/ }),
11927/* 220 */
11928/***/ (function(module, exports, __webpack_require__) {
11929
11930var nativeCreate = __webpack_require__(33);
11931
11932/** Used for built-in method references. */
11933var objectProto = Object.prototype;
11934
11935/** Used to check objects for own properties. */
11936var hasOwnProperty = objectProto.hasOwnProperty;
11937
11938/**
11939 * Checks if a hash value for `key` exists.
11940 *
11941 * @private
11942 * @name has
11943 * @memberOf Hash
11944 * @param {string} key The key of the entry to check.
11945 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
11946 */
11947function hashHas(key) {
11948  var data = this.__data__;
11949  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);
11950}
11951
11952module.exports = hashHas;
11953
11954
11955/***/ }),
11956/* 221 */
11957/***/ (function(module, exports, __webpack_require__) {
11958
11959var nativeCreate = __webpack_require__(33);
11960
11961/** Used to stand-in for `undefined` hash values. */
11962var HASH_UNDEFINED = '__lodash_hash_undefined__';
11963
11964/**
11965 * Sets the hash `key` to `value`.
11966 *
11967 * @private
11968 * @name set
11969 * @memberOf Hash
11970 * @param {string} key The key of the value to set.
11971 * @param {*} value The value to set.
11972 * @returns {Object} Returns the hash instance.
11973 */
11974function hashSet(key, value) {
11975  var data = this.__data__;
11976  this.size += this.has(key) ? 0 : 1;
11977  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
11978  return this;
11979}
11980
11981module.exports = hashSet;
11982
11983
11984/***/ }),
11985/* 222 */
11986/***/ (function(module, exports, __webpack_require__) {
11987
11988var getMapData = __webpack_require__(34);
11989
11990/**
11991 * Removes `key` and its value from the map.
11992 *
11993 * @private
11994 * @name delete
11995 * @memberOf MapCache
11996 * @param {string} key The key of the value to remove.
11997 * @returns {boolean} Returns `true` if the entry was removed, else `false`.
11998 */
11999function mapCacheDelete(key) {
12000  var result = getMapData(this, key)['delete'](key);
12001  this.size -= result ? 1 : 0;
12002  return result;
12003}
12004
12005module.exports = mapCacheDelete;
12006
12007
12008/***/ }),
12009/* 223 */
vendor: 13,823 bytes, lines 12010-12530
12010/***/ (function(module, exports) {
12011
12012/**
12013 * Checks if `value` is suitable for use as unique object key.
12014 *
12015 * @private
12016 * @param {*} value The value to check.
12017 * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
12018 */
12019function isKeyable(value) {
12020  var type = typeof value;
12021  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
12022    ? (value !== '__proto__')
12023    : (value === null);
12024}
12025
12026module.exports = isKeyable;
12027
12028
12029/***/ }),
12030/* 224 */
12031/***/ (function(module, exports, __webpack_require__) {
12032
12033var getMapData = __webpack_require__(34);
12034
12035/**
12036 * Gets the map value for `key`.
12037 *
12038 * @private
12039 * @name get
12040 * @memberOf MapCache
12041 * @param {string} key The key of the value to get.
12042 * @returns {*} Returns the entry value.
12043 */
12044function mapCacheGet(key) {
12045  return getMapData(this, key).get(key);
12046}
12047
12048module.exports = mapCacheGet;
12049
12050
12051/***/ }),
12052/* 225 */
12053/***/ (function(module, exports, __webpack_require__) {
12054
12055var getMapData = __webpack_require__(34);
12056
12057/**
12058 * Checks if a map value for `key` exists.
12059 *
12060 * @private
12061 * @name has
12062 * @memberOf MapCache
12063 * @param {string} key The key of the entry to check.
12064 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
12065 */
12066function mapCacheHas(key) {
12067  return getMapData(this, key).has(key);
12068}
12069
12070module.exports = mapCacheHas;
12071
12072
12073/***/ }),
12074/* 226 */
12075/***/ (function(module, exports, __webpack_require__) {
12076
12077var getMapData = __webpack_require__(34);
12078
12079/**
12080 * Sets the map `key` to `value`.
12081 *
12082 * @private
12083 * @name set
12084 * @memberOf MapCache
12085 * @param {string} key The key of the value to set.
12086 * @param {*} value The value to set.
12087 * @returns {Object} Returns the map cache instance.
12088 */
12089function mapCacheSet(key, value) {
12090  var data = getMapData(this, key),
12091      size = data.size;
12092
12093  data.set(key, value);
12094  this.size += data.size == size ? 0 : 1;
12095  return this;
12096}
12097
12098module.exports = mapCacheSet;
12099
12100
12101/***/ }),
12102/* 227 */
12103/***/ (function(module, exports, __webpack_require__) {
12104
12105var Stack = __webpack_require__(97),
12106    equalArrays = __webpack_require__(102),
12107    equalByTag = __webpack_require__(233),
12108    equalObjects = __webpack_require__(237),
12109    getTag = __webpack_require__(59),
12110    isArray = __webpack_require__(2),
12111    isBuffer = __webpack_require__(53),
12112    isTypedArray = __webpack_require__(55);
12113
12114/** Used to compose bitmasks for value comparisons. */
12115var COMPARE_PARTIAL_FLAG = 1;
12116
12117/** `Object#toString` result references. */
12118var argsTag = '[object Arguments]',
12119    arrayTag = '[object Array]',
12120    objectTag = '[object Object]';
12121
12122/** Used for built-in method references. */
12123var objectProto = Object.prototype;
12124
12125/** Used to check objects for own properties. */
12126var hasOwnProperty = objectProto.hasOwnProperty;
12127
12128/**
12129 * A specialized version of `baseIsEqual` for arrays and objects which performs
12130 * deep comparisons and tracks traversed objects enabling objects with circular
12131 * references to be compared.
12132 *
12133 * @private
12134 * @param {Object} object The object to compare.
12135 * @param {Object} other The other object to compare.
12136 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
12137 * @param {Function} customizer The function to customize comparisons.
12138 * @param {Function} equalFunc The function to determine equivalents of values.
12139 * @param {Object} [stack] Tracks traversed `object` and `other` objects.
12140 * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
12141 */
12142function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
12143  var objIsArr = isArray(object),
12144      othIsArr = isArray(other),
12145      objTag = objIsArr ? arrayTag : getTag(object),
12146      othTag = othIsArr ? arrayTag : getTag(other);
12147
12148  objTag = objTag == argsTag ? objectTag : objTag;
12149  othTag = othTag == argsTag ? objectTag : othTag;
12150
12151  var objIsObj = objTag == objectTag,
12152      othIsObj = othTag == objectTag,
12153      isSameTag = objTag == othTag;
12154
12155  if (isSameTag && isBuffer(object)) {
12156    if (!isBuffer(other)) {
12157      return false;
12158    }
12159    objIsArr = true;
12160    objIsObj = false;
12161  }
12162  if (isSameTag && !objIsObj) {
12163    stack || (stack = new Stack);
12164    return (objIsArr || isTypedArray(object))
12165      ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)
12166      : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
12167  }
12168  if (!(bitmask & COMPARE_PARTIAL_FLAG)) {
12169    var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
12170        othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');
12171
12172    if (objIsWrapped || othIsWrapped) {
12173      var objUnwrapped = objIsWrapped ? object.value() : object,
12174          othUnwrapped = othIsWrapped ? other.value() : other;
12175
12176      stack || (stack = new Stack);
12177      return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
12178    }
12179  }
12180  if (!isSameTag) {
12181    return false;
12182  }
12183  stack || (stack = new Stack);
12184  return equalObjects(object, other, bitmask, customizer, equalFunc, stack);
12185}
12186
12187module.exports = baseIsEqualDeep;
12188
12189
12190/***/ }),
12191/* 228 */
12192/***/ (function(module, exports, __webpack_require__) {
12193
12194var MapCache = __webpack_require__(51),
12195    setCacheAdd = __webpack_require__(229),
12196    setCacheHas = __webpack_require__(230);
12197
12198/**
12199 *
12200 * Creates an array cache object to store unique values.
12201 *
12202 * @private
12203 * @constructor
12204 * @param {Array} [values] The values to cache.
12205 */
12206function SetCache(values) {
12207  var index = -1,
12208      length = values == null ? 0 : values.length;
12209
12210  this.__data__ = new MapCache;
12211  while (++index < length) {
12212    this.add(values[index]);
12213  }
12214}
12215
12216// Add methods to `SetCache`.
12217SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
12218SetCache.prototype.has = setCacheHas;
12219
12220module.exports = SetCache;
12221
12222
12223/***/ }),
12224/* 229 */
12225/***/ (function(module, exports) {
12226
12227/** Used to stand-in for `undefined` hash values. */
12228var HASH_UNDEFINED = '__lodash_hash_undefined__';
12229
12230/**
12231 * Adds `value` to the array cache.
12232 *
12233 * @private
12234 * @name add
12235 * @memberOf SetCache
12236 * @alias push
12237 * @param {*} value The value to cache.
12238 * @returns {Object} Returns the cache instance.
12239 */
12240function setCacheAdd(value) {
12241  this.__data__.set(value, HASH_UNDEFINED);
12242  return this;
12243}
12244
12245module.exports = setCacheAdd;
12246
12247
12248/***/ }),
12249/* 230 */
12250/***/ (function(module, exports) {
12251
12252/**
12253 * Checks if `value` is in the array cache.
12254 *
12255 * @private
12256 * @name has
12257 * @memberOf SetCache
12258 * @param {*} value The value to search for.
12259 * @returns {number} Returns `true` if `value` is found, else `false`.
12260 */
12261function setCacheHas(value) {
12262  return this.__data__.has(value);
12263}
12264
12265module.exports = setCacheHas;
12266
12267
12268/***/ }),
12269/* 231 */
12270/***/ (function(module, exports) {
12271
12272/**
12273 * A specialized version of `_.some` for arrays without support for iteratee
12274 * shorthands.
12275 *
12276 * @private
12277 * @param {Array} [array] The array to iterate over.
12278 * @param {Function} predicate The function invoked per iteration.
12279 * @returns {boolean} Returns `true` if any element passes the predicate check,
12280 *  else `false`.
12281 */
12282function arraySome(array, predicate) {
12283  var index = -1,
12284      length = array == null ? 0 : array.length;
12285
12286  while (++index < length) {
12287    if (predicate(array[index], index, array)) {
12288      return true;
12289    }
12290  }
12291  return false;
12292}
12293
12294module.exports = arraySome;
12295
12296
12297/***/ }),
12298/* 232 */
12299/***/ (function(module, exports) {
12300
12301/**
12302 * Checks if a `cache` value for `key` exists.
12303 *
12304 * @private
12305 * @param {Object} cache The cache to query.
12306 * @param {string} key The key of the entry to check.
12307 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
12308 */
12309function cacheHas(cache, key) {
12310  return cache.has(key);
12311}
12312
12313module.exports = cacheHas;
12314
12315
12316/***/ }),
12317/* 233 */
12318/***/ (function(module, exports, __webpack_require__) {
12319
12320var Symbol = __webpack_require__(23),
12321    Uint8Array = __webpack_require__(234),
12322    eq = __webpack_require__(49),
12323    equalArrays = __webpack_require__(102),
12324    mapToArray = __webpack_require__(235),
12325    setToArray = __webpack_require__(236);
12326
12327/** Used to compose bitmasks for value comparisons. */
12328var COMPARE_PARTIAL_FLAG = 1,
12329    COMPARE_UNORDERED_FLAG = 2;
12330
12331/** `Object#toString` result references. */
12332var boolTag = '[object Boolean]',
12333    dateTag = '[object Date]',
12334    errorTag = '[object Error]',
12335    mapTag = '[object Map]',
12336    numberTag = '[object Number]',
12337    regexpTag = '[object RegExp]',
12338    setTag = '[object Set]',
12339    stringTag = '[object String]',
12340    symbolTag = '[object Symbol]';
12341
12342var arrayBufferTag = '[object ArrayBuffer]',
12343    dataViewTag = '[object DataView]';
12344
12345/** Used to convert symbols to primitives and strings. */
12346var symbolProto = Symbol ? Symbol.prototype : undefined,
12347    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;
12348
12349/**
12350 * A specialized version of `baseIsEqualDeep` for comparing objects of
12351 * the same `toStringTag`.
12352 *
12353 * **Note:** This function only supports comparing values with tags of
12354 * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
12355 *
12356 * @private
12357 * @param {Object} object The object to compare.
12358 * @param {Object} other The other object to compare.
12359 * @param {string} tag The `toStringTag` of the objects to compare.
12360 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
12361 * @param {Function} customizer The function to customize comparisons.
12362 * @param {Function} equalFunc The function to determine equivalents of values.
12363 * @param {Object} stack Tracks traversed `object` and `other` objects.
12364 * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
12365 */
12366function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
12367  switch (tag) {
12368    case dataViewTag:
12369      if ((object.byteLength != other.byteLength) ||
12370          (object.byteOffset != other.byteOffset)) {
12371        return false;
12372      }
12373      object = object.buffer;
12374      other = other.buffer;
12375
12376    case arrayBufferTag:
12377      if ((object.byteLength != other.byteLength) ||
12378          !equalFunc(new Uint8Array(object), new Uint8Array(other))) {
12379        return false;
12380      }
12381      return true;
12382
12383    case boolTag:
12384    case dateTag:
12385    case numberTag:
12386      // Coerce booleans to `1` or `0` and dates to milliseconds.
12387      // Invalid dates are coerced to `NaN`.
12388      return eq(+object, +other);
12389
12390    case errorTag:
12391      return object.name == other.name && object.message == other.message;
12392
12393    case regexpTag:
12394    case stringTag:
12395      // Coerce regexes to strings and treat strings, primitives and objects,
12396      // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring
12397      // for more details.
12398      return object == (other + '');
12399
12400    case mapTag:
12401      var convert = mapToArray;
12402
12403    case setTag:
12404      var isPartial = bitmask & COMPARE_PARTIAL_FLAG;
12405      convert || (convert = setToArray);
12406
12407      if (object.size != other.size && !isPartial) {
12408        return false;
12409      }
12410      // Assume cyclic values are equal.
12411      var stacked = stack.get(object);
12412      if (stacked) {
12413        return stacked == other;
12414      }
12415      bitmask |= COMPARE_UNORDERED_FLAG;
12416
12417      // Recursively compare objects (susceptible to call stack limits).
12418      stack.set(object, other);
12419      var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);
12420      stack['delete'](object);
12421      return result;
12422
12423    case symbolTag:
12424      if (symbolValueOf) {
12425        return symbolValueOf.call(object) == symbolValueOf.call(other);
12426      }
12427  }
12428  return false;
12429}
12430
12431module.exports = equalByTag;
12432
12433
12434/***/ }),
12435/* 234 */
12436/***/ (function(module, exports, __webpack_require__) {
12437
12438var root = __webpack_require__(6);
12439
12440/** Built-in value references. */
12441var Uint8Array = root.Uint8Array;
12442
12443module.exports = Uint8Array;
12444
12445
12446/***/ }),
12447/* 235 */
12448/***/ (function(module, exports) {
12449
12450/**
12451 * Converts `map` to its key-value pairs.
12452 *
12453 * @private
12454 * @param {Object} map The map to convert.
12455 * @returns {Array} Returns the key-value pairs.
12456 */
12457function mapToArray(map) {
12458  var index = -1,
12459      result = Array(map.size);
12460
12461  map.forEach(function(value, key) {
12462    result[++index] = [key, value];
12463  });
12464  return result;
12465}
12466
12467module.exports = mapToArray;
12468
12469
12470/***/ }),
12471/* 236 */
12472/***/ (function(module, exports) {
12473
12474/**
12475 * Converts `set` to an array of its values.
12476 *
12477 * @private
12478 * @param {Object} set The set to convert.
12479 * @returns {Array} Returns the values.
12480 */
12481function setToArray(set) {
12482  var index = -1,
12483      result = Array(set.size);
12484
12485  set.forEach(function(value) {
12486    result[++index] = value;
12487  });
12488  return result;
12489}
12490
12491module.exports = setToArray;
12492
12493
12494/***/ }),
12495/* 237 */
12496/***/ (function(module, exports, __webpack_require__) {
12497
12498var getAllKeys = __webpack_require__(238);
12499
12500/** Used to compose bitmasks for value comparisons. */
12501var COMPARE_PARTIAL_FLAG = 1;
12502
12503/** Used for built-in method references. */
12504var objectProto = Object.prototype;
12505
12506/** Used to check objects for own properties. */
12507var hasOwnProperty = objectProto.hasOwnProperty;
12508
12509/**
12510 * A specialized version of `baseIsEqualDeep` for objects with support for
12511 * partial deep comparisons.
12512 *
12513 * @private
12514 * @param {Object} object The object to compare.
12515 * @param {Object} other The other object to compare.
12516 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
12517 * @param {Function} customizer The function to customize comparisons.
12518 * @param {Function} equalFunc The function to determine equivalents of values.
12519 * @param {Object} stack Tracks traversed `object` and `other` objects.
12520 * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
12521 */
12522function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
12523  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
12524      objProps = getAllKeys(object),
12525      objLength = objProps.length,
12526      othProps = getAllKeys(other),
12527      othLength = othProps.length;
12528
12529  if (objLength != othLength && !isPartial) {
12530    return false;
vendor: 1,075 bytes, lines 12531-12565
12531  }
12532  var index = objLength;
12533  while (index--) {
12534    var key = objProps[index];
12535    if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {
12536      return false;
12537    }
12538  }
12539  // Check that cyclic values are equal.
12540  var objStacked = stack.get(object);
12541  var othStacked = stack.get(other);
12542  if (objStacked && othStacked) {
12543    return objStacked == other && othStacked == object;
12544  }
12545  var result = true;
12546  stack.set(object, other);
12547  stack.set(other, object);
12548
12549  var skipCtor = isPartial;
12550  while (++index < objLength) {
12551    key = objProps[index];
12552    var objValue = object[key],
12553        othValue = other[key];
12554
12555    if (customizer) {
12556      var compared = isPartial
12557        ? customizer(othValue, objValue, key, other, object, stack)
12558        : customizer(objValue, othValue, key, object, other, stack);
12559    }
12560    // Recursively compare objects (susceptible to call stack limits).
12561    if (!(compared === undefined
12562          ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))
12563          : compared
12564        )) {
12565      result = false;
vendor: 10,628 bytes, lines 12566-12973
12566      break;
12567    }
12568    skipCtor || (skipCtor = key == 'constructor');
12569  }
12570  if (result && !skipCtor) {
12571    var objCtor = object.constructor,
12572        othCtor = other.constructor;
12573
12574    // Non `Object` object instances with different constructors are not equal.
12575    if (objCtor != othCtor &&
12576        ('constructor' in object && 'constructor' in other) &&
12577        !(typeof objCtor == 'function' && objCtor instanceof objCtor &&
12578          typeof othCtor == 'function' && othCtor instanceof othCtor)) {
12579      result = false;
12580    }
12581  }
12582  stack['delete'](object);
12583  stack['delete'](other);
12584  return result;
12585}
12586
12587module.exports = equalObjects;
12588
12589
12590/***/ }),
12591/* 238 */
12592/***/ (function(module, exports, __webpack_require__) {
12593
12594var baseGetAllKeys = __webpack_require__(103),
12595    getSymbols = __webpack_require__(104),
12596    keys = __webpack_require__(35);
12597
12598/**
12599 * Creates an array of own enumerable property names and symbols of `object`.
12600 *
12601 * @private
12602 * @param {Object} object The object to query.
12603 * @returns {Array} Returns the array of property names and symbols.
12604 */
12605function getAllKeys(object) {
12606  return baseGetAllKeys(object, keys, getSymbols);
12607}
12608
12609module.exports = getAllKeys;
12610
12611
12612/***/ }),
12613/* 239 */
12614/***/ (function(module, exports) {
12615
12616/**
12617 * A specialized version of `_.filter` for arrays without support for
12618 * iteratee shorthands.
12619 *
12620 * @private
12621 * @param {Array} [array] The array to iterate over.
12622 * @param {Function} predicate The function invoked per iteration.
12623 * @returns {Array} Returns the new filtered array.
12624 */
12625function arrayFilter(array, predicate) {
12626  var index = -1,
12627      length = array == null ? 0 : array.length,
12628      resIndex = 0,
12629      result = [];
12630
12631  while (++index < length) {
12632    var value = array[index];
12633    if (predicate(value, index, array)) {
12634      result[resIndex++] = value;
12635    }
12636  }
12637  return result;
12638}
12639
12640module.exports = arrayFilter;
12641
12642
12643/***/ }),
12644/* 240 */
12645/***/ (function(module, exports) {
12646
12647/**
12648 * The base implementation of `_.times` without support for iteratee shorthands
12649 * or max array length checks.
12650 *
12651 * @private
12652 * @param {number} n The number of times to invoke `iteratee`.
12653 * @param {Function} iteratee The function invoked per iteration.
12654 * @returns {Array} Returns the array of results.
12655 */
12656function baseTimes(n, iteratee) {
12657  var index = -1,
12658      result = Array(n);
12659
12660  while (++index < n) {
12661    result[index] = iteratee(index);
12662  }
12663  return result;
12664}
12665
12666module.exports = baseTimes;
12667
12668
12669/***/ }),
12670/* 241 */
12671/***/ (function(module, exports, __webpack_require__) {
12672
12673var baseGetTag = __webpack_require__(16),
12674    isObjectLike = __webpack_require__(12);
12675
12676/** `Object#toString` result references. */
12677var argsTag = '[object Arguments]';
12678
12679/**
12680 * The base implementation of `_.isArguments`.
12681 *
12682 * @private
12683 * @param {*} value The value to check.
12684 * @returns {boolean} Returns `true` if `value` is an `arguments` object,
12685 */
12686function baseIsArguments(value) {
12687  return isObjectLike(value) && baseGetTag(value) == argsTag;
12688}
12689
12690module.exports = baseIsArguments;
12691
12692
12693/***/ }),
12694/* 242 */
12695/***/ (function(module, exports) {
12696
12697/**
12698 * This method returns `false`.
12699 *
12700 * @static
12701 * @memberOf _
12702 * @since 4.13.0
12703 * @category Util
12704 * @returns {boolean} Returns `false`.
12705 * @example
12706 *
12707 * _.times(2, _.stubFalse);
12708 * // => [false, false]
12709 */
12710function stubFalse() {
12711  return false;
12712}
12713
12714module.exports = stubFalse;
12715
12716
12717/***/ }),
12718/* 243 */
12719/***/ (function(module, exports, __webpack_require__) {
12720
12721var baseGetTag = __webpack_require__(16),
12722    isLength = __webpack_require__(56),
12723    isObjectLike = __webpack_require__(12);
12724
12725/** `Object#toString` result references. */
12726var argsTag = '[object Arguments]',
12727    arrayTag = '[object Array]',
12728    boolTag = '[object Boolean]',
12729    dateTag = '[object Date]',
12730    errorTag = '[object Error]',
12731    funcTag = '[object Function]',
12732    mapTag = '[object Map]',
12733    numberTag = '[object Number]',
12734    objectTag = '[object Object]',
12735    regexpTag = '[object RegExp]',
12736    setTag = '[object Set]',
12737    stringTag = '[object String]',
12738    weakMapTag = '[object WeakMap]';
12739
12740var arrayBufferTag = '[object ArrayBuffer]',
12741    dataViewTag = '[object DataView]',
12742    float32Tag = '[object Float32Array]',
12743    float64Tag = '[object Float64Array]',
12744    int8Tag = '[object Int8Array]',
12745    int16Tag = '[object Int16Array]',
12746    int32Tag = '[object Int32Array]',
12747    uint8Tag = '[object Uint8Array]',
12748    uint8ClampedTag = '[object Uint8ClampedArray]',
12749    uint16Tag = '[object Uint16Array]',
12750    uint32Tag = '[object Uint32Array]';
12751
12752/** Used to identify `toStringTag` values of typed arrays. */
12753var typedArrayTags = {};
12754typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =
12755typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =
12756typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =
12757typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =
12758typedArrayTags[uint32Tag] = true;
12759typedArrayTags[argsTag] = typedArrayTags[arrayTag] =
12760typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =
12761typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =
12762typedArrayTags[errorTag] = typedArrayTags[funcTag] =
12763typedArrayTags[mapTag] = typedArrayTags[numberTag] =
12764typedArrayTags[objectTag] = typedArrayTags[regexpTag] =
12765typedArrayTags[setTag] = typedArrayTags[stringTag] =
12766typedArrayTags[weakMapTag] = false;
12767
12768/**
12769 * The base implementation of `_.isTypedArray` without Node.js optimizations.
12770 *
12771 * @private
12772 * @param {*} value The value to check.
12773 * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
12774 */
12775function baseIsTypedArray(value) {
12776  return isObjectLike(value) &&
12777    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
12778}
12779
12780module.exports = baseIsTypedArray;
12781
12782
12783/***/ }),
12784/* 244 */
12785/***/ (function(module, exports) {
12786
12787/**
12788 * The base implementation of `_.unary` without support for storing metadata.
12789 *
12790 * @private
12791 * @param {Function} func The function to cap arguments for.
12792 * @returns {Function} Returns the new capped function.
12793 */
12794function baseUnary(func) {
12795  return function(value) {
12796    return func(value);
12797  };
12798}
12799
12800module.exports = baseUnary;
12801
12802
12803/***/ }),
12804/* 245 */
12805/***/ (function(module, exports, __webpack_require__) {
12806
12807/* WEBPACK VAR INJECTION */(function(module) {var freeGlobal = __webpack_require__(99);
12808
12809/** Detect free variable `exports`. */
12810var freeExports =  true && exports && !exports.nodeType && exports;
12811
12812/** Detect free variable `module`. */
12813var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
12814
12815/** Detect the popular CommonJS extension `module.exports`. */
12816var moduleExports = freeModule && freeModule.exports === freeExports;
12817
12818/** Detect free variable `process` from Node.js. */
12819var freeProcess = moduleExports && freeGlobal.process;
12820
12821/** Used to access faster Node.js helpers. */
12822var nodeUtil = (function() {
12823  try {
12824    // Use `util.types` for Node.js 10+.
12825    var types = freeModule && freeModule.require && freeModule.require('util').types;
12826
12827    if (types) {
12828      return types;
12829    }
12830
12831    // Legacy `process.binding('util')` for Node.js < 10.
12832    return freeProcess && freeProcess.binding && freeProcess.binding('util');
12833  } catch (e) {}
12834}());
12835
12836module.exports = nodeUtil;
12837
12838/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(107)(module)))
12839
12840/***/ }),
12841/* 246 */
12842/***/ (function(module, exports, __webpack_require__) {
12843
12844var overArg = __webpack_require__(108);
12845
12846/* Built-in method references for those with the same name as other `lodash` methods. */
12847var nativeKeys = overArg(Object.keys, Object);
12848
12849module.exports = nativeKeys;
12850
12851
12852/***/ }),
12853/* 247 */
12854/***/ (function(module, exports, __webpack_require__) {
12855
12856var getNative = __webpack_require__(11),
12857    root = __webpack_require__(6);
12858
12859/* Built-in method references that are verified to be native. */
12860var DataView = getNative(root, 'DataView');
12861
12862module.exports = DataView;
12863
12864
12865/***/ }),
12866/* 248 */
12867/***/ (function(module, exports, __webpack_require__) {
12868
12869var getNative = __webpack_require__(11),
12870    root = __webpack_require__(6);
12871
12872/* Built-in method references that are verified to be native. */
12873var Promise = getNative(root, 'Promise');
12874
12875module.exports = Promise;
12876
12877
12878/***/ }),
12879/* 249 */
12880/***/ (function(module, exports, __webpack_require__) {
12881
12882var getNative = __webpack_require__(11),
12883    root = __webpack_require__(6);
12884
12885/* Built-in method references that are verified to be native. */
12886var Set = getNative(root, 'Set');
12887
12888module.exports = Set;
12889
12890
12891/***/ }),
12892/* 250 */
12893/***/ (function(module, exports, __webpack_require__) {
12894
12895var isStrictComparable = __webpack_require__(110),
12896    keys = __webpack_require__(35);
12897
12898/**
12899 * Gets the property names, values, and compare flags of `object`.
12900 *
12901 * @private
12902 * @param {Object} object The object to query.
12903 * @returns {Array} Returns the match data of `object`.
12904 */
12905function getMatchData(object) {
12906  var result = keys(object),
12907      length = result.length;
12908
12909  while (length--) {
12910    var key = result[length],
12911        value = object[key];
12912
12913    result[length] = [key, value, isStrictComparable(value)];
12914  }
12915  return result;
12916}
12917
12918module.exports = getMatchData;
12919
12920
12921/***/ }),
12922/* 251 */
12923/***/ (function(module, exports, __webpack_require__) {
12924
12925var baseIsEqual = __webpack_require__(101),
12926    get = __webpack_require__(60),
12927    hasIn = __webpack_require__(257),
12928    isKey = __webpack_require__(62),
12929    isStrictComparable = __webpack_require__(110),
12930    matchesStrictComparable = __webpack_require__(111),
12931    toKey = __webpack_require__(24);
12932
12933/** Used to compose bitmasks for value comparisons. */
12934var COMPARE_PARTIAL_FLAG = 1,
12935    COMPARE_UNORDERED_FLAG = 2;
12936
12937/**
12938 * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.
12939 *
12940 * @private
12941 * @param {string} path The path of the property to get.
12942 * @param {*} srcValue The value to match.
12943 * @returns {Function} Returns the new spec function.
12944 */
12945function baseMatchesProperty(path, srcValue) {
12946  if (isKey(path) && isStrictComparable(srcValue)) {
12947    return matchesStrictComparable(toKey(path), srcValue);
12948  }
12949  return function(object) {
12950    var objValue = get(object, path);
12951    return (objValue === undefined && objValue === srcValue)
12952      ? hasIn(object, path)
12953      : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);
12954  };
12955}
12956
12957module.exports = baseMatchesProperty;
12958
12959
12960/***/ }),
12961/* 252 */
12962/***/ (function(module, exports, __webpack_require__) {
12963
12964var memoizeCapped = __webpack_require__(253);
12965
12966/** Used to match property names within property paths. */
12967var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
12968
12969/** Used to match backslashes in property paths. */
12970var reEscapeChar = /\\(\\)?/g;
12971
12972/**
12973 * Converts `string` to a property path array.
vendor: 5,053 bytes, lines 12974-13167
12974 *
12975 * @private
12976 * @param {string} string The string to convert.
12977 * @returns {Array} Returns the property path array.
12978 */
12979var stringToPath = memoizeCapped(function(string) {
12980  var result = [];
12981  if (string.charCodeAt(0) === 46 /* . */) {
12982    result.push('');
12983  }
12984  string.replace(rePropName, function(match, number, quote, subString) {
12985    result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));
12986  });
12987  return result;
12988});
12989
12990module.exports = stringToPath;
12991
12992
12993/***/ }),
12994/* 253 */
12995/***/ (function(module, exports, __webpack_require__) {
12996
12997var memoize = __webpack_require__(254);
12998
12999/** Used as the maximum memoize cache size. */
13000var MAX_MEMOIZE_SIZE = 500;
13001
13002/**
13003 * A specialized version of `_.memoize` which clears the memoized function's
13004 * cache when it exceeds `MAX_MEMOIZE_SIZE`.
13005 *
13006 * @private
13007 * @param {Function} func The function to have its output memoized.
13008 * @returns {Function} Returns the new memoized function.
13009 */
13010function memoizeCapped(func) {
13011  var result = memoize(func, function(key) {
13012    if (cache.size === MAX_MEMOIZE_SIZE) {
13013      cache.clear();
13014    }
13015    return key;
13016  });
13017
13018  var cache = result.cache;
13019  return result;
13020}
13021
13022module.exports = memoizeCapped;
13023
13024
13025/***/ }),
13026/* 254 */
13027/***/ (function(module, exports, __webpack_require__) {
13028
13029var MapCache = __webpack_require__(51);
13030
13031/** Error message constants. */
13032var FUNC_ERROR_TEXT = 'Expected a function';
13033
13034/**
13035 * Creates a function that memoizes the result of `func`. If `resolver` is
13036 * provided, it determines the cache key for storing the result based on the
13037 * arguments provided to the memoized function. By default, the first argument
13038 * provided to the memoized function is used as the map cache key. The `func`
13039 * is invoked with the `this` binding of the memoized function.
13040 *
13041 * **Note:** The cache is exposed as the `cache` property on the memoized
13042 * function. Its creation may be customized by replacing the `_.memoize.Cache`
13043 * constructor with one whose instances implement the
13044 * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)
13045 * method interface of `clear`, `delete`, `get`, `has`, and `set`.
13046 *
13047 * @static
13048 * @memberOf _
13049 * @since 0.1.0
13050 * @category Function
13051 * @param {Function} func The function to have its output memoized.
13052 * @param {Function} [resolver] The function to resolve the cache key.
13053 * @returns {Function} Returns the new memoized function.
13054 * @example
13055 *
13056 * var object = { 'a': 1, 'b': 2 };
13057 * var other = { 'c': 3, 'd': 4 };
13058 *
13059 * var values = _.memoize(_.values);
13060 * values(object);
13061 * // => [1, 2]
13062 *
13063 * values(other);
13064 * // => [3, 4]
13065 *
13066 * object.a = 2;
13067 * values(object);
13068 * // => [1, 2]
13069 *
13070 * // Modify the result cache.
13071 * values.cache.set(object, ['a', 'b']);
13072 * values(object);
13073 * // => ['a', 'b']
13074 *
13075 * // Replace `_.memoize.Cache`.
13076 * _.memoize.Cache = WeakMap;
13077 */
13078function memoize(func, resolver) {
13079  if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {
13080    throw new TypeError(FUNC_ERROR_TEXT);
13081  }
13082  var memoized = function() {
13083    var args = arguments,
13084        key = resolver ? resolver.apply(this, args) : args[0],
13085        cache = memoized.cache;
13086
13087    if (cache.has(key)) {
13088      return cache.get(key);
13089    }
13090    var result = func.apply(this, args);
13091    memoized.cache = cache.set(key, result) || cache;
13092    return result;
13093  };
13094  memoized.cache = new (memoize.Cache || MapCache);
13095  return memoized;
13096}
13097
13098// Expose `MapCache`.
13099memoize.Cache = MapCache;
13100
13101module.exports = memoize;
13102
13103
13104/***/ }),
13105/* 255 */
13106/***/ (function(module, exports, __webpack_require__) {
13107
13108var baseToString = __webpack_require__(256);
13109
13110/**
13111 * Converts `value` to a string. An empty string is returned for `null`
13112 * and `undefined` values. The sign of `-0` is preserved.
13113 *
13114 * @static
13115 * @memberOf _
13116 * @since 4.0.0
13117 * @category Lang
13118 * @param {*} value The value to convert.
13119 * @returns {string} Returns the converted string.
13120 * @example
13121 *
13122 * _.toString(null);
13123 * // => ''
13124 *
13125 * _.toString(-0);
13126 * // => '-0'
13127 *
13128 * _.toString([1, 2, 3]);
13129 * // => '1,2,3'
13130 */
13131function toString(value) {
13132  return value == null ? '' : baseToString(value);
13133}
13134
13135module.exports = toString;
13136
13137
13138/***/ }),
13139/* 256 */
13140/***/ (function(module, exports, __webpack_require__) {
13141
13142var Symbol = __webpack_require__(23),
13143    arrayMap = __webpack_require__(112),
13144    isArray = __webpack_require__(2),
13145    isSymbol = __webpack_require__(38);
13146
13147/** Used as references for various `Number` constants. */
13148var INFINITY = 1 / 0;
13149
13150/** Used to convert symbols to primitives and strings. */
13151var symbolProto = Symbol ? Symbol.prototype : undefined,
13152    symbolToString = symbolProto ? symbolProto.toString : undefined;
13153
13154/**
13155 * The base implementation of `_.toString` which doesn't convert nullish
13156 * values to empty strings.
13157 *
13158 * @private
13159 * @param {*} value The value to process.
13160 * @returns {string} Returns the string.
13161 */
13162function baseToString(value) {
13163  // Exit early for strings to avoid a performance hit in some environments.
13164  if (typeof value == 'string') {
13165    return value;
13166  }
13167  if (isArray(value)) {
vendor: 2,364 bytes, lines 13168-13265
13168    // Recursively convert values (susceptible to call stack limits).
13169    return arrayMap(value, baseToString) + '';
13170  }
13171  if (isSymbol(value)) {
13172    return symbolToString ? symbolToString.call(value) : '';
13173  }
13174  var result = (value + '');
13175  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
13176}
13177
13178module.exports = baseToString;
13179
13180
13181/***/ }),
13182/* 257 */
13183/***/ (function(module, exports, __webpack_require__) {
13184
13185var baseHasIn = __webpack_require__(258),
13186    hasPath = __webpack_require__(259);
13187
13188/**
13189 * Checks if `path` is a direct or inherited property of `object`.
13190 *
13191 * @static
13192 * @memberOf _
13193 * @since 4.0.0
13194 * @category Object
13195 * @param {Object} object The object to query.
13196 * @param {Array|string} path The path to check.
13197 * @returns {boolean} Returns `true` if `path` exists, else `false`.
13198 * @example
13199 *
13200 * var object = _.create({ 'a': _.create({ 'b': 2 }) });
13201 *
13202 * _.hasIn(object, 'a');
13203 * // => true
13204 *
13205 * _.hasIn(object, 'a.b');
13206 * // => true
13207 *
13208 * _.hasIn(object, ['a', 'b']);
13209 * // => true
13210 *
13211 * _.hasIn(object, 'b');
13212 * // => false
13213 */
13214function hasIn(object, path) {
13215  return object != null && hasPath(object, path, baseHasIn);
13216}
13217
13218module.exports = hasIn;
13219
13220
13221/***/ }),
13222/* 258 */
13223/***/ (function(module, exports) {
13224
13225/**
13226 * The base implementation of `_.hasIn` without support for deep paths.
13227 *
13228 * @private
13229 * @param {Object} [object] The object to query.
13230 * @param {Array|string} key The key to check.
13231 * @returns {boolean} Returns `true` if `key` exists, else `false`.
13232 */
13233function baseHasIn(object, key) {
13234  return object != null && key in Object(object);
13235}
13236
13237module.exports = baseHasIn;
13238
13239
13240/***/ }),
13241/* 259 */
13242/***/ (function(module, exports, __webpack_require__) {
13243
13244var castPath = __webpack_require__(37),
13245    isArguments = __webpack_require__(36),
13246    isArray = __webpack_require__(2),
13247    isIndex = __webpack_require__(54),
13248    isLength = __webpack_require__(56),
13249    toKey = __webpack_require__(24);
13250
13251/**
13252 * Checks if `path` exists on `object`.
13253 *
13254 * @private
13255 * @param {Object} object The object to query.
13256 * @param {Array|string} path The path to check.
13257 * @param {Function} hasFunc The function to check properties.
13258 * @returns {boolean} Returns `true` if `path` exists, else `false`.
13259 */
13260function hasPath(object, path, hasFunc) {
13261  path = castPath(path, object);
13262
13263  var index = -1,
13264      length = path.length,
13265      result = false;
vendor: 4,842 bytes, lines 13266-13471
13266
13267  while (++index < length) {
13268    var key = toKey(path[index]);
13269    if (!(result = object != null && hasFunc(object, key))) {
13270      break;
13271    }
13272    object = object[key];
13273  }
13274  if (result || ++index != length) {
13275    return result;
13276  }
13277  length = object == null ? 0 : object.length;
13278  return !!length && isLength(length) && isIndex(key, length) &&
13279    (isArray(object) || isArguments(object));
13280}
13281
13282module.exports = hasPath;
13283
13284
13285/***/ }),
13286/* 260 */
13287/***/ (function(module, exports, __webpack_require__) {
13288
13289var baseProperty = __webpack_require__(113),
13290    basePropertyDeep = __webpack_require__(261),
13291    isKey = __webpack_require__(62),
13292    toKey = __webpack_require__(24);
13293
13294/**
13295 * Creates a function that returns the value at `path` of a given object.
13296 *
13297 * @static
13298 * @memberOf _
13299 * @since 2.4.0
13300 * @category Util
13301 * @param {Array|string} path The path of the property to get.
13302 * @returns {Function} Returns the new accessor function.
13303 * @example
13304 *
13305 * var objects = [
13306 *   { 'a': { 'b': 2 } },
13307 *   { 'a': { 'b': 1 } }
13308 * ];
13309 *
13310 * _.map(objects, _.property('a.b'));
13311 * // => [2, 1]
13312 *
13313 * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');
13314 * // => [1, 2]
13315 */
13316function property(path) {
13317  return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);
13318}
13319
13320module.exports = property;
13321
13322
13323/***/ }),
13324/* 261 */
13325/***/ (function(module, exports, __webpack_require__) {
13326
13327var baseGet = __webpack_require__(61);
13328
13329/**
13330 * A specialized version of `baseProperty` which supports deep paths.
13331 *
13332 * @private
13333 * @param {Array|string} path The path of the property to get.
13334 * @returns {Function} Returns the new accessor function.
13335 */
13336function basePropertyDeep(path) {
13337  return function(object) {
13338    return baseGet(object, path);
13339  };
13340}
13341
13342module.exports = basePropertyDeep;
13343
13344
13345/***/ }),
13346/* 262 */
13347/***/ (function(module, exports, __webpack_require__) {
13348
13349var baseFindIndex = __webpack_require__(114),
13350    baseIteratee = __webpack_require__(10),
13351    toInteger = __webpack_require__(115);
13352
13353/* Built-in method references for those with the same name as other `lodash` methods. */
13354var nativeMax = Math.max;
13355
13356/**
13357 * This method is like `_.find` except that it returns the index of the first
13358 * element `predicate` returns truthy for instead of the element itself.
13359 *
13360 * @static
13361 * @memberOf _
13362 * @since 1.1.0
13363 * @category Array
13364 * @param {Array} array The array to inspect.
13365 * @param {Function} [predicate=_.identity] The function invoked per iteration.
13366 * @param {number} [fromIndex=0] The index to search from.
13367 * @returns {number} Returns the index of the found element, else `-1`.
13368 * @example
13369 *
13370 * var users = [
13371 *   { 'user': 'barney',  'active': false },
13372 *   { 'user': 'fred',    'active': false },
13373 *   { 'user': 'pebbles', 'active': true }
13374 * ];
13375 *
13376 * _.findIndex(users, function(o) { return o.user == 'barney'; });
13377 * // => 0
13378 *
13379 * // The `_.matches` iteratee shorthand.
13380 * _.findIndex(users, { 'user': 'fred', 'active': false });
13381 * // => 1
13382 *
13383 * // The `_.matchesProperty` iteratee shorthand.
13384 * _.findIndex(users, ['active', false]);
13385 * // => 0
13386 *
13387 * // The `_.property` iteratee shorthand.
13388 * _.findIndex(users, 'active');
13389 * // => 2
13390 */
13391function findIndex(array, predicate, fromIndex) {
13392  var length = array == null ? 0 : array.length;
13393  if (!length) {
13394    return -1;
13395  }
13396  var index = fromIndex == null ? 0 : toInteger(fromIndex);
13397  if (index < 0) {
13398    index = nativeMax(length + index, 0);
13399  }
13400  return baseFindIndex(array, baseIteratee(predicate, 3), index);
13401}
13402
13403module.exports = findIndex;
13404
13405
13406/***/ }),
13407/* 263 */
13408/***/ (function(module, exports, __webpack_require__) {
13409
13410var toNumber = __webpack_require__(64);
13411
13412/** Used as references for various `Number` constants. */
13413var INFINITY = 1 / 0,
13414    MAX_INTEGER = 1.7976931348623157e+308;
13415
13416/**
13417 * Converts `value` to a finite number.
13418 *
13419 * @static
13420 * @memberOf _
13421 * @since 4.12.0
13422 * @category Lang
13423 * @param {*} value The value to convert.
13424 * @returns {number} Returns the converted number.
13425 * @example
13426 *
13427 * _.toFinite(3.2);
13428 * // => 3.2
13429 *
13430 * _.toFinite(Number.MIN_VALUE);
13431 * // => 5e-324
13432 *
13433 * _.toFinite(Infinity);
13434 * // => 1.7976931348623157e+308
13435 *
13436 * _.toFinite('3.2');
13437 * // => 3.2
13438 */
13439function toFinite(value) {
13440  if (!value) {
13441    return value === 0 ? value : 0;
13442  }
13443  value = toNumber(value);
13444  if (value === INFINITY || value === -INFINITY) {
13445    var sign = (value < 0 ? -1 : 1);
13446    return sign * MAX_INTEGER;
13447  }
13448  return value === value ? value : 0;
13449}
13450
13451module.exports = toFinite;
13452
13453
13454/***/ }),
13455/* 264 */
13456/***/ (function(module, exports, __webpack_require__) {
13457
13458var trimmedEndIndex = __webpack_require__(265);
13459
13460/** Used to match leading whitespace. */
13461var reTrimStart = /^\s+/;
13462
13463/**
13464 * The base implementation of `_.trim`.
13465 *
13466 * @private
13467 * @param {string} string The string to trim.
13468 * @returns {string} Returns the trimmed string.
13469 */
13470function baseTrim(string) {
13471  return string
13472    ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')
13473    : string;
13474}
13475
13476module.exports = baseTrim;
13477
13478
13479/***/ }),
13480/* 265 */
13481/***/ (function(module, exports) {
13482
13483/** Used to match a single whitespace character. */
13484var reWhitespace = /\s/;
13485
13486/**
13487 * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace
13488 * character of `string`.
13489 *
13490 * @private
13491 * @param {string} string The string to inspect.
13492 * @returns {number} Returns the index of the last non-whitespace character.
13493 */
13494function trimmedEndIndex(string) {
13495  var index = string.length;
13496
13497  while (index-- && reWhitespace.test(string.charAt(index))) {}
13498  return index;
13499}
13500
13501module.exports = trimmedEndIndex;
13502
13503
13504/***/ }),
13505/* 266 */
13506/***/ (function(module, exports) {
13507
13508function _arrayWithoutHoles(arr) {
13509  if (Array.isArray(arr)) {
13510    for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {
13511      arr2[i] = arr[i];
13512    }
13513
13514    return arr2;
13515  }
13516}
13517
13518module.exports = _arrayWithoutHoles;
13519
13520/***/ }),
13521/* 267 */
13522/***/ (function(module, exports) {
13523
13524function _iterableToArray(iter) {
13525  if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter);
13526}
13527
13528module.exports = _iterableToArray;
13529
13530/***/ }),
13531/* 268 */
13532/***/ (function(module, exports) {
13533
13534function _nonIterableSpread() {
13535  throw new TypeError("Invalid attempt to spread non-iterable instance");
13536}
13537
13538module.exports = _nonIterableSpread;
13539
13540/***/ }),
13541/* 269 */
13542/***/ (function(module, exports, __webpack_require__) {
13543
13544"use strict";
13545
13546
13547Object.defineProperty(exports, "__esModule", {
13548  value: true
13549});
13550exports.createElementState = createElementState;
13551exports.mergeActionState = mergeActionState;
13552exports.ixElements = void 0;
13553
13554var _timm = __webpack_require__(22);
13555
13556var _constants = __webpack_require__(4);
13557
13558var _constants$IX2EngineC = _constants.IX2EngineConstants,
13559    HTML_ELEMENT = _constants$IX2EngineC.HTML_ELEMENT,
13560    PLAIN_OBJECT = _constants$IX2EngineC.PLAIN_OBJECT,
13561    ABSTRACT_NODE = _constants$IX2EngineC.ABSTRACT_NODE,
13562    CONFIG_X_VALUE = _constants$IX2EngineC.CONFIG_X_VALUE,
13563    CONFIG_Y_VALUE = _constants$IX2EngineC.CONFIG_Y_VALUE,
13564    CONFIG_Z_VALUE = _constants$IX2EngineC.CONFIG_Z_VALUE,
13565    CONFIG_VALUE = _constants$IX2EngineC.CONFIG_VALUE,
13566    CONFIG_X_UNIT = _constants$IX2EngineC.CONFIG_X_UNIT,
13567    CONFIG_Y_UNIT = _constants$IX2EngineC.CONFIG_Y_UNIT,
13568    CONFIG_Z_UNIT = _constants$IX2EngineC.CONFIG_Z_UNIT,
13569    CONFIG_UNIT = _constants$IX2EngineC.CONFIG_UNIT;
13570var _constants$IX2EngineA = _constants.IX2EngineActionTypes,
13571    IX2_SESSION_STOPPED = _constants$IX2EngineA.IX2_SESSION_STOPPED,
13572    IX2_INSTANCE_ADDED = _constants$IX2EngineA.IX2_INSTANCE_ADDED,
13573    IX2_ELEMENT_STATE_CHANGED = _constants$IX2EngineA.IX2_ELEMENT_STATE_CHANGED;
13574var initialState = {};
13575var refState = 'refState';
13576
13577var ixElements = function ixElements() {
13578  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
13579  var action = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
13580
13581  switch (action.type) {
13582    case IX2_SESSION_STOPPED:
13583      {
13584        return initialState;
13585      }
13586
13587    case IX2_INSTANCE_ADDED:
13588      {
13589        var _action$payload = action.payload,
13590            elementId = _action$payload.elementId,
13591            ref = _action$payload.element,
13592            origin = _action$payload.origin,
13593            actionItem = _action$payload.actionItem,
13594            refType = _action$payload.refType;
13595        var actionTypeId = actionItem.actionTypeId;
13596        var newState = state; // Create new ref entry if it doesn't exist
13597
13598        if ((0, _timm.getIn)(newState, [elementId, ref]) !== ref) {
13599          newState = createElementState(newState, ref, refType, elementId, actionItem);
13600        } // Merge origin values into ref state
13601
13602
13603        return mergeActionState(newState, elementId, actionTypeId, origin, actionItem);
13604      }
13605
13606    case IX2_ELEMENT_STATE_CHANGED:
13607      {
13608        var _action$payload2 = action.payload,
13609            _elementId = _action$payload2.elementId,
13610            _actionTypeId = _action$payload2.actionTypeId,
13611            current = _action$payload2.current,
13612            _actionItem = _action$payload2.actionItem;
13613        return mergeActionState(state, _elementId, _actionTypeId, current, _actionItem);
13614      }
13615
13616    default:
13617      {
13618        return state;
13619      }
13620  }
13621};
13622
13623exports.ixElements = ixElements;
13624
13625function createElementState(state, ref, refType, elementId, actionItem) {
13626  var refId = refType === PLAIN_OBJECT ? (0, _timm.getIn)(actionItem, ['config', 'target', 'objectId']) : null;
13627  return (0, _timm.mergeIn)(state, [elementId], {
13628    id: elementId,
13629    ref: ref,
13630    refId: refId,
13631    refType: refType
13632  });
13633}
13634
13635function mergeActionState(state, elementId, actionTypeId, actionState, // FIXME: weak type is used
13636actionItem) {
13637  var units = pickUnits(actionItem);
13638  var mergePath = [elementId, refState, actionTypeId];
13639  return (0, _timm.mergeIn)(state, mergePath, actionState, units);
13640}
13641
13642var valueUnitPairs = [[CONFIG_X_VALUE, CONFIG_X_UNIT], [CONFIG_Y_VALUE, CONFIG_Y_UNIT], [CONFIG_Z_VALUE, CONFIG_Z_UNIT], [CONFIG_VALUE, CONFIG_UNIT]]; // FIXME: weak type is used
13643// eslint-disable-next-line flowtype/no-weak-types
13644
13645function pickUnits(actionItem) {
13646  var config = actionItem.config;
13647  return valueUnitPairs.reduce(function (result, pair) {
13648    var valueKey = pair[0];
13649    var unitKey = pair[1];
13650    var configValue = config[valueKey];
13651    var configUnit = config[unitKey];
13652
13653    if (configValue != null && configUnit != null) {
13654      result[unitKey] = configUnit;
13655    }
13656
13657    return result;
13658  }, {});
13659}
13660
13661/***/ }),
13662/* 270 */
13663/***/ (function(module, exports, __webpack_require__) {
13664
13665"use strict";
13666
13667
13668Object.defineProperty(exports, "__esModule", {
13669  value: true
13670});
13671exports.clearPlugin = exports.renderPlugin = exports.createPluginInstance = exports.getPluginDestination = exports.getPluginOrigin = exports.getPluginDuration = exports.getPluginConfig = void 0;
13672/* eslint-env browser */
13673// $FlowFixMe
13674
13675var getPluginConfig = function getPluginConfig(actionItemConfig) {
13676  return actionItemConfig.value;
13677}; // $FlowFixMe
13678
13679
13680exports.getPluginConfig = getPluginConfig;
13681
13682var getPluginDuration = function getPluginDuration(element, actionItem) {
13683  if (actionItem.config.duration !== 'auto') {
13684    return null;
13685  }
13686
13687  var duration = parseFloat(element.getAttribute('data-duration'));
13688
13689  if (duration > 0) {
13690    return duration * 1000;
13691  }
13692
13693  return parseFloat(element.getAttribute('data-default-duration')) * 1000;
13694}; // $FlowFixMe
13695
13696
13697exports.getPluginDuration = getPluginDuration;
13698
13699var getPluginOrigin = function getPluginOrigin(refState) {
13700  return refState || {
13701    value: 0
13702  };
13703}; // $FlowFixMe
13704
13705
13706exports.getPluginOrigin = getPluginOrigin;
13707
13708var getPluginDestination = function getPluginDestination(actionItemConfig) {
13709  return {
13710    value: actionItemConfig.value
13711  };
13712}; // $FlowFixMe
13713
13714
13715exports.getPluginDestination = getPluginDestination;
13716
13717var createPluginInstance = function createPluginInstance(element) {
13718  var instance = window.Webflow.require('lottie').createInstance(element);
13719
13720  instance.stop();
13721  instance.setSubframe(true);
13722  return instance;
13723}; // $FlowFixMe
13724
13725
13726exports.createPluginInstance = createPluginInstance;
13727
13728var renderPlugin = function renderPlugin(pluginInstance, refState, actionItem) {
13729  if (!pluginInstance) {
13730    return;
13731  }
13732
13733  var percent = refState[actionItem.actionTypeId].value / 100;
13734  pluginInstance.goToFrame(pluginInstance.frames * percent);
13735}; // $FlowFixMe
13736
13737
13738exports.renderPlugin = renderPlugin;
13739
13740var clearPlugin = function clearPlugin(element) {
13741  var instance = window.Webflow.require('lottie').createInstance(element);
13742
13743  instance.stop();
13744};
13745
13746exports.clearPlugin = clearPlugin;
13747
13748/***/ }),
13749/* 271 */
13750/***/ (function(module, exports, __webpack_require__) {
13751
13752"use strict";
13753
13754
13755var _interopRequireDefault2 = __webpack_require__(0);
13756
13757var _typeof2 = _interopRequireDefault2(__webpack_require__(13));
13758
13759var _defineProperty2 = _interopRequireDefault2(__webpack_require__(21));
13760
13761var _Object$freeze, _Object$freeze2, _transformDefaults;
13762
13763var _interopRequireDefault = __webpack_require__(0);
13764
13765Object.defineProperty(exports, "__esModule", {
13766  value: true
13767});
13768exports.getInstanceId = getInstanceId;
13769exports.getElementId = getElementId;
13770exports.reifyState = reifyState;
13771exports.observeStore = observeStore;
13772exports.getAffectedElements = getAffectedElements;
13773exports.getComputedStyle = getComputedStyle;
13774exports.getInstanceOrigin = getInstanceOrigin;
13775exports.getDestinationValues = getDestinationValues;
13776exports.getRenderType = getRenderType;
13777exports.getStyleProp = getStyleProp;
13778exports.renderHTMLElement = renderHTMLElement;
13779exports.clearAllStyles = clearAllStyles;
13780exports.cleanupHTMLElement = cleanupHTMLElement;
13781exports.getMaxDurationItemIndex = getMaxDurationItemIndex;
13782exports.getActionListProgress = getActionListProgress;
13783exports.reduceListToGroup = reduceListToGroup;
13784exports.shouldNamespaceEventParameter = shouldNamespaceEventParameter;
13785exports.getNamespacedParameterId = getNamespacedParameterId;
13786exports.shouldAllowMediaQuery = shouldAllowMediaQuery;
13787exports.mediaQueriesEqual = mediaQueriesEqual;
13788exports.stringifyTarget = stringifyTarget;
13789Object.defineProperty(exports, "shallowEqual", {
13790  enumerable: true,
13791  get: function get() {
13792    return _shallowEqual["default"];
13793  }
13794});
13795exports.getItemConfigByKey = void 0;
13796
13797var _defaultTo = _interopRequireDefault(__webpack_require__(272));
13798
13799var _reduce = _interopRequireDefault(__webpack_require__(273));
13800
13801var _findLast = _interopRequireDefault(__webpack_require__(279));
13802
13803var _timm = __webpack_require__(22);
13804
13805var _constants = __webpack_require__(4);
13806
13807var _shallowEqual = _interopRequireDefault(__webpack_require__(281));
13808
13809var _IX2EasingUtils = __webpack_require__(118);
13810
13811var _IX2VanillaPlugins = __webpack_require__(120);
13812
13813var _IX2BrowserSupport = __webpack_require__(48);
13814/* eslint-env browser */
13815
13816
13817var _constants$IX2EngineC = _constants.IX2EngineConstants,
13818    BACKGROUND = _constants$IX2EngineC.BACKGROUND,
13819    TRANSFORM = _constants$IX2EngineC.TRANSFORM,
13820    TRANSLATE_3D = _constants$IX2EngineC.TRANSLATE_3D,
13821    SCALE_3D = _constants$IX2EngineC.SCALE_3D,
13822    ROTATE_X = _constants$IX2EngineC.ROTATE_X,
13823    ROTATE_Y = _constants$IX2EngineC.ROTATE_Y,
13824    ROTATE_Z = _constants$IX2EngineC.ROTATE_Z,
13825    SKEW = _constants$IX2EngineC.SKEW,
13826    PRESERVE_3D = _constants$IX2EngineC.PRESERVE_3D,
13827    FLEX = _constants$IX2EngineC.FLEX,
13828    OPACITY = _constants$IX2EngineC.OPACITY,
13829    FILTER = _constants$IX2EngineC.FILTER,
13830    FONT_VARIATION_SETTINGS = _constants$IX2EngineC.FONT_VARIATION_SETTINGS,
13831    WIDTH = _constants$IX2EngineC.WIDTH,
13832    HEIGHT = _constants$IX2EngineC.HEIGHT,
13833    BACKGROUND_COLOR = _constants$IX2EngineC.BACKGROUND_COLOR,
13834    BORDER_COLOR = _constants$IX2EngineC.BORDER_COLOR,
13835    COLOR = _constants$IX2EngineC.COLOR,
13836    CHILDREN = _constants$IX2EngineC.CHILDREN,
13837    IMMEDIATE_CHILDREN = _constants$IX2EngineC.IMMEDIATE_CHILDREN,
13838    SIBLINGS = _constants$IX2EngineC.SIBLINGS,
13839    PARENT = _constants$IX2EngineC.PARENT,
13840    DISPLAY = _constants$IX2EngineC.DISPLAY,
13841    WILL_CHANGE = _constants$IX2EngineC.WILL_CHANGE,
13842    AUTO = _constants$IX2EngineC.AUTO,
13843    COMMA_DELIMITER = _constants$IX2EngineC.COMMA_DELIMITER,
13844    COLON_DELIMITER = _constants$IX2EngineC.COLON_DELIMITER,
13845    BAR_DELIMITER = _constants$IX2EngineC.BAR_DELIMITER,
13846    RENDER_TRANSFORM = _constants$IX2EngineC.RENDER_TRANSFORM,
13847    RENDER_GENERAL = _constants$IX2EngineC.RENDER_GENERAL,
13848    RENDER_STYLE = _constants$IX2EngineC.RENDER_STYLE,
13849    RENDER_PLUGIN = _constants$IX2EngineC.RENDER_PLUGIN;
13850var _constants$ActionType = _constants.ActionTypeConsts,
13851    TRANSFORM_MOVE = _constants$ActionType.TRANSFORM_MOVE,
13852    TRANSFORM_SCALE = _constants$ActionType.TRANSFORM_SCALE,
13853    TRANSFORM_ROTATE = _constants$ActionType.TRANSFORM_ROTATE,
13854    TRANSFORM_SKEW = _constants$ActionType.TRANSFORM_SKEW,
13855    STYLE_OPACITY = _constants$ActionType.STYLE_OPACITY,
13856    STYLE_FILTER = _constants$ActionType.STYLE_FILTER,
13857    STYLE_FONT_VARIATION = _constants$ActionType.STYLE_FONT_VARIATION,
13858    STYLE_SIZE = _constants$ActionType.STYLE_SIZE,
13859    STYLE_BACKGROUND_COLOR = _constants$ActionType.STYLE_BACKGROUND_COLOR,
13860    STYLE_BORDER = _constants$ActionType.STYLE_BORDER,
13861    STYLE_TEXT_COLOR = _constants$ActionType.STYLE_TEXT_COLOR,
13862    GENERAL_DISPLAY = _constants$ActionType.GENERAL_DISPLAY;
13863var OBJECT_VALUE = 'OBJECT_VALUE';
13864
13865var trim = function trim(v) {
13866  return v.trim();
13867};
13868
13869var colorStyleProps = Object.freeze((_Object$freeze = {}, (0, _defineProperty2["default"])(_Object$freeze, STYLE_BACKGROUND_COLOR, BACKGROUND_COLOR), (0, _defineProperty2["default"])(_Object$freeze, STYLE_BORDER, BORDER_COLOR), (0, _defineProperty2["default"])(_Object$freeze, STYLE_TEXT_COLOR, COLOR), _Object$freeze));
13870var willChangeProps = Object.freeze((_Object$freeze2 = {}, (0, _defineProperty2["default"])(_Object$freeze2, _IX2BrowserSupport.TRANSFORM_PREFIXED, TRANSFORM), (0, _defineProperty2["default"])(_Object$freeze2, BACKGROUND_COLOR, BACKGROUND), (0, _defineProperty2["default"])(_Object$freeze2, OPACITY, OPACITY), (0, _defineProperty2["default"])(_Object$freeze2, FILTER, FILTER), (0, _defineProperty2["default"])(_Object$freeze2, WIDTH, WIDTH), (0, _defineProperty2["default"])(_Object$freeze2, HEIGHT, HEIGHT), (0, _defineProperty2["default"])(_Object$freeze2, FONT_VARIATION_SETTINGS, FONT_VARIATION_SETTINGS), _Object$freeze2));
13871var objectCache = {};
13872var instanceCount = 1;
13873
13874function getInstanceId() {
13875  return 'i' + instanceCount++;
13876}
13877
13878var elementCount = 1; // $FlowFixMe
13879
13880function getElementId(ixElements, ref) {
13881  // TODO: optimize element lookup
13882  for (var key in ixElements) {
13883    var ixEl = ixElements[key];
13884
13885    if (ixEl && ixEl.ref === ref) {
13886      return ixEl.id;
13887    }
13888  }
13889
13890  return 'e' + elementCount++;
13891} // $FlowFixMe
13892
13893
13894function reifyState() {
13895  var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
13896      events = _ref2.events,
13897      actionLists = _ref2.actionLists,
13898      site = _ref2.site;
13899
13900  var eventTypeMap = (0, _reduce["default"])(events, function (result, event) {
13901    var eventTypeId = event.eventTypeId;
13902
13903    if (!result[eventTypeId]) {
13904      result[eventTypeId] = {};
13905    }
13906
13907    result[eventTypeId][event.id] = event;
13908    return result;
13909  }, {});
13910  var mediaQueries = site && site.mediaQueries;
13911  var mediaQueryKeys = [];
13912
13913  if (mediaQueries) {
13914    mediaQueryKeys = mediaQueries.map(function (mq) {
13915      return mq.key;
13916    });
13917  } else {
13918    mediaQueries = [];
13919    console.warn("IX2 missing mediaQueries in site data");
13920  }
13921
13922  return {
13923    ixData: {
13924      events: events,
13925      actionLists: actionLists,
13926      eventTypeMap: eventTypeMap,
13927      mediaQueries: mediaQueries,
13928      mediaQueryKeys: mediaQueryKeys
13929    }
13930  };
13931}
13932
13933var strictEqual = function strictEqual(a, b) {
13934  return a === b;
13935}; // $FlowFixMe
13936
13937
13938function observeStore(_ref3) {
13939  var store = _ref3.store,
13940      select = _ref3.select,
13941      onChange = _ref3.onChange,
13942      _ref3$comparator = _ref3.comparator,
13943      comparator = _ref3$comparator === void 0 ? strictEqual : _ref3$comparator;
13944  var getState = store.getState,
13945      subscribe = store.subscribe;
13946  var unsubscribe = subscribe(handleChange);
13947  var currentState = select(getState());
13948
13949  function handleChange() {
13950    var nextState = select(getState());
13951
13952    if (nextState == null) {
13953      unsubscribe();
13954      return;
13955    }
13956
13957    if (!comparator(nextState, currentState)) {
13958      currentState = nextState;
13959      onChange(currentState, store);
13960    }
13961  }
13962
13963  return unsubscribe;
13964}
13965
13966function normalizeTarget(target) {
13967  var type = (0, _typeof2["default"])(target);
13968
13969  if (type === 'string') {
13970    return {
13971      id: target
13972    };
13973  } else if (target != null && type === 'object') {
13974    var id = target.id,
13975        objectId = target.objectId,
13976        selector = target.selector,
13977        selectorGuids = target.selectorGuids,
13978        appliesTo = target.appliesTo,
13979        useEventTarget = target.useEventTarget;
13980    return {
13981      id: id,
13982      objectId: objectId,
13983      selector: selector,
13984      selectorGuids: selectorGuids,
13985      appliesTo: appliesTo,
13986      useEventTarget: useEventTarget
13987    };
13988  }
13989
13990  return {};
13991}
13992
13993function getAffectedElements(_ref4) {
13994  var config = _ref4.config,
13995      event = _ref4.event,
13996      eventTarget = _ref4.eventTarget,
13997      elementRoot = _ref4.elementRoot,
13998      elementApi = _ref4.elementApi;
13999
14000  var _ref, _event$action, _event$action$config;
14001
14002  if (!elementApi) {
14003    throw new Error('IX2 missing elementApi');
14004  }
14005
14006  var targets = config.targets;
14007
14008  if (Array.isArray(targets) && targets.length > 0) {
14009    return targets.reduce(function (accumulator, target) {
14010      return accumulator.concat(getAffectedElements({
14011        config: {
14012          target: target
14013        },
14014        event: event,
14015        eventTarget: eventTarget,
14016        elementRoot: elementRoot,
14017        elementApi: elementApi
14018      }));
14019    }, []);
14020  }
14021
14022  var getValidDocument = elementApi.getValidDocument,
14023      getQuerySelector = elementApi.getQuerySelector,
14024      queryDocument = elementApi.queryDocument,
14025      getChildElements = elementApi.getChildElements,
14026      getSiblingElements = elementApi.getSiblingElements,
14027      matchSelector = elementApi.matchSelector,
14028      elementContains = elementApi.elementContains,
14029      isSiblingNode = elementApi.isSiblingNode;
14030  var target = config.target;
14031
14032  if (!target) {
14033    return [];
14034  }
14035
14036  var _normalizeTarget = normalizeTarget(target),
14037      id = _normalizeTarget.id,
14038      objectId = _normalizeTarget.objectId,
14039      selector = _normalizeTarget.selector,
14040      selectorGuids = _normalizeTarget.selectorGuids,
14041      appliesTo = _normalizeTarget.appliesTo,
14042      useEventTarget = _normalizeTarget.useEventTarget;
14043
14044  if (objectId) {
14045    var ref = objectCache[objectId] || (objectCache[objectId] = {});
14046    return [ref];
14047  }
14048
14049  if (appliesTo === _constants.EventAppliesTo.PAGE) {
14050    var doc = getValidDocument(id);
14051    return doc ? [doc] : [];
14052  }
14053
14054  var overrides = (_ref = event === null || event === void 0 ? void 0 : (_event$action = event.action) === null || _event$action === void 0 ? void 0 : (_event$action$config = _event$action.config) === null || _event$action$config === void 0 ? void 0 : _event$action$config.affectedElements) !== null && _ref !== void 0 ? _ref : {};
14055  var override = overrides[id || selector] || {};
14056  var validOverride = Boolean(override.id || override.selector);
14057  var limitAffectedElements;
14058  var baseSelector;
14059  var finalSelector;
14060  var eventTargetSelector = event && getQuerySelector(normalizeTarget(event.target));
14061
14062  if (validOverride) {
14063    limitAffectedElements = override.limitAffectedElements;
14064    baseSelector = eventTargetSelector;
14065    finalSelector = getQuerySelector(override);
14066  } else {
14067    // pass in selectorGuids as well for server-side rendering.
14068    baseSelector = finalSelector = getQuerySelector({
14069      id: id,
14070      selector: selector,
14071      selectorGuids: selectorGuids
14072    });
14073  }
14074
14075  if (event && useEventTarget) {
14076    // eventTarget is not defined when this function is called in a clear request, so find
14077    // all target elements associated with the event data, and return affected elements.
14078    var eventTargets = eventTarget && (finalSelector || useEventTarget === true) ? [eventTarget] : queryDocument(eventTargetSelector);
14079
14080    if (finalSelector) {
14081      if (useEventTarget === PARENT) {
14082        return queryDocument(finalSelector).filter(function (parentElement) {
14083          return eventTargets.some(function (targetElement) {
14084            return elementContains(parentElement, targetElement);
14085          });
14086        });
14087      }
14088
14089      if (useEventTarget === CHILDREN) {
14090        return queryDocument(finalSelector).filter(function (childElement) {
14091          return eventTargets.some(function (targetElement) {
14092            return elementContains(targetElement, childElement);
14093          });
14094        });
14095      }
14096
14097      if (useEventTarget === SIBLINGS) {
14098        return queryDocument(finalSelector).filter(function (siblingElement) {
14099          return eventTargets.some(function (targetElement) {
14100            return isSiblingNode(targetElement, siblingElement);
14101          });
14102        });
14103      }
14104    }
14105
14106    return eventTargets;
14107  }
14108
14109  if (baseSelector == null || finalSelector == null) {
14110    return [];
14111  }
14112
14113  if (_IX2BrowserSupport.IS_BROWSER_ENV && elementRoot) {
14114    return queryDocument(finalSelector).filter(function (element) {
14115      return elementRoot.contains(element);
14116    });
14117  }
14118
14119  if (limitAffectedElements === CHILDREN) {
14120    return queryDocument(baseSelector, finalSelector);
14121  } else if (limitAffectedElements === IMMEDIATE_CHILDREN) {
14122    return getChildElements(queryDocument(baseSelector)).filter(matchSelector(finalSelector));
14123  } else if (limitAffectedElements === SIBLINGS) {
14124    return getSiblingElements(queryDocument(baseSelector)).filter(matchSelector(finalSelector));
14125  } else {
14126    return queryDocument(finalSelector);
14127  }
14128} // $FlowFixMe
14129
14130
14131function getComputedStyle(_ref5) {
14132  var element = _ref5.element,
14133      actionItem = _ref5.actionItem;
14134
14135  if (!_IX2BrowserSupport.IS_BROWSER_ENV) {
14136    return {};
14137  }
14138
14139  var actionTypeId = actionItem.actionTypeId;
14140
14141  switch (actionTypeId) {
14142    case STYLE_SIZE:
14143    case STYLE_BACKGROUND_COLOR:
14144    case STYLE_BORDER:
14145    case STYLE_TEXT_COLOR:
14146    case GENERAL_DISPLAY:
14147      return window.getComputedStyle(element);
14148
14149    default:
14150      return {};
14151  }
14152}
14153
14154var pxValueRegex = /px/;
14155
14156var getFilterDefaults = function getFilterDefaults(actionState, filters) {
14157  return filters.reduce(function (result, filter) {
14158    if (result[filter.type] == null) {
14159      result[filter.type] = filterDefaults[// $FlowFixMe - property `saturation` (did you mean `saturate`?) is missing in `filterDefaults`
14160      filter.type];
14161    }
14162
14163    return result;
14164  }, actionState || {});
14165};
14166
14167var getFontVariationDefaults = function getFontVariationDefaults(actionState, fontVariations) {
14168  return fontVariations.reduce(function (result, fontVariation) {
14169    if (result[fontVariation.type] == null) {
14170      result[fontVariation.type] = fontVariationDefaults[fontVariation.type] || fontVariation.defaultValue || 0;
14171    }
14172
14173    return result;
14174  }, actionState || {});
14175};
14176
14177function getInstanceOrigin(element) {
14178  var refState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
14179  var computedStyle = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
14180  var actionItem = arguments.length > 3 ? arguments[3] : undefined;
14181  var elementApi = arguments.length > 4 ? arguments[4] : undefined;
14182  var getStyle = elementApi.getStyle; // Flow Hack: Passing actionTypeId to isPluginType and then trying
14183  // to do type refinement using the same variable via a switch statement
14184  // breaks down. This is is a workaround to ensure we can use type refinement.
14185
14186  var actionTypeId = actionItem.actionTypeId;
14187
14188  if ((0, _IX2VanillaPlugins.isPluginType)(actionTypeId)) {
14189    // $FlowFixMe
14190    return (0, _IX2VanillaPlugins.getPluginOrigin)(actionTypeId)(refState[actionTypeId]);
14191  }
14192
14193  switch (actionItem.actionTypeId) {
14194    case TRANSFORM_MOVE:
14195    case TRANSFORM_SCALE:
14196    case TRANSFORM_ROTATE:
14197    case TRANSFORM_SKEW:
14198      {
14199        return refState[actionItem.actionTypeId] || transformDefaults[actionItem.actionTypeId];
14200      }
14201
14202    case STYLE_FILTER:
14203      return getFilterDefaults(refState[actionItem.actionTypeId], actionItem.config.filters);
14204
14205    case STYLE_FONT_VARIATION:
14206      return getFontVariationDefaults(refState[actionItem.actionTypeId], actionItem.config.fontVariations);
14207
14208    case STYLE_OPACITY:
14209      return {
14210        value: (0, _defaultTo["default"])(parseFloat(getStyle(element, OPACITY)), 1.0)
14211      };
14212
14213    case STYLE_SIZE:
14214      {
14215        var inlineWidth = getStyle(element, WIDTH);
14216        var inlineHeight = getStyle(element, HEIGHT);
14217        var widthValue;
14218        var heightValue; // When destination unit is 'AUTO', ensure origin values are in px
14219
14220        if (actionItem.config.widthUnit === AUTO) {
14221          widthValue = pxValueRegex.test(inlineWidth) ? parseFloat(inlineWidth) : parseFloat(computedStyle.width);
14222        } else {
14223          widthValue = (0, _defaultTo["default"])(parseFloat(inlineWidth), parseFloat(computedStyle.width));
14224        }
14225
14226        if (actionItem.config.heightUnit === AUTO) {
14227          heightValue = pxValueRegex.test(inlineHeight) ? parseFloat(inlineHeight) : parseFloat(computedStyle.height);
14228        } else {
14229          heightValue = (0, _defaultTo["default"])(parseFloat(inlineHeight), parseFloat(computedStyle.height));
14230        }
14231
14232        return {
14233          widthValue: widthValue,
14234          heightValue: heightValue
14235        };
14236      }
14237
14238    case STYLE_BACKGROUND_COLOR:
14239    case STYLE_BORDER:
14240    case STYLE_TEXT_COLOR:
14241      return parseColor({
14242        element: element,
14243        actionTypeId: actionItem.actionTypeId,
14244        computedStyle: computedStyle,
14245        getStyle: getStyle
14246      });
14247
14248    case GENERAL_DISPLAY:
14249      return {
14250        value: (0, _defaultTo["default"])(getStyle(element, DISPLAY), computedStyle.display)
14251      };
14252    // $FlowFixMe - `OBJECT_VALUE` is not an expected `actionTypeId`
14253
14254    case OBJECT_VALUE:
14255      return refState[actionItem.actionTypeId] || {
14256        value: 0
14257      };
14258
14259    default:
14260      {
14261        // As far as the type system can tell, we're missing a handler for
14262        // PLUGIN_LOTTIE.
14263        //
14264        // This is actually handled by `isPluginType` above.
14265        //
14266        // $FlowFixMe
14267
14268        /*:: (actionItem: empty); */
14269        return;
14270      }
14271  }
14272}
14273
14274var reduceFilters = function reduceFilters(result, filter) {
14275  if (filter) {
14276    result[filter.type] = filter.value || 0;
14277  }
14278
14279  return result;
14280};
14281
14282var reduceFontVariations = function reduceFontVariations(result, fontVariation) {
14283  if (fontVariation) {
14284    result[fontVariation.type] = fontVariation.value || 0;
14285  }
14286
14287  return result;
14288}; // $FlowFixMe
14289
14290
14291var getItemConfigByKey = function getItemConfigByKey(actionTypeId, key, config) {
14292  if ((0, _IX2VanillaPlugins.isPluginType)(actionTypeId)) {
14293    // $FlowFixMe
14294    return (0, _IX2VanillaPlugins.getPluginConfig)(actionTypeId)(config, key);
14295  }
14296
14297  switch (actionTypeId) {
14298    case STYLE_FILTER:
14299      {
14300        var filter = (0, _findLast["default"])(config.filters, function (_ref6) {
14301          var type = _ref6.type;
14302          return type === key;
14303        });
14304        return filter ? filter.value : 0;
14305      }
14306
14307    case STYLE_FONT_VARIATION:
14308      {
14309        var fontVariation = (0, _findLast["default"])(config.fontVariations, function (_ref7) {
14310          var type = _ref7.type;
14311          return type === key;
14312        });
14313        return fontVariation ? fontVariation.value : 0;
14314      }
14315
14316    default:
14317      return config[key];
14318  }
14319};
14320
14321exports.getItemConfigByKey = getItemConfigByKey;
14322
14323function getDestinationValues(_ref8) {
14324  var element = _ref8.element,
14325      actionItem = _ref8.actionItem,
14326      elementApi = _ref8.elementApi;
14327
14328  if ((0, _IX2VanillaPlugins.isPluginType)(actionItem.actionTypeId)) {
14329    // $FlowFixMe
14330    return (0, _IX2VanillaPlugins.getPluginDestination)(actionItem.actionTypeId)(actionItem.config);
14331  }
14332
14333  switch (actionItem.actionTypeId) {
14334    case TRANSFORM_MOVE:
14335    case TRANSFORM_SCALE:
14336    case TRANSFORM_ROTATE:
14337    case TRANSFORM_SKEW:
14338      {
14339        var _actionItem$config = actionItem.config,
14340            xValue = _actionItem$config.xValue,
14341            yValue = _actionItem$config.yValue,
14342            zValue = _actionItem$config.zValue;
14343        return {
14344          xValue: xValue,
14345          yValue: yValue,
14346          zValue: zValue
14347        };
14348      }
14349
14350    case STYLE_SIZE:
14351      {
14352        var getStyle = elementApi.getStyle,
14353            setStyle = elementApi.setStyle,
14354            getProperty = elementApi.getProperty;
14355        var _actionItem$config2 = actionItem.config,
14356            widthUnit = _actionItem$config2.widthUnit,
14357            heightUnit = _actionItem$config2.heightUnit;
14358        var _actionItem$config3 = actionItem.config,
14359            widthValue = _actionItem$config3.widthValue,
14360            heightValue = _actionItem$config3.heightValue;
14361
14362        if (!_IX2BrowserSupport.IS_BROWSER_ENV) {
14363          return {
14364            widthValue: widthValue,
14365            heightValue: heightValue
14366          };
14367        }
14368
14369        if (widthUnit === AUTO) {
14370          var temp = getStyle(element, WIDTH);
14371          setStyle(element, WIDTH, '');
14372          widthValue = getProperty(element, 'offsetWidth');
14373          setStyle(element, WIDTH, temp);
14374        }
14375
14376        if (heightUnit === AUTO) {
14377          var _temp = getStyle(element, HEIGHT);
14378
14379          setStyle(element, HEIGHT, '');
14380          heightValue = getProperty(element, 'offsetHeight');
14381          setStyle(element, HEIGHT, _temp);
14382        }
14383
14384        return {
14385          widthValue: widthValue,
14386          heightValue: heightValue
14387        };
14388      }
14389
14390    case STYLE_BACKGROUND_COLOR:
14391    case STYLE_BORDER:
14392    case STYLE_TEXT_COLOR:
14393      {
14394        var _actionItem$config4 = actionItem.config,
14395            rValue = _actionItem$config4.rValue,
14396            gValue = _actionItem$config4.gValue,
14397            bValue = _actionItem$config4.bValue,
14398            aValue = _actionItem$config4.aValue;
14399        return {
14400          rValue: rValue,
14401          gValue: gValue,
14402          bValue: bValue,
14403          aValue: aValue
14404        };
14405      }
14406
14407    case STYLE_FILTER:
14408      {
14409        return actionItem.config.filters.reduce(reduceFilters, {});
14410      }
14411
14412    case STYLE_FONT_VARIATION:
14413      {
14414        return actionItem.config.fontVariations.reduce(reduceFontVariations, {});
14415      }
14416
14417    default:
14418      {
14419        var value = actionItem.config.value;
14420        return {
14421          value: value
14422        };
14423      }
14424  }
14425} // $FlowFixMe
14426
14427
14428function getRenderType(actionTypeId) {
14429  if (/^TRANSFORM_/.test(actionTypeId)) {
14430    return RENDER_TRANSFORM;
14431  }
14432
14433  if (/^STYLE_/.test(actionTypeId)) {
14434    return RENDER_STYLE;
14435  }
14436
14437  if (/^GENERAL_/.test(actionTypeId)) {
14438    return RENDER_GENERAL;
14439  }
14440
14441  if (/^PLUGIN_/.test(actionTypeId)) {
14442    return RENDER_PLUGIN;
14443  }
14444} // $FlowFixMe
14445
14446
14447function getStyleProp(renderType, actionTypeId) {
14448  return renderType === RENDER_STYLE ? actionTypeId.replace('STYLE_', '').toLowerCase() : null;
14449}
14450
14451function renderHTMLElement( // $FlowFixMe
14452element, // $FlowFixMe
14453refState, // $FlowFixMe
14454actionState, // $FlowFixMe
14455eventId, // $FlowFixMe
14456actionItem, // $FlowFixMe
14457styleProp, // $FlowFixMe
14458elementApi, // $FlowFixMe
14459renderType, // $FlowFixMe
14460pluginInstance) {
14461  switch (renderType) {
14462    case RENDER_TRANSFORM:
14463      {
14464        return renderTransform(element, refState, actionState, actionItem, elementApi);
14465      }
14466
14467    case RENDER_STYLE:
14468      {
14469        return renderStyle(element, refState, actionState, actionItem, styleProp, elementApi);
14470      }
14471
14472    case RENDER_GENERAL:
14473      {
14474        return renderGeneral(element, actionItem, elementApi);
14475      }
14476
14477    case RENDER_PLUGIN:
14478      {
14479        var actionTypeId = actionItem.actionTypeId;
14480
14481        if ((0, _IX2VanillaPlugins.isPluginType)(actionTypeId)) {
14482          // $FlowFixMe
14483          return (0, _IX2VanillaPlugins.renderPlugin)(actionTypeId)(pluginInstance, refState, actionItem);
14484        }
14485      }
14486  }
14487}
14488
14489var transformDefaults = (_transformDefaults = {}, (0, _defineProperty2["default"])(_transformDefaults, TRANSFORM_MOVE, Object.freeze({
14490  xValue: 0,
14491  yValue: 0,
14492  zValue: 0
14493})), (0, _defineProperty2["default"])(_transformDefaults, TRANSFORM_SCALE, Object.freeze({
14494  xValue: 1,
14495  yValue: 1,
14496  zValue: 1
14497})), (0, _defineProperty2["default"])(_transformDefaults, TRANSFORM_ROTATE, Object.freeze({
14498  xValue: 0,
14499  yValue: 0,
14500  zValue: 0
14501})), (0, _defineProperty2["default"])(_transformDefaults, TRANSFORM_SKEW, Object.freeze({
14502  xValue: 0,
14503  yValue: 0
14504})), _transformDefaults);
14505var filterDefaults = Object.freeze({
14506  blur: 0,
14507  'hue-rotate': 0,
14508  invert: 0,
14509  grayscale: 0,
14510  saturate: 100,
14511  sepia: 0,
14512  contrast: 100,
14513  brightness: 100
14514});
14515var fontVariationDefaults = Object.freeze({
14516  wght: 0,
14517  opsz: 0,
14518  wdth: 0,
14519  slnt: 0
14520});
14521
14522var getFilterUnit = function getFilterUnit(filterType, actionItemConfig) {
14523  var filter = (0, _findLast["default"])(actionItemConfig.filters, function (_ref9) {
14524    var type = _ref9.type;
14525    return type === filterType;
14526  });
14527
14528  if (filter && filter.unit) {
14529    return filter.unit;
14530  }
14531
14532  switch (filterType) {
14533    case 'blur':
14534      return 'px';
14535
14536    case 'hue-rotate':
14537      return 'deg';
14538
14539    default:
14540      return '%';
14541  }
14542};
14543
14544var transformKeys = Object.keys(transformDefaults);
14545
14546function renderTransform(element, refState, actionState, actionItem, elementApi) {
14547  var newTransform = transformKeys.map(function (actionTypeId) {
14548    var defaults = transformDefaults[actionTypeId];
14549
14550    var _ref10 = refState[actionTypeId] || {},
14551        _ref10$xValue = _ref10.xValue,
14552        xValue = _ref10$xValue === void 0 ? defaults.xValue : _ref10$xValue,
14553        _ref10$yValue = _ref10.yValue,
14554        yValue = _ref10$yValue === void 0 ? defaults.yValue : _ref10$yValue,
14555        _ref10$zValue = _ref10.zValue,
14556        zValue = _ref10$zValue === void 0 ? defaults.zValue : _ref10$zValue,
14557        _ref10$xUnit = _ref10.xUnit,
14558        xUnit = _ref10$xUnit === void 0 ? '' : _ref10$xUnit,
14559        _ref10$yUnit = _ref10.yUnit,
14560        yUnit = _ref10$yUnit === void 0 ? '' : _ref10$yUnit,
14561        _ref10$zUnit = _ref10.zUnit,
14562        zUnit = _ref10$zUnit === void 0 ? '' : _ref10$zUnit;
14563
14564    switch (actionTypeId) {
14565      case TRANSFORM_MOVE:
14566        return "".concat(TRANSLATE_3D, "(").concat(xValue).concat(xUnit, ", ").concat(yValue).concat(yUnit, ", ").concat(zValue).concat(zUnit, ")");
14567
14568      case TRANSFORM_SCALE:
14569        return "".concat(SCALE_3D, "(").concat(xValue).concat(xUnit, ", ").concat(yValue).concat(yUnit, ", ").concat(zValue).concat(zUnit, ")");
14570
14571      case TRANSFORM_ROTATE:
14572        return "".concat(ROTATE_X, "(").concat(xValue).concat(xUnit, ") ").concat(ROTATE_Y, "(").concat(yValue).concat(yUnit, ") ").concat(ROTATE_Z, "(").concat(zValue).concat(zUnit, ")");
14573
14574      case TRANSFORM_SKEW:
14575        return "".concat(SKEW, "(").concat(xValue).concat(xUnit, ", ").concat(yValue).concat(yUnit, ")");
14576
14577      default:
14578        return '';
14579    }
14580  }).join(' ');
14581  var setStyle = elementApi.setStyle;
14582  addWillChange(element, _IX2BrowserSupport.TRANSFORM_PREFIXED, elementApi);
14583  setStyle(element, _IX2BrowserSupport.TRANSFORM_PREFIXED, newTransform); // Set transform-style: preserve-3d
14584
14585  if (hasDefined3dTransform(actionItem, actionState)) {
14586    setStyle(element, _IX2BrowserSupport.TRANSFORM_STYLE_PREFIXED, PRESERVE_3D);
14587  }
14588}
14589
14590function renderFilter(element, actionState, actionItemConfig, elementApi) {
14591  var filterValue = (0, _reduce["default"])(actionState, function (result, value, type) {
14592    return "".concat(result, " ").concat(type, "(").concat(value).concat(getFilterUnit(type, actionItemConfig), ")");
14593  }, '');
14594  var setStyle = elementApi.setStyle;
14595  addWillChange(element, FILTER, elementApi);
14596  setStyle(element, FILTER, filterValue);
14597}
14598
14599function renderFontVariation(element, actionState, actionItemConfig, elementApi) {
14600  var fontVariationValue = (0, _reduce["default"])(actionState, function (result, value, type) {
14601    result.push("\"".concat(type, "\" ").concat(value));
14602    return result;
14603  }, []).join(', ');
14604  var setStyle = elementApi.setStyle;
14605  addWillChange(element, FONT_VARIATION_SETTINGS, elementApi);
14606  setStyle(element, FONT_VARIATION_SETTINGS, fontVariationValue);
14607}
14608
14609function hasDefined3dTransform(_ref11, _ref12) {
14610  var actionTypeId = _ref11.actionTypeId;
14611  var xValue = _ref12.xValue,
14612      yValue = _ref12.yValue,
14613      zValue = _ref12.zValue;
14614  // TRANSLATE_Z
14615  return actionTypeId === TRANSFORM_MOVE && zValue !== undefined || // SCALE_Z
14616  actionTypeId === TRANSFORM_SCALE && zValue !== undefined || // ROTATE_X or ROTATE_Y
14617  actionTypeId === TRANSFORM_ROTATE && (xValue !== undefined || yValue !== undefined);
14618}
14619
14620var paramCapture = '\\(([^)]+)\\)';
14621var rgbValidRegex = /^rgb/;
14622var rgbMatchRegex = RegExp("rgba?".concat(paramCapture));
14623
14624function getFirstMatch(regex, value) {
14625  var match = regex.exec(value);
14626  return match ? match[1] : '';
14627}
14628
14629function parseColor(_ref13) {
14630  var element = _ref13.element,
14631      actionTypeId = _ref13.actionTypeId,
14632      computedStyle = _ref13.computedStyle,
14633      getStyle = _ref13.getStyle;
14634  var prop = colorStyleProps[actionTypeId];
14635  var inlineValue = getStyle(element, prop);
14636  var value = rgbValidRegex.test(inlineValue) ? inlineValue : computedStyle[prop];
14637  var matches = getFirstMatch(rgbMatchRegex, value).split(COMMA_DELIMITER);
14638  return {
14639    rValue: (0, _defaultTo["default"])(parseInt(matches[0], 10), 255),
14640    gValue: (0, _defaultTo["default"])(parseInt(matches[1], 10), 255),
14641    bValue: (0, _defaultTo["default"])(parseInt(matches[2], 10), 255),
14642    aValue: (0, _defaultTo["default"])(parseFloat(matches[3]), 1)
14643  };
14644}
14645
14646function renderStyle(element, refState, actionState, actionItem, styleProp, elementApi) {
14647  var setStyle = elementApi.setStyle;
14648
14649  switch (actionItem.actionTypeId) {
14650    case STYLE_SIZE:
14651      {
14652        var _actionItem$config5 = actionItem.config,
14653            _actionItem$config5$w = _actionItem$config5.widthUnit,
14654            widthUnit = _actionItem$config5$w === void 0 ? '' : _actionItem$config5$w,
14655            _actionItem$config5$h = _actionItem$config5.heightUnit,
14656            heightUnit = _actionItem$config5$h === void 0 ? '' : _actionItem$config5$h;
14657        var widthValue = actionState.widthValue,
14658            heightValue = actionState.heightValue;
14659
14660        if (widthValue !== undefined) {
14661          if (widthUnit === AUTO) {
14662            widthUnit = 'px';
14663          }
14664
14665          addWillChange(element, WIDTH, elementApi);
14666          setStyle(element, WIDTH, widthValue + widthUnit);
14667        }
14668
14669        if (heightValue !== undefined) {
14670          if (heightUnit === AUTO) {
14671            heightUnit = 'px';
14672          }
14673
14674          addWillChange(element, HEIGHT, elementApi);
14675          setStyle(element, HEIGHT, heightValue + heightUnit);
14676        }
14677
14678        break;
14679      }
14680
14681    case STYLE_FILTER:
14682      {
14683        renderFilter(element, actionState, actionItem.config, elementApi);
14684        break;
14685      }
14686
14687    case STYLE_FONT_VARIATION:
14688      {
14689        renderFontVariation(element, actionState, actionItem.config, elementApi);
14690        break;
14691      }
14692
14693    case STYLE_BACKGROUND_COLOR:
14694    case STYLE_BORDER:
14695    case STYLE_TEXT_COLOR:
14696      {
14697        var prop = colorStyleProps[actionItem.actionTypeId];
14698        var rValue = Math.round(actionState.rValue);
14699        var gValue = Math.round(actionState.gValue);
14700        var bValue = Math.round(actionState.bValue);
14701        var aValue = actionState.aValue;
14702        addWillChange(element, prop, elementApi);
14703        setStyle(element, prop, aValue >= 1 ? "rgb(".concat(rValue, ",").concat(gValue, ",").concat(bValue, ")") : "rgba(".concat(rValue, ",").concat(gValue, ",").concat(bValue, ",").concat(aValue, ")"));
14704        break;
14705      }
14706
14707    default:
14708      {
14709        var _actionItem$config$un = actionItem.config.unit,
14710            unit = _actionItem$config$un === void 0 ? '' : _actionItem$config$un;
14711        addWillChange(element, styleProp, elementApi);
14712        setStyle(element, styleProp, actionState.value + unit);
14713        break;
14714      }
14715  }
14716}
14717
14718function renderGeneral(element, actionItem, elementApi) {
14719  var setStyle = elementApi.setStyle;
14720
14721  switch (actionItem.actionTypeId) {
14722    case GENERAL_DISPLAY:
14723      {
14724        var value = actionItem.config.value;
14725
14726        if (value === FLEX && _IX2BrowserSupport.IS_BROWSER_ENV) {
14727          setStyle(element, DISPLAY, _IX2BrowserSupport.FLEX_PREFIXED);
14728        } else {
14729          setStyle(element, DISPLAY, value);
14730        }
14731
14732        return;
14733      }
14734  }
14735}
14736
14737function addWillChange(element, prop, elementApi) {
14738  if (!_IX2BrowserSupport.IS_BROWSER_ENV) {
14739    return;
14740  }
14741
14742  var validProp = willChangeProps[prop];
14743
14744  if (!validProp) {
14745    return;
14746  }
14747
14748  var getStyle = elementApi.getStyle,
14749      setStyle = elementApi.setStyle;
14750  var value = getStyle(element, WILL_CHANGE);
14751
14752  if (!value) {
14753    setStyle(element, WILL_CHANGE, validProp);
14754    return;
14755  }
14756
14757  var values = value.split(COMMA_DELIMITER).map(trim);
14758
14759  if (values.indexOf(validProp) === -1) {
14760    setStyle(element, WILL_CHANGE, values.concat(validProp).join(COMMA_DELIMITER));
14761  }
14762}
14763
14764function removeWillChange(element, prop, elementApi) {
14765  if (!_IX2BrowserSupport.IS_BROWSER_ENV) {
14766    return;
14767  }
14768
14769  var validProp = willChangeProps[prop];
14770
14771  if (!validProp) {
14772    return;
14773  }
14774
14775  var getStyle = elementApi.getStyle,
14776      setStyle = elementApi.setStyle;
14777  var value = getStyle(element, WILL_CHANGE);
14778
14779  if (!value || value.indexOf(validProp) === -1) {
14780    return;
14781  }
14782
14783  setStyle(element, WILL_CHANGE, value.split(COMMA_DELIMITER).map(trim).filter(function (v) {
14784    return v !== validProp;
14785  }).join(COMMA_DELIMITER));
14786} // $FlowFixMe
14787
14788
14789function clearAllStyles(_ref14) {
14790  var store = _ref14.store,
14791      elementApi = _ref14.elementApi;
14792
14793  var _store$getState = store.getState(),
14794      ixData = _store$getState.ixData;
14795
14796  var _ixData$events = ixData.events,
14797      events = _ixData$events === void 0 ? {} : _ixData$events,
14798      _ixData$actionLists = ixData.actionLists,
14799      actionLists = _ixData$actionLists === void 0 ? {} : _ixData$actionLists;
14800  Object.keys(events).forEach(function (eventId) {
14801    var event = events[eventId];
14802    var config = event.action.config;
14803    var actionListId = config.actionListId;
14804    var actionList = actionLists[actionListId];
14805
14806    if (actionList) {
14807      clearActionListStyles({
14808        actionList: actionList,
14809        event: event,
14810        elementApi: elementApi
14811      });
14812    }
14813  });
14814  Object.keys(actionLists).forEach(function (actionListId) {
14815    clearActionListStyles({
14816      actionList: actionLists[actionListId],
14817      elementApi: elementApi
14818    });
14819  });
14820} // $FlowFixMe
14821
14822
14823function clearActionListStyles(_ref15) {
14824  var _ref15$actionList = _ref15.actionList,
14825      actionList = _ref15$actionList === void 0 ? {} : _ref15$actionList,
14826      event = _ref15.event,
14827      elementApi = _ref15.elementApi;
14828  var actionItemGroups = actionList.actionItemGroups,
14829      continuousParameterGroups = actionList.continuousParameterGroups;
14830  actionItemGroups && actionItemGroups.forEach(function (actionGroup) {
14831    clearActionGroupStyles({
14832      actionGroup: actionGroup,
14833      event: event,
14834      elementApi: elementApi
14835    });
14836  });
14837  continuousParameterGroups && continuousParameterGroups.forEach(function (paramGroup) {
14838    var continuousActionGroups = paramGroup.continuousActionGroups;
14839    continuousActionGroups.forEach(function (actionGroup) {
14840      clearActionGroupStyles({
14841        actionGroup: actionGroup,
14842        event: event,
14843        elementApi: elementApi
14844      });
14845    });
14846  });
14847}
14848
14849function clearActionGroupStyles(_ref16) {
14850  var actionGroup = _ref16.actionGroup,
14851      event = _ref16.event,
14852      elementApi = _ref16.elementApi;
14853  var actionItems = actionGroup.actionItems;
14854  actionItems.forEach(function (_ref17) {
14855    var actionTypeId = _ref17.actionTypeId,
14856        config = _ref17.config;
14857    var clearElement;
14858
14859    if ((0, _IX2VanillaPlugins.isPluginType)(actionTypeId)) {
14860      clearElement = (0, _IX2VanillaPlugins.clearPlugin)(actionTypeId);
14861    } else {
14862      clearElement = processElementByType({
14863        effect: clearStyleProp,
14864        actionTypeId: actionTypeId,
14865        elementApi: elementApi
14866      });
14867    }
14868
14869    getAffectedElements({
14870      config: config,
14871      event: event,
14872      elementApi: elementApi
14873    }
14873).forEach(clearElement);
14874  });
14875} // $FlowFixMe
14876
14877
14878function cleanupHTMLElement(element, actionItem, elementApi) {
14879  var setStyle = elementApi.setStyle,
14880      getStyle = elementApi.getStyle;
14881  var actionTypeId = actionItem.actionTypeId;
14882
14883  if (actionTypeId === STYLE_SIZE) {
14884    var config = actionItem.config;
14885
14886    if (config.widthUnit === AUTO) {
14887      setStyle(element, WIDTH, '');
14888    }
14889
14890    if (config.heightUnit === AUTO) {
14891      setStyle(element, HEIGHT, '');
14892    }
14893  }
14894
14895  if (getStyle(element, WILL_CHANGE)) {
14896    processElementByType({
14897      effect: removeWillChange,
14898      actionTypeId: actionTypeId,
14899      elementApi: elementApi
14900    })(element);
14901  }
14902}
14903
14904var processElementByType = function processElementByType(_ref18) {
14905  var effect = _ref18.effect,
14906      actionTypeId = _ref18.actionTypeId,
14907      elementApi = _ref18.elementApi;
14908  return function (element) {
14909    switch (actionTypeId) {
14910      case TRANSFORM_MOVE:
14911      case TRANSFORM_SCALE:
14912      case TRANSFORM_ROTATE:
14913      case TRANSFORM_SKEW:
14914        effect(element, _IX2BrowserSupport.TRANSFORM_PREFIXED, elementApi);
14915        break;
14916
14917      case STYLE_FILTER:
14918        effect(element, FILTER, elementApi);
14919        break;
14920
14921      case STYLE_FONT_VARIATION:
14922        effect(element, FONT_VARIATION_SETTINGS, elementApi);
14923        break;
14924
14925      case STYLE_OPACITY:
14926        effect(element, OPACITY, elementApi);
14927        break;
14928
14929      case STYLE_SIZE:
14930        effect(element, WIDTH, elementApi);
14931        effect(element, HEIGHT, elementApi);
14932        break;
14933
14934      case STYLE_BACKGROUND_COLOR:
14935      case STYLE_BORDER:
14936      case STYLE_TEXT_COLOR:
14937        effect(element, colorStyleProps[actionTypeId], elementApi);
14938        break;
14939
14940      case GENERAL_DISPLAY:
14941        effect(element, DISPLAY, elementApi);
14942        break;
14943    }
14944  };
14945};
14946
14947function clearStyleProp(element, prop, elementApi) {
14948  var setStyle = elementApi.setStyle;
14949  removeWillChange(element, prop, elementApi);
14950  setStyle(element, prop, ''); // Clear transform-style: preserve-3d
14951
14952  if (prop === _IX2BrowserSupport.TRANSFORM_PREFIXED) {
14953    setStyle(element, _IX2BrowserSupport.TRANSFORM_STYLE_PREFIXED, '');
14954  }
14955} // $FlowFixMe
14956
14957
14958function getMaxDurationItemIndex(actionItems) {
14959  var maxDuration = 0;
14960  var resultIndex = 0;
14961  actionItems.forEach(function (actionItem, index) {
14962    var config = actionItem.config;
14963    var total = config.delay + config.duration;
14964
14965    if (total >= maxDuration) {
14966      maxDuration = total;
14967      resultIndex = index;
14968    }
14969  });
14970  return resultIndex;
14971} // $FlowFixMe
14972
14973
14974function getActionListProgress(actionList, instance) {
14975  var actionItemGroups = actionList.actionItemGroups,
14976      useFirstGroupAsInitialState = actionList.useFirstGroupAsInitialState;
14977  var instanceItem = instance.actionItem,
14978      _instance$verboseTime = instance.verboseTimeElapsed,
14979      verboseTimeElapsed = _instance$verboseTime === void 0 ? 0 : _instance$verboseTime;
14980  var totalDuration = 0;
14981  var elapsedDuration = 0;
14982  actionItemGroups.forEach(function (group, index) {
14983    if (useFirstGroupAsInitialState && index === 0) {
14984      return;
14985    }
14986
14987    var actionItems = group.actionItems;
14988    var carrierItem = actionItems[getMaxDurationItemIndex(actionItems)];
14989    var config = carrierItem.config,
14990        actionTypeId = carrierItem.actionTypeId;
14991
14992    if (instanceItem.id === carrierItem.id) {
14993      elapsedDuration = totalDuration + verboseTimeElapsed;
14994    }
14995
14996    var duration = getRenderType(actionTypeId) === RENDER_GENERAL ? 0 : config.duration;
14997    totalDuration += config.delay + duration;
14998  });
14999  return totalDuration > 0 ? (0, _IX2EasingUtils.optimizeFloat)(elapsedDuration / totalDuration) : 0;
15000} // $FlowFixMe
15001
15002
15003function reduceListToGroup(_ref19) {
15004  var actionList = _ref19.actionList,
15005      actionItemId = _ref19.actionItemId,
15006      rawData = _ref19.rawData;
15007  var actionItemGroups = actionList.actionItemGroups,
15008      continuousParameterGroups = actionList.continuousParameterGroups;
15009  var newActionItems = [];
15010
15011  var takeItemUntilMatch = function takeItemUntilMatch(actionItem) {
15012    newActionItems.push((0, _timm.mergeIn)(actionItem, ['config'], {
15013      delay: 0,
15014      duration: 0
15015    }));
15016    return actionItem.id === actionItemId;
15017  };
15018
15019  actionItemGroups && actionItemGroups.some(function (_ref20) {
15020    var actionItems = _ref20.actionItems;
15021    return actionItems.some(takeItemUntilMatch);
15022  });
15023  continuousParameterGroups && continuousParameterGroups.some(function (paramGroup) {
15024    var continuousActionGroups = paramGroup.continuousActionGroups;
15025    return continuousActionGroups.some(function (_ref21) {
15026      var actionItems = _ref21.actionItems;
15027      return actionItems.some(takeItemUntilMatch);
15028    });
15029  });
15030  return (0, _timm.setIn)(rawData, ['actionLists'], (0, _defineProperty2["default"])({}, actionList.id, {
15031    id: actionList.id,
15032    actionItemGroups: [{
15033      actionItems: newActionItems
15034    }]
15035  }));
15036} // $FlowFixMe
15037
15038
15039function shouldNamespaceEventParameter(eventTypeId, _ref23) {
15040  var basedOn = _ref23.basedOn;
15041  return eventTypeId === _constants.EventTypeConsts.SCROLLING_IN_VIEW && (basedOn === _constants.EventBasedOn.ELEMENT || basedOn == null) || eventTypeId === _constants.EventTypeConsts.MOUSE_MOVE && basedOn === _constants.EventBasedOn.ELEMENT;
15042}
15043
15044function getNamespacedParameterId(eventStateKey, continuousParameterGroupId) {
15045  var namespacedParameterId = eventStateKey + COLON_DELIMITER + continuousParameterGroupId;
15046  return namespacedParameterId;
15047} // $FlowFixMe
15048
15049
15050function shouldAllowMediaQuery(mediaQueries, mediaQueryKey) {
15051  // During design mode, current media query key does not exist
15052  if (mediaQueryKey == null) {
15053    return true;
15054  }
15055
15056  return mediaQueries.indexOf(mediaQueryKey) !== -1;
15057} // $FlowFixMe
15058
15059
15060function mediaQueriesEqual(listA, listB) {
15061  return (0, _shallowEqual["default"])(listA && listA.sort(), listB && listB.sort());
15062} // $FlowFixMe
15063
15064
15065function stringifyTarget(target) {
15066  if (typeof target === 'string') {
15067    return target;
15068  }
15069
15070  var _target$id = target.id,
15071      id = _target$id === void 0 ? '' : _target$id,
15072      _target$selector = target.selector,
15073      selector = _target$selector === void 0 ? '' : _target$selector,
15074      _target$useEventTarge = target.useEventTarget,
15075      useEventTarget = _target$useEventTarge === void 0 ? '' : _target$useEventTarge;
15076  return id + BAR_DELIMITER + selector + BAR_DELIMITER + useEventTarget;
15077}
15078
15079/***/ }),
15080/* 272 */
vendor: 9,324 bytes, lines 15081-15414
15081/***/ (function(module, exports) {
15082
15083/**
15084 * Checks `value` to determine whether a default value should be returned in
15085 * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,
15086 * or `undefined`.
15087 *
15088 * @static
15089 * @memberOf _
15090 * @since 4.14.0
15091 * @category Util
15092 * @param {*} value The value to check.
15093 * @param {*} defaultValue The default value.
15094 * @returns {*} Returns the resolved value.
15095 * @example
15096 *
15097 * _.defaultTo(1, 10);
15098 * // => 1
15099 *
15100 * _.defaultTo(undefined, 10);
15101 * // => 10
15102 */
15103function defaultTo(value, defaultValue) {
15104  return (value == null || value !== value) ? defaultValue : value;
15105}
15106
15107module.exports = defaultTo;
15108
15109
15110/***/ }),
15111/* 273 */
15112/***/ (function(module, exports, __webpack_require__) {
15113
15114var arrayReduce = __webpack_require__(274),
15115    baseEach = __webpack_require__(121),
15116    baseIteratee = __webpack_require__(10),
15117    baseReduce = __webpack_require__(278),
15118    isArray = __webpack_require__(2);
15119
15120/**
15121 * Reduces `collection` to a value which is the accumulated result of running
15122 * each element in `collection` thru `iteratee`, where each successive
15123 * invocation is supplied the return value of the previous. If `accumulator`
15124 * is not given, the first element of `collection` is used as the initial
15125 * value. The iteratee is invoked with four arguments:
15126 * (accumulator, value, index|key, collection).
15127 *
15128 * Many lodash methods are guarded to work as iteratees for methods like
15129 * `_.reduce`, `_.reduceRight`, and `_.transform`.
15130 *
15131 * The guarded methods are:
15132 * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,
15133 * and `sortBy`
15134 *
15135 * @static
15136 * @memberOf _
15137 * @since 0.1.0
15138 * @category Collection
15139 * @param {Array|Object} collection The collection to iterate over.
15140 * @param {Function} [iteratee=_.identity] The function invoked per iteration.
15141 * @param {*} [accumulator] The initial value.
15142 * @returns {*} Returns the accumulated value.
15143 * @see _.reduceRight
15144 * @example
15145 *
15146 * _.reduce([1, 2], function(sum, n) {
15147 *   return sum + n;
15148 * }, 0);
15149 * // => 3
15150 *
15151 * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {
15152 *   (result[value] || (result[value] = [])).push(key);
15153 *   return result;
15154 * }, {});
15155 * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)
15156 */
15157function reduce(collection, iteratee, accumulator) {
15158  var func = isArray(collection) ? arrayReduce : baseReduce,
15159      initAccum = arguments.length < 3;
15160
15161  return func(collection, baseIteratee(iteratee, 4), accumulator, initAccum, baseEach);
15162}
15163
15164module.exports = reduce;
15165
15166
15167/***/ }),
15168/* 274 */
15169/***/ (function(module, exports) {
15170
15171/**
15172 * A specialized version of `_.reduce` for arrays without support for
15173 * iteratee shorthands.
15174 *
15175 * @private
15176 * @param {Array} [array] The array to iterate over.
15177 * @param {Function} iteratee The function invoked per iteration.
15178 * @param {*} [accumulator] The initial value.
15179 * @param {boolean} [initAccum] Specify using the first element of `array` as
15180 *  the initial value.
15181 * @returns {*} Returns the accumulated value.
15182 */
15183function arrayReduce(array, iteratee, accumulator, initAccum) {
15184  var index = -1,
15185      length = array == null ? 0 : array.length;
15186
15187  if (initAccum && length) {
15188    accumulator = array[++index];
15189  }
15190  while (++index < length) {
15191    accumulator = iteratee(accumulator, array[index], index, array);
15192  }
15193  return accumulator;
15194}
15195
15196module.exports = arrayReduce;
15197
15198
15199/***/ }),
15200/* 275 */
15201/***/ (function(module, exports, __webpack_require__) {
15202
15203var createBaseFor = __webpack_require__(276);
15204
15205/**
15206 * The base implementation of `baseForOwn` which iterates over `object`
15207 * properties returned by `keysFunc` and invokes `iteratee` for each property.
15208 * Iteratee functions may exit iteration early by explicitly returning `false`.
15209 *
15210 * @private
15211 * @param {Object} object The object to iterate over.
15212 * @param {Function} iteratee The function invoked per iteration.
15213 * @param {Function} keysFunc The function to get the keys of `object`.
15214 * @returns {Object} Returns `object`.
15215 */
15216var baseFor = createBaseFor();
15217
15218module.exports = baseFor;
15219
15220
15221/***/ }),
15222/* 276 */
15223/***/ (function(module, exports) {
15224
15225/**
15226 * Creates a base function for methods like `_.forIn` and `_.forOwn`.
15227 *
15228 * @private
15229 * @param {boolean} [fromRight] Specify iterating from right to left.
15230 * @returns {Function} Returns the new base function.
15231 */
15232function createBaseFor(fromRight) {
15233  return function(object, iteratee, keysFunc) {
15234    var index = -1,
15235        iterable = Object(object),
15236        props = keysFunc(object),
15237        length = props.length;
15238
15239    while (length--) {
15240      var key = props[fromRight ? length : ++index];
15241      if (iteratee(iterable[key], key, iterable) === false) {
15242        break;
15243      }
15244    }
15245    return object;
15246  };
15247}
15248
15249module.exports = createBaseFor;
15250
15251
15252/***/ }),
15253/* 277 */
15254/***/ (function(module, exports, __webpack_require__) {
15255
15256var isArrayLike = __webpack_require__(17);
15257
15258/**
15259 * Creates a `baseEach` or `baseEachRight` function.
15260 *
15261 * @private
15262 * @param {Function} eachFunc The function to iterate over a collection.
15263 * @param {boolean} [fromRight] Specify iterating from right to left.
15264 * @returns {Function} Returns the new base function.
15265 */
15266function createBaseEach(eachFunc, fromRight) {
15267  return function(collection, iteratee) {
15268    if (collection == null) {
15269      return collection;
15270    }
15271    if (!isArrayLike(collection)) {
15272      return eachFunc(collection, iteratee);
15273    }
15274    var length = collection.length,
15275        index = fromRight ? length : -1,
15276        iterable = Object(collection);
15277
15278    while ((fromRight ? index-- : ++index < length)) {
15279      if (iteratee(iterable[index], index, iterable) === false) {
15280        break;
15281      }
15282    }
15283    return collection;
15284  };
15285}
15286
15287module.exports = createBaseEach;
15288
15289
15290/***/ }),
15291/* 278 */
15292/***/ (function(module, exports) {
15293
15294/**
15295 * The base implementation of `_.reduce` and `_.reduceRight`, without support
15296 * for iteratee shorthands, which iterates over `collection` using `eachFunc`.
15297 *
15298 * @private
15299 * @param {Array|Object} collection The collection to iterate over.
15300 * @param {Function} iteratee The function invoked per iteration.
15301 * @param {*} accumulator The initial value.
15302 * @param {boolean} initAccum Specify using the first or last element of
15303 *  `collection` as the initial value.
15304 * @param {Function} eachFunc The function to iterate over `collection`.
15305 * @returns {*} Returns the accumulated value.
15306 */
15307function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {
15308  eachFunc(collection, function(value, index, collection) {
15309    accumulator = initAccum
15310      ? (initAccum = false, value)
15311      : iteratee(accumulator, value, index, collection);
15312  });
15313  return accumulator;
15314}
15315
15316module.exports = baseReduce;
15317
15318
15319/***/ }),
15320/* 279 */
15321/***/ (function(module, exports, __webpack_require__) {
15322
15323var createFind = __webpack_require__(96),
15324    findLastIndex = __webpack_require__(280);
15325
15326/**
15327 * This method is like `_.find` except that it iterates over elements of
15328 * `collection` from right to left.
15329 *
15330 * @static
15331 * @memberOf _
15332 * @since 2.0.0
15333 * @category Collection
15334 * @param {Array|Object} collection The collection to inspect.
15335 * @param {Function} [predicate=_.identity] The function invoked per iteration.
15336 * @param {number} [fromIndex=collection.length-1] The index to search from.
15337 * @returns {*} Returns the matched element, else `undefined`.
15338 * @example
15339 *
15340 * _.findLast([1, 2, 3, 4], function(n) {
15341 *   return n % 2 == 1;
15342 * });
15343 * // => 3
15344 */
15345var findLast = createFind(findLastIndex);
15346
15347module.exports = findLast;
15348
15349
15350/***/ }),
15351/* 280 */
15352/***/ (function(module, exports, __webpack_require__) {
15353
15354var baseFindIndex = __webpack_require__(114),
15355    baseIteratee = __webpack_require__(10),
15356    toInteger = __webpack_require__(115);
15357
15358/* Built-in method references for those with the same name as other `lodash` methods. */
15359var nativeMax = Math.max,
15360    nativeMin = Math.min;
15361
15362/**
15363 * This method is like `_.findIndex` except that it iterates over elements
15364 * of `collection` from right to left.
15365 *
15366 * @static
15367 * @memberOf _
15368 * @since 2.0.0
15369 * @category Array
15370 * @param {Array} array The array to inspect.
15371 * @param {Function} [predicate=_.identity] The function invoked per iteration.
15372 * @param {number} [fromIndex=array.length-1] The index to search from.
15373 * @returns {number} Returns the index of the found element, else `-1`.
15374 * @example
15375 *
15376 * var users = [
15377 *   { 'user': 'barney',  'active': true },
15378 *   { 'user': 'fred',    'active': false },
15379 *   { 'user': 'pebbles', 'active': false }
15380 * ];
15381 *
15382 * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });
15383 * // => 2
15384 *
15385 * // The `_.matches` iteratee shorthand.
15386 * _.findLastIndex(users, { 'user': 'barney', 'active': true });
15387 * // => 0
15388 *
15389 * // The `_.matchesProperty` iteratee shorthand.
15390 * _.findLastIndex(users, ['active', false]);
15391 * // => 2
15392 *
15393 * // The `_.property` iteratee shorthand.
15394 * _.findLastIndex(users, 'active');
15395 * // => 0
15396 */
15397function findLastIndex(array, predicate, fromIndex) {
15398  var length = array == null ? 0 : array.length;
15399  if (!length) {
15400    return -1;
15401  }
15402  var index = length - 1;
15403  if (fromIndex !== undefined) {
15404    index = toInteger(fromIndex);
15405    index = fromIndex < 0
15406      ? nativeMax(length + index, 0)
15407      : nativeMin(index, length - 1);
15408  }
15409  return baseFindIndex(array, baseIteratee(predicate, 3), index, true);
15410}
15411
15412module.exports = findLastIndex;
15413
15414
15415/***/ }),
15416/* 281 */
15417/***/ (function(module, exports, __webpack_require__) {
15418
15419"use strict";
15420
15421
15422var _interopRequireDefault = __webpack_require__(0);
15423
15424var _typeof2 = _interopRequireDefault(__webpack_require__(13));
15425
15426Object.defineProperty(exports, "__esModule", {
15427  value: true
15428});
15429exports["default"] = void 0; // from https://github.com/acdlite/recompose/blob/master/src/packages/recompose/shallowEqual.js
15430
15431/**
15432 * Copyright (c) 2013-present, Facebook, Inc.
15433 *
15434 * This source code is licensed under the MIT license found in the
15435 * LICENSE file in the root directory of this source tree.
15436 *
15437 * @providesModule shallowEqual
15438 * @typechecks
15439 */
15440
15441/* eslint-disable no-self-compare */
15442
15443var hasOwnProperty = Object.prototype.hasOwnProperty;
15444/**
15445 * inlined Object.is polyfill to avoid requiring consumers ship their own
15446 * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is
15447 */
15448
15449function is(x, y) {
15450  // SameValue algorithm
15451  if (x === y) {
15452    // Steps 1-5, 7-10
15453    // Steps 6.b-6.e: +0 != -0
15454    // Added the nonzero y check to make Flow happy, but it is redundant
15455    return x !== 0 || y !== 0 || 1 / x === 1 / y;
15456  } // Step 6.a: NaN == NaN
15457
15458
15459  return x !== x && y !== y;
15460}
15461/**
15462 * Performs equality by iterating through keys on an object and returning false
15463 * when any key has values which are not strictly equal between the arguments.
15464 * Returns true when the values of all keys are strictly equal.
15465 */
15466
15467
15468function shallowEqual(objA, objB) {
15469  if (is(objA, objB)) {
15470    return true;
15471  }
15472
15473  if ((0, _typeof2["default"])(objA) !== 'object' || objA === null || (0, _typeof2["default"])(objB) !== 'object' || objB === null) {
15474    return false;
15475  }
15476
15477  var keysA = Object.keys(objA);
15478  var keysB = Object.keys(objB);
15479
15480  if (keysA.length !== keysB.length) {
15481    return false;
15482  } // Test for A's keys different from B.
15483
15484
15485  for (var i = 0; i < keysA.length; i++) {
15486    if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {
15487      return false;
15488    }
15489  }
15490
15491  return true;
15492}
15493
15494var _default = shallowEqual;
15495exports["default"] = _default;
15496
15497/***/ }),
15498/* 282 */
15499/***/ (function(module, exports, __webpack_require__) {
15500
15501"use strict";
15502
15503
15504Object.defineProperty(exports, "__esModule", {
15505  value: true
15506});
15507exports.ixInstances = void 0;
15508
15509var _constants = __webpack_require__(4);
15510
15511var _shared = __webpack_require__(15);
15512
15513var _timm = __webpack_require__(22);
15514/* eslint-env browser */
15515
15516
15517var _constants$IX2EngineA = _constants.IX2EngineActionTypes,
15518    IX2_RAW_DATA_IMPORTED = _constants$IX2EngineA.IX2_RAW_DATA_IMPORTED,
15519    IX2_SESSION_STOPPED = _constants$IX2EngineA.IX2_SESSION_STOPPED,
15520    IX2_INSTANCE_ADDED = _constants$IX2EngineA.IX2_INSTANCE_ADDED,
15521    IX2_INSTANCE_STARTED = _constants$IX2EngineA.IX2_INSTANCE_STARTED,
15522    IX2_INSTANCE_REMOVED = _constants$IX2EngineA.IX2_INSTANCE_REMOVED,
15523    IX2_ANIMATION_FRAME_CHANGED = _constants$IX2EngineA.IX2_ANIMATION_FRAME_CHANGED;
15524var _shared$IX2EasingUtil = _shared.IX2EasingUtils,
15525    optimizeFloat = _shared$IX2EasingUtil.optimizeFloat,
15526    applyEasing = _shared$IX2EasingUtil.applyEasing,
15527    createBezierEasing = _shared$IX2EasingUtil.createBezierEasing;
15528var RENDER_GENERAL = _constants.IX2EngineConstants.RENDER_GENERAL;
15529var _shared$IX2VanillaUti = _shared.IX2VanillaUtils,
15530    getItemConfigByKey = _shared$IX2VanillaUti.getItemConfigByKey,
15531    getRenderType = _shared$IX2VanillaUti.getRenderType,
15532    getStyleProp = _shared$IX2VanillaUti.getStyleProp;
15533
15534var continuousInstance = function continuousInstance(state, action) {
15535  var lastPosition = state.position,
15536      parameterId = state.parameterId,
15537      actionGroups = state.actionGroups,
15538      destinationKeys = state.destinationKeys,
15539      smoothing = state.smoothing,
15540      restingValue = state.restingValue,
15541      actionTypeId = state.actionTypeId,
15542      customEasingFn = state.customEasingFn,
15543      skipMotion = state.skipMotion,
15544      skipToValue = state.skipToValue;
15545  var parameters = action.payload.parameters;
15546  var velocity = Math.max(1 - smoothing, 0.01);
15547  var paramValue = parameters[parameterId];
15548
15549  if (paramValue == null) {
15550    velocity = 1;
15551    paramValue = restingValue;
15552  }
15553
15554  var nextPosition = Math.max(paramValue, 0) || 0;
15555  var positionDiff = optimizeFloat(nextPosition - lastPosition);
15556  var position = skipMotion ? skipToValue : optimizeFloat(lastPosition + positionDiff * velocity);
15557  var keyframePosition = position * 100;
15558
15559  if (position === lastPosition && state.current) {
15560    return state;
15561  }
15562
15563  var fromActionItem;
15564  var toActionItem;
15565  var positionOffset;
15566  var positionRange;
15567
15568  for (var i = 0, length = actionGroups.length; i < length; i++) {
15569    var _actionGroups$i = actionGroups[i],
15570        keyframe = _actionGroups$i.keyframe,
15571        actionItems = _actionGroups$i.actionItems;
15572
15573    if (i === 0) {
15574      fromActionItem = actionItems[0];
15575    }
15576
15577    if (keyframePosition >= keyframe) {
15578      fromActionItem = actionItems[0];
15579      var nextGroup = actionGroups[i + 1];
15580      var hasNextItem = nextGroup && keyframePosition !== keyframe;
15581      toActionItem = hasNextItem ? nextGroup.actionItems[0] : null;
15582
15583      if (hasNextItem) {
15584        positionOffset = keyframe / 100;
15585        positionRange = (nextGroup.keyframe - keyframe) / 100;
15586      }
15587    }
15588  }
15589
15590  var current = {};
15591
15592  if (fromActionItem && !toActionItem) {
15593    for (var _i = 0, _length = destinationKeys.length; _i < _length; _i++) {
15594      var key = destinationKeys[_i];
15595      current[key] = getItemConfigByKey(actionTypeId, key, fromActionItem.config);
15596    }
15597  } else if (fromActionItem && toActionItem && positionOffset !== undefined && positionRange !== undefined) {
15598    var localPosition = (position - positionOffset) / positionRange;
15599    var easing = fromActionItem.config.easing;
15600    var eased = applyEasing(easing, localPosition, customEasingFn);
15601
15602    for (var _i2 = 0, _length2 = destinationKeys.length; _i2 < _length2; _i2++) {
15603      var _key = destinationKeys[_i2];
15604      var fromVal = getItemConfigByKey(actionTypeId, _key, fromActionItem.config);
15605      var toVal = getItemConfigByKey(actionTypeId, _key, toActionItem.config); // $FlowFixMe — toVal and fromVal could potentially be null, need to update type higher to determine number
15606
15607      var diff = toVal - fromVal; // $FlowFixMe
15608
15609      var value = diff * eased + fromVal;
15610      current[_key] = value;
15611    }
15612  }
15613
15614  return (0, _timm.merge)(state, {
15615    position: position,
15616    current: current
15617  });
15618};
15619
15620var timedInstance = function timedInstance(state, action) {
15621  var _state = state,
15622      active = _state.active,
15623      origin = _state.origin,
15624      start = _state.start,
15625      immediate = _state.immediate,
15626      renderType = _state.renderType,
15627      verbose = _state.verbose,
15628      actionItem = _state.actionItem,
15629      destination = _state.destination,
15630      destinationKeys = _state.destinationKeys,
15631      pluginDuration = _state.pluginDuration,
15632      instanceDelay = _state.instanceDelay,
15633      customEasingFn = _state.customEasingFn,
15634      skipMotion = _state.skipMotion;
15635  var easing = actionItem.config.easing;
15636  var _actionItem$config = actionItem.config,
15637      duration = _actionItem$config.duration,
15638      delay = _actionItem$config.delay;
15639
15640  if (pluginDuration != null) {
15641    duration = pluginDuration;
15642  }
15643
15644  delay = instanceDelay != null ? instanceDelay : delay;
15645
15646  if (renderType === RENDER_GENERAL) {
15647    duration = 0;
15648  } else if (immediate || skipMotion) {
15649    duration = delay = 0;
15650  }
15651
15652  var now = action.payload.now;
15653
15654  if (active && origin) {
15655    var delta = now - (start + delay);
15656
15657    if (verbose) {
15658      var verboseDelta = now - start;
15659      var verboseDuration = duration + delay;
15660      var verbosePosition = optimizeFloat(Math.min(Math.max(0, verboseDelta / verboseDuration), 1));
15661      state = (0, _timm.set)(state, 'verboseTimeElapsed', verboseDuration * verbosePosition);
15662    }
15663
15664    if (delta < 0) {
15665      return state;
15666    }
15667
15668    var position = optimizeFloat(Math.min(Math.max(0, delta / duration), 1));
15669    var eased = applyEasing(easing, position, customEasingFn);
15670    var newProps = {};
15671    var current = null;
15672
15673    if (destinationKeys.length) {
15674      current = destinationKeys.reduce(function (result, key) {
15675        var destValue = destination[key];
15676        var originVal = parseFloat(origin[key]) || 0;
15677        var diff = parseFloat(destValue) - originVal;
15678        var value = diff * eased + originVal;
15679        result[key] = value;
15680        return result;
15681      }, {});
15682    }
15683
15684    newProps.current = current;
15685    newProps.position = position;
15686
15687    if (position === 1) {
15688      newProps.active = false;
15689      newProps.complete = true;
15690    }
15691
15692    return (0, _timm.merge)(state, newProps);
15693  }
15694
15695  return state;
15696};
15697
15698var ixInstances = function ixInstances() {
15699  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Object.freeze({});
15700  var action = arguments.length > 1 ? arguments[1] : undefined;
15701
15702  switch (action.type) {
15703    case IX2_RAW_DATA_IMPORTED:
15704      {
15705        return action.payload.ixInstances || Object.freeze({});
15706      }
15707
15708    case IX2_SESSION_STOPPED:
15709      {
15710        return Object.freeze({});
15711      }
15712
15713    case IX2_INSTANCE_ADDED:
15714      {
15715        var _action$payload = action.payload,
15716            instanceId = _action$payload.instanceId,
15717            elementId = _action$payload.elementId,
15718            actionItem = _action$payload.actionItem,
15719            eventId = _action$payload.eventId,
15720            eventTarget = _action$payload.eventTarget,
15721            eventStateKey = _action$payload.eventStateKey,
15722            actionListId = _action$payload.actionListId,
15723            groupIndex = _action$payload.groupIndex,
15724            isCarrier = _action$payload.isCarrier,
15725            origin = _action$payload.origin,
15726            destination = _action$payload.destination,
15727            immediate = _action$payload.immediate,
15728            verbose = _action$payload.verbose,
15729            continuous = _action$payload.continuous,
15730            parameterId = _action$payload.parameterId,
15731            actionGroups = _action$payload.actionGroups,
15732            smoothing = _action$payload.smoothing,
15733            restingValue = _action$payload.restingValue,
15734            pluginInstance = _action$payload.pluginInstance,
15735            pluginDuration = _action$payload.pluginDuration,
15736            instanceDelay = _action$payload.instanceDelay,
15737            skipMotion = _action$payload.skipMotion,
15738            skipToValue = _action$payload.skipToValue;
15739        var actionTypeId = actionItem.actionTypeId;
15740        var renderType = getRenderType(actionTypeId);
15741        var styleProp = getStyleProp(renderType, actionTypeId);
15742        var destinationKeys = Object.keys(destination).filter(function (key) {
15743          return destination[key] != null;
15744        });
15745        var easing = actionItem.config.easing;
15746        return (0, _timm.set)(state, instanceId, {
15747          id: instanceId,
15748          elementId: elementId,
15749          active: false,
15750          position: 0,
15751          start: 0,
15752          origin: origin,
15753          destination: destination,
15754          destinationKeys: destinationKeys,
15755          immediate: immediate,
15756          verbose: verbose,
15757          current: null,
15758          actionItem: actionItem,
15759          actionTypeId: actionTypeId,
15760          eventId: eventId,
15761          eventTarget: eventTarget,
15762          eventStateKey: eventStateKey,
15763          actionListId: actionListId,
15764          groupIndex: groupIndex,
15765          renderType: renderType,
15766          isCarrier: isCarrier,
15767          styleProp: styleProp,
15768          continuous: continuous,
15769          parameterId: parameterId,
15770          actionGroups: actionGroups,
15771          smoothing: smoothing,
15772          restingValue: restingValue,
15773          pluginInstance: pluginInstance,
15774          pluginDuration: pluginDuration,
15775          instanceDelay: instanceDelay,
15776          skipMotion: skipMotion,
15777          skipToValue: skipToValue,
15778          customEasingFn: Array.isArray(easing) && easing.length === 4 ? createBezierEasing(easing) : undefined
15779        });
15780      }
15781
15782    case IX2_INSTANCE_STARTED:
15783      {
15784        var _action$payload2 = action.payload,
15785            _instanceId = _action$payload2.instanceId,
15786            time = _action$payload2.time;
15787        return (0, _timm.mergeIn)(state, [_instanceId], {
15788          active: true,
15789          complete: false,
15790          start: time
15791        });
15792      }
15793
15794    case IX2_INSTANCE_REMOVED:
15795      {
15796        var _instanceId2 = action.payload.instanceId;
15797
15798        if (!state[_instanceId2]) {
15799          return state;
15800        }
15801
15802        var newState = {};
15803        var keys = Object.keys(state);
15804        var length = keys.length;
15805
15806        for (var i = 0; i < length; i++) {
15807          var key = keys[i];
15808
15809          if (key !== _instanceId2) {
15810            newState[key] = state[key];
15811          }
15812        }
15813
15814        return newState;
15815      }
15816
15817    case IX2_ANIMATION_FRAME_CHANGED:
15818      {
15819        var _newState = state;
15820
15821        var _keys = Object.keys(state);
15822
15823        var _length3 = _keys.length;
15824
15825        for (var _i3 = 0; _i3 < _length3; _i3++) {
15826          var _key2 = _keys[_i3];
15827          var instance = state[_key2];
15828          var reducer = instance.continuous ? continuousInstance : timedInstance;
15829          _newState = (0, _timm.set)(_newState, _key2, reducer(instance, action));
15830        }
15831
15832        return _newState;
15833      }
15834
15835    default:
15836      {
15837        return state;
15838      }
15839  }
15840};
15841
15842exports.ixInstances = ixInstances;
15843
15844/***/ }),
15845/* 283 */
15846/***/ (function(module, exports, __webpack_require__) {
15847
15848"use strict";
15849
15850
15851Object.defineProperty(exports, "__esModule", {
15852  value: true
15853});
15854exports.ixParameters = void 0;
15855
15856var _constants = __webpack_require__(4);
15857
15858var _constants$IX2EngineA = _constants.IX2EngineActionTypes,
15859    IX2_RAW_DATA_IMPORTED = _constants$IX2EngineA.IX2_RAW_DATA_IMPORTED,
15860    IX2_SESSION_STOPPED = _constants$IX2EngineA.IX2_SESSION_STOPPED,
15861    IX2_PARAMETER_CHANGED = _constants$IX2EngineA.IX2_PARAMETER_CHANGED; // prettier-ignore
15862
15863var ixParameters = function ixParameters() {
15864  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
15865    /*mutable flat state*/
15866  };
15867  var action = arguments.length > 1 ? arguments[1] : undefined;
15868
15869  switch (action.type) {
15870    case IX2_RAW_DATA_IMPORTED:
15871      {
15872        return action.payload.ixParameters || {
15873          /*mutable flat state*/
15874        };
15875      }
15876
15877    case IX2_SESSION_STOPPED:
15878      {
15879        return {
15880          /*mutable flat state*/
15881        };
15882      }
15883
15884    case IX2_PARAMETER_CHANGED:
15885      {
15886        var _action$payload = action.payload,
15887            key = _action$payload.key,
15888            value = _action$payload.value;
15889        state[key] = value;
15890        return state;
15891      }
15892
15893    default:
15894      {
15895        return state;
15896      }
15897  }
15898};
15899
15900exports.ixParameters = ixParameters;
15901
15902/***/ }),
15903/* 284 */
15904/***/ (function(module, exports) {
15905
15906function _objectWithoutPropertiesLoose(source, excluded) {
15907  if (source == null) return {};
15908  var target = {};
15909  var sourceKeys = Object.keys(source);
15910  var key, i;
15911
15912  for (i = 0; i < sourceKeys.length; i++) {
15913    key = sourceKeys[i];
15914    if (excluded.indexOf(key) >= 0) continue;
15915    target[key] = source[key];
15916  }
15917
15918  return target;
15919}
15920
15921module.exports = _objectWithoutPropertiesLoose;
15922
15923/***/ }),
15924/* 285 */
15925/***/ (function(module, exports, __webpack_require__) {
15926
15927var baseKeys = __webpack_require__(57),
15928    getTag = __webpack_require__(59),
15929    isArrayLike = __webpack_require__(17),
15930    isString = __webpack_require__(286),
15931    stringSize = __webpack_require__(287);
15932
15933/** `Object#toString` result references. */
15934var mapTag = '[object Map]',
15935    setTag = '[object Set]';
15936
15937/**
15938 * Gets the size of `collection` by returning its length for array-like
15939 * values or the number of own enumerable string keyed properties for objects.
15940 *
15941 * @static
15942 * @memberOf _
15943 * @since 0.1.0
15944 * @category Collection
15945 * @param {Array|Object|string} collection The collection to inspect.
15946 * @returns {number} Returns the collection size.
15947 * @example
15948 *
15949 * _.size([1, 2, 3]);
15950 * // => 3
15951 *
15952 * _.size({ 'a': 1, 'b': 2 });
15953 * // => 2
15954 *
15955 * _.size('pebbles');
15956 * // => 7
15957 */
15958function size(collection) {
15959  if (collection == null) {
15960    return 0;
15961  }
15962  if (isArrayLike(collection)) {
15963    return isString(collection) ? stringSize(collection) : collection.length;
15964  }
15965  var tag = getTag(collection);
15966  if (tag == mapTag || tag == setTag) {
15967    return collection.size;
15968  }
15969  return baseKeys(collection).length;
15970}
15971
15972module.exports = size;
15973
15974
15975/***/ }),
15976/* 286 */
15977/***/ (function(module, exports, __webpack_require__) {
15978
15979var baseGetTag = __webpack_require__(16),
15980    isArray = __webpack_require__(2),
15981    isObjectLike = __webpack_require__(12);
15982
15983/** `Object#toString` result references. */
15984var stringTag = '[object String]';
15985
15986/**
15987 * Checks if `value` is classified as a `String` primitive or object.
15988 *
15989 * @static
15990 * @since 0.1.0
15991 * @memberOf _
15992 * @category Lang
15993 * @param {*} value The value to check.
15994 * @returns {boolean} Returns `true` if `value` is a string, else `false`.
15995 * @example
15996 *
15997 * _.isString('abc');
15998 * // => true
15999 *
16000 * _.isString(1);
16001 * // => false
16002 */
16003function isString(value) {
16004  return typeof value == 'string' ||
16005    (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);
16006}
16007
16008module.exports = isString;
16009
16010
16011/***/ }),
16012/* 287 */
16013/***/ (function(module, exports, __webpack_require__) {
16014
16015var asciiSize = __webpack_require__(288),
16016    hasUnicode = __webpack_require__(289),
16017    unicodeSize = __webpack_require__(290);
16018
16019/**
16020 * Gets the number of symbols in `string`.
16021 *
16022 * @private
16023 * @param {string} string The string to inspect.
16024 * @returns {number} Returns the string size.
16025 */
16026function stringSize(string) {
16027  return hasUnicode(string)
16028    ? unicodeSize(string)
16029    : asciiSize(string);
16030}
16031
16032module.exports = stringSize;
16033
16034
16035/***/ }),
16036/* 288 */
16037/***/ (function(module, exports, __webpack_require__) {
16038
16039var baseProperty = __webpack_require__(113);
16040
16041/**
16042 * Gets the size of an ASCII `string`.
16043 *
16044 * @private
16045 * @param {string} string The string inspect.
16046 * @returns {number} Returns the string size.
16047 */
16048var asciiSize = baseProperty('length');
16049
16050module.exports = asciiSize;
16051
16052
16053/***/ }),
16054/* 289 */
vendor: 2,921 bytes, lines 16055-16144
16055/***/ (function(module, exports) {
16056
16057/** Used to compose unicode character classes. */
16058var rsAstralRange = '\\ud800-\\udfff',
16059    rsComboMarksRange = '\\u0300-\\u036f',
16060    reComboHalfMarksRange = '\\ufe20-\\ufe2f',
16061    rsComboSymbolsRange = '\\u20d0-\\u20ff',
16062    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
16063    rsVarRange = '\\ufe0e\\ufe0f';
16064
16065/** Used to compose unicode capture groups. */
16066var rsZWJ = '\\u200d';
16067
16068/** 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/). */
16069var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboRange + rsVarRange + ']');
16070
16071/**
16072 * Checks if `string` contains Unicode symbols.
16073 *
16074 * @private
16075 * @param {string} string The string to inspect.
16076 * @returns {boolean} Returns `true` if a symbol is found, else `false`.
16077 */
16078function hasUnicode(string) {
16079  return reHasUnicode.test(string);
16080}
16081
16082module.exports = hasUnicode;
16083
16084
16085/***/ }),
16086/* 290 */
16087/***/ (function(module, exports) {
16088
16089/** Used to compose unicode character classes. */
16090var rsAstralRange = '\\ud800-\\udfff',
16091    rsComboMarksRange = '\\u0300-\\u036f',
16092    reComboHalfMarksRange = '\\ufe20-\\ufe2f',
16093    rsComboSymbolsRange = '\\u20d0-\\u20ff',
16094    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
16095    rsVarRange = '\\ufe0e\\ufe0f';
16096
16097/** Used to compose unicode capture groups. */
16098var rsAstral = '[' + rsAstralRange + ']',
16099    rsCombo = '[' + rsComboRange + ']',
16100    rsFitz = '\\ud83c[\\udffb-\\udfff]',
16101    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',
16102    rsNonAstral = '[^' + rsAstralRange + ']',
16103    rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}',
16104    rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]',
16105    rsZWJ = '\\u200d';
16106
16107/** Used to compose unicode regexes. */
16108var reOptMod = rsModifier + '?',
16109    rsOptVar = '[' + rsVarRange + ']?',
16110    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',
16111    rsSeq = rsOptVar + reOptMod + rsOptJoin,
16112    rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';
16113
16114/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */
16115var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');
16116
16117/**
16118 * Gets the size of a Unicode `string`.
16119 *
16120 * @private
16121 * @param {string} string The string inspect.
16122 * @returns {number} Returns the string size.
16123 */
16124function unicodeSize(string) {
16125  var result = reUnicode.lastIndex = 0;
16126  while (reUnicode.test(string)) {
16127    ++result;
16128  }
16129  return result;
16130}
16131
16132module.exports = unicodeSize;
16133
16134
16135/***/ }),
16136/* 291 */
16137/***/ (function(module, exports, __webpack_require__) {
16138
16139var baseIteratee = __webpack_require__(10),
16140    negate = __webpack_require__(292),
16141    pickBy = __webpack_require__(293);
16142
16143/**
16144 * The opposite of `_.pickBy`;
16144 this method creates an object composed of
16145 * the own and inherited enumerable string keyed properties of `object` that
16146 * `predicate` doesn't return truthy for. The predicate is invoked with two
16147 * arguments: (value, key).
16148 *
16149 * @static
16150 * @memberOf _
16151 * @since 4.0.0
16152 * @category Object
16153 * @param {Object} object The source object.
16154 * @param {Function} [predicate=_.identity] The function invoked per property.
16155 * @returns {Object} Returns the new object.
16156 * @example
16157 *
16158 * var object = { 'a': 1, 'b': '2', 'c': 3 };
16159 *
16160 * _.omitBy(object, _.isNumber);
16161 * // => { 'b': '2' }
16162 */
16163function omitBy(object, predicate) {
16164  return pickBy(object, negate(baseIteratee(predicate)));
16165}
16166
16167module.exports = omitBy;
16168
16169
16170/***/ }),
16171/* 292 */
16172/***/ (function(module, exports) {
16173
16174/** Error message constants. */
16175var FUNC_ERROR_TEXT = 'Expected a function';
16176
16177/**
16178 * Creates a function that negates the result of the predicate `func`. The
16179 * `func` predicate is invoked with the `this` binding and arguments of the
16180 * created function.
16181 *
16182 * @static
16183 * @memberOf _
16184 * @since 3.0.0
16185 * @category Function
16186 * @param {Function} predicate The predicate to negate.
16187 * @returns {Function} Returns the new negated function.
16188 * @example
16189 *
16190 * function isEven(n) {
16191 *   return n % 2 == 0;
16192 * }
16193 *
16194 * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));
16195 * // => [1, 3, 5]
16196 */
16197function negate(predicate) {
16198  if (typeof predicate != 'function') {
16199    throw new TypeError(FUNC_ERROR_TEXT);
16200  }
16201  return function() {
16202    var args = arguments;
16203    switch (args.length) {
16204      case 0: return !predicate.call(this);
16205      case 1: return !predicate.call(this, args[0]);
16206      case 2: return !predicate.call(this, args[0], args[1]);
16207      case 3: return !predicate.call(this, args[0], args[1], args[2]);
16208    }
16209    return !predicate.apply(this, args);
16210  };
16211}
16212
16213module.exports = negate;
16214
16215
16216/***/ }),
16217/* 293 */
16218/***/ (function(module, exports, __webpack_require__) {
16219
16220var arrayMap = __webpack_require__(112),
16221    baseIteratee = __webpack_require__(10),
16222    basePickBy = __webpack_require__(294),
16223    getAllKeysIn = __webpack_require__(297);
16224
16225/**
16226 * Creates an object composed of the `object` properties `predicate` returns
16227 * truthy for. The predicate is invoked with two arguments: (value, key).
16228 *
16229 * @static
16230 * @memberOf _
16231 * @since 4.0.0
16232 * @category Object
16233 * @param {Object} object The source object.
16234 * @param {Function} [predicate=_.identity] The function invoked per property.
16235 * @returns {Object} Returns the new object.
16236 * @example
16237 *
16238 * var object = { 'a': 1, 'b': '2', 'c': 3 };
16239 *
16240 * _.pickBy(object, _.isNumber);
16241 * // => { 'a': 1, 'c': 3 }
16242 */
16243function pickBy(object, predicate) {
16244  if (object == null) {
16245    return {};
16246  }
16247  var props = arrayMap(getAllKeysIn(object), function(prop) {
16248    return [prop];
16249  });
16250  predicate = baseIteratee(predicate);
16251  return basePickBy(object, props, function(value, path) {
16252    return predicate(value, path[0]);
16253  });
16254}
16255
16256module.exports = pickBy;
16257
16258
16259/***/ }),
16260/* 294 */
16261/***/ (function(module, exports, __webpack_require__) {
16262
16263var baseGet = __webpack_require__(61),
16264    baseSet = __webpack_require__(295),
16265    castPath = __webpack_require__(37);
16266
16267/**
16268 * The base implementation of  `_.pickBy` without support for iteratee shorthands.
16269 *
16270 * @private
16271 * @param {Object} object The source object.
16272 * @param {string[]} paths The property paths to pick.
16273 * @param {Function} predicate The function invoked per property.
16274 * @returns {Object} Returns the new object.
16275 */
16276function basePickBy(object, paths, predicate) {
16277  var index = -1,
16278      length = paths.length,
16279      result = {};
16280
16281  while (++index < length) {
16282    var path = paths[index],
16283        value = baseGet(object, path);
16284
16285    if (predicate(value, path)) {
16286      baseSet(result, castPath(path, object), value);
16287    }
16288  }
16289  return result;
16290}
16291
16292module.exports = basePickBy;
16293
16294
16295/***/ }),
16296/* 295 */
16297/***/ (function(module, exports, __webpack_require__) {
16298
16299var assignValue = __webpack_require__(296),
16300    castPath = __webpack_require__(37),
16301    isIndex = __webpack_require__(54),
16302    isObject = __webpack_require__(8),
16303    toKey = __webpack_require__(24);
16304
16305/**
16306 * The base implementation of `_.set`.
16307 *
16308 * @private
16309 * @param {Object} object The object to modify.
16310 * @param {Array|string} path The path of the property to set.
16311 * @param {*} value The value to set.
16312 * @param {Function} [customizer] The function to customize path creation.
16313 * @returns {Object} Returns `object`.
16314 */
16315function baseSet(object, path, value, customizer) {
16316  if (!isObject(object)) {
16317    return object;
16318  }
16319  path = castPath(path, object);
16320
16321  var index = -1,
16322      length = path.length,
16323      lastIndex = length - 1,
16324      nested = object;
16325
16326  while (nested != null && ++index < length) {
16327    var key = toKey(path[index]),
16328        newValue = value;
16329
16330    if (key === '__proto__' || key === 'constructor' || key === 'prototype') {
16331      return object;
16332    }
16333
16334    if (index != lastIndex) {
16335      var objValue = nested[key];
16336      newValue = customizer ? customizer(objValue, key, nested) : undefined;
16337      if (newValue === undefined) {
16338        newValue = isObject(objValue)
16339          ? objValue
16340          : (isIndex(path[index + 1]) ? [] : {});
16341      }
16342    }
16343    assignValue(nested, key, newValue);
16344    nested = nested[key];
16345  }
16346  return object;
16347}
16348
16349module.exports = baseSet;
16350
16351
16352/***/ }),
16353/* 296 */
16354/***/ (function(module, exports, __webpack_require__) {
16355
16356var baseAssignValue = __webpack_require__(124),
16357    eq = __webpack_require__(49);
16358
16359/** Used for built-in method references. */
16360var objectProto = Object.prototype;
16361
16362/** Used to check objects for own properties. */
16363var hasOwnProperty = objectProto.hasOwnProperty;
16364
16365/**
16366 * Assigns `value` to `key` of `object` if the existing value is not equivalent
16367 * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
16368 * for equality comparisons.
16369 *
16370 * @private
16371 * @param {Object} object The object to modify.
16372 * @param {string} key The key of the property to assign.
16373 * @param {*} value The value to assign.
16374 */
16375function assignValue(object, key, value) {
16376  var objValue = object[key];
16377  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||
16378      (value === undefined && !(key in object))) {
16379    baseAssignValue(object, key, value);
16380  }
16381}
16382
16383module.exports = assignValue;
16384
16385
16386/***/ }),
16387/* 297 */
16388/***/ (function(module, exports, __webpack_require__) {
16389
16390var baseGetAllKeys = __webpack_require__(103),
16391    getSymbolsIn = __webpack_require__(298),
16392    keysIn = __webpack_require__(300);
16393
16394/**
16395 * Creates an array of own and inherited enumerable property names and
16396 * symbols of `object`.
16397 *
16398 * @private
16399 * @param {Object} object The object to query.
16400 * @returns {Array} Returns the array of property names and symbols.
16401 */
16402function getAllKeysIn(object) {
16403  return baseGetAllKeys(object, keysIn, getSymbolsIn);
16404}
16405
16406module.exports = getAllKeysIn;
16407
16408
16409/***/ }),
16410/* 298 */
16411/***/ (function(module, exports, __webpack_require__) {
16412
16413var arrayPush = __webpack_require__(52),
16414    getPrototype = __webpack_require__(299),
16415    getSymbols = __webpack_require__(104),
16416    stubArray = __webpack_require__(105);
16417
16418/* Built-in method references for those with the same name as other `lodash` methods. */
16419var nativeGetSymbols = Object.getOwnPropertySymbols;
16420
16421/**
16422 * Creates an array of the own and inherited enumerable symbols of `object`.
16423 *
16424 * @private
16425 * @param {Object} object The object to query.
16426 * @returns {Array} Returns the array of symbols.
16427 */
16428var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {
16429  var result = [];
16430  while (object) {
vendor: 8,847 bytes, lines 16431-16789
16431    arrayPush(result, getSymbols(object));
16432    object = getPrototype(object);
16433  }
16434  return result;
16435};
16436
16437module.exports = getSymbolsIn;
16438
16439
16440/***/ }),
16441/* 299 */
16442/***/ (function(module, exports, __webpack_require__) {
16443
16444var overArg = __webpack_require__(108);
16445
16446/** Built-in value references. */
16447var getPrototype = overArg(Object.getPrototypeOf, Object);
16448
16449module.exports = getPrototype;
16450
16451
16452/***/ }),
16453/* 300 */
16454/***/ (function(module, exports, __webpack_require__) {
16455
16456var arrayLikeKeys = __webpack_require__(106),
16457    baseKeysIn = __webpack_require__(301),
16458    isArrayLike = __webpack_require__(17);
16459
16460/**
16461 * Creates an array of the own and inherited enumerable property names of `object`.
16462 *
16463 * **Note:** Non-object values are coerced to objects.
16464 *
16465 * @static
16466 * @memberOf _
16467 * @since 3.0.0
16468 * @category Object
16469 * @param {Object} object The object to query.
16470 * @returns {Array} Returns the array of property names.
16471 * @example
16472 *
16473 * function Foo() {
16474 *   this.a = 1;
16475 *   this.b = 2;
16476 * }
16477 *
16478 * Foo.prototype.c = 3;
16479 *
16480 * _.keysIn(new Foo);
16481 * // => ['a', 'b', 'c'] (iteration order is not guaranteed)
16482 */
16483function keysIn(object) {
16484  return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);
16485}
16486
16487module.exports = keysIn;
16488
16489
16490/***/ }),
16491/* 301 */
16492/***/ (function(module, exports, __webpack_require__) {
16493
16494var isObject = __webpack_require__(8),
16495    isPrototype = __webpack_require__(58),
16496    nativeKeysIn = __webpack_require__(302);
16497
16498/** Used for built-in method references. */
16499var objectProto = Object.prototype;
16500
16501/** Used to check objects for own properties. */
16502var hasOwnProperty = objectProto.hasOwnProperty;
16503
16504/**
16505 * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.
16506 *
16507 * @private
16508 * @param {Object} object The object to query.
16509 * @returns {Array} Returns the array of property names.
16510 */
16511function baseKeysIn(object) {
16512  if (!isObject(object)) {
16513    return nativeKeysIn(object);
16514  }
16515  var isProto = isPrototype(object),
16516      result = [];
16517
16518  for (var key in object) {
16519    if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {
16520      result.push(key);
16521    }
16522  }
16523  return result;
16524}
16525
16526module.exports = baseKeysIn;
16527
16528
16529/***/ }),
16530/* 302 */
16531/***/ (function(module, exports) {
16532
16533/**
16534 * This function is like
16535 * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
16536 * except that it includes inherited enumerable properties.
16537 *
16538 * @private
16539 * @param {Object} object The object to query.
16540 * @returns {Array} Returns the array of property names.
16541 */
16542function nativeKeysIn(object) {
16543  var result = [];
16544  if (object != null) {
16545    for (var key in Object(object)) {
16546      result.push(key);
16547    }
16548  }
16549  return result;
16550}
16551
16552module.exports = nativeKeysIn;
16553
16554
16555/***/ }),
16556/* 303 */
16557/***/ (function(module, exports, __webpack_require__) {
16558
16559var baseKeys = __webpack_require__(57),
16560    getTag = __webpack_require__(59),
16561    isArguments = __webpack_require__(36),
16562    isArray = __webpack_require__(2),
16563    isArrayLike = __webpack_require__(17),
16564    isBuffer = __webpack_require__(53),
16565    isPrototype = __webpack_require__(58),
16566    isTypedArray = __webpack_require__(55);
16567
16568/** `Object#toString` result references. */
16569var mapTag = '[object Map]',
16570    setTag = '[object Set]';
16571
16572/** Used for built-in method references. */
16573var objectProto = Object.prototype;
16574
16575/** Used to check objects for own properties. */
16576var hasOwnProperty = objectProto.hasOwnProperty;
16577
16578/**
16579 * Checks if `value` is an empty object, collection, map, or set.
16580 *
16581 * Objects are considered empty if they have no own enumerable string keyed
16582 * properties.
16583 *
16584 * Array-like values such as `arguments` objects, arrays, buffers, strings, or
16585 * jQuery-like collections are considered empty if they have a `length` of `0`.
16586 * Similarly, maps and sets are considered empty if they have a `size` of `0`.
16587 *
16588 * @static
16589 * @memberOf _
16590 * @since 0.1.0
16591 * @category Lang
16592 * @param {*} value The value to check.
16593 * @returns {boolean} Returns `true` if `value` is empty, else `false`.
16594 * @example
16595 *
16596 * _.isEmpty(null);
16597 * // => true
16598 *
16599 * _.isEmpty(true);
16600 * // => true
16601 *
16602 * _.isEmpty(1);
16603 * // => true
16604 *
16605 * _.isEmpty([1, 2, 3]);
16606 * // => false
16607 *
16608 * _.isEmpty({ 'a': 1 });
16609 * // => false
16610 */
16611function isEmpty(value) {
16612  if (value == null) {
16613    return true;
16614  }
16615  if (isArrayLike(value) &&
16616      (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||
16617        isBuffer(value) || isTypedArray(value) || isArguments(value))) {
16618    return !value.length;
16619  }
16620  var tag = getTag(value);
16621  if (tag == mapTag || tag == setTag) {
16622    return !value.size;
16623  }
16624  if (isPrototype(value)) {
16625    return !baseKeys(value).length;
16626  }
16627  for (var key in value) {
16628    if (hasOwnProperty.call(value, key)) {
16629      return false;
16630    }
16631  }
16632  return true;
16633}
16634
16635module.exports = isEmpty;
16636
16637
16638/***/ }),
16639/* 304 */
16640/***/ (function(module, exports, __webpack_require__) {
16641
16642var baseAssignValue = __webpack_require__(124),
16643    baseForOwn = __webpack_require__(122),
16644    baseIteratee = __webpack_require__(10);
16645
16646/**
16647 * Creates an object with the same keys as `object` and values generated
16648 * by running each own enumerable string keyed property of `object` thru
16649 * `iteratee`. The iteratee is invoked with three arguments:
16650 * (value, key, object).
16651 *
16652 * @static
16653 * @memberOf _
16654 * @since 2.4.0
16655 * @category Object
16656 * @param {Object} object The object to iterate over.
16657 * @param {Function} [iteratee=_.identity] The function invoked per iteration.
16658 * @returns {Object} Returns the new mapped object.
16659 * @see _.mapKeys
16660 * @example
16661 *
16662 * var users = {
16663 *   'fred':    { 'user': 'fred',    'age': 40 },
16664 *   'pebbles': { 'user': 'pebbles', 'age': 1 }
16665 * };
16666 *
16667 * _.mapValues(users, function(o) { return o.age; });
16668 * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
16669 *
16670 * // The `_.property` iteratee shorthand.
16671 * _.mapValues(users, 'age');
16672 * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
16673 */
16674function mapValues(object, iteratee) {
16675  var result = {};
16676  iteratee = baseIteratee(iteratee, 3);
16677
16678  baseForOwn(object, function(value, key, object) {
16679    baseAssignValue(result, key, iteratee(value, key, object));
16680  });
16681  return result;
16682}
16683
16684module.exports = mapValues;
16685
16686
16687/***/ }),
16688/* 305 */
16689/***/ (function(module, exports, __webpack_require__) {
16690
16691var arrayEach = __webpack_require__(306),
16692    baseEach = __webpack_require__(121),
16693    castFunction = __webpack_require__(307),
16694    isArray = __webpack_require__(2);
16695
16696/**
16697 * Iterates over elements of `collection` and invokes `iteratee` for each element.
16698 * The iteratee is invoked with three arguments: (value, index|key, collection).
16699 * Iteratee functions may exit iteration early by explicitly returning `false`.
16700 *
16701 * **Note:** As with other "Collections" methods, objects with a "length"
16702 * property are iterated like arrays. To avoid this behavior use `_.forIn`
16703 * or `_.forOwn` for object iteration.
16704 *
16705 * @static
16706 * @memberOf _
16707 * @since 0.1.0
16708 * @alias each
16709 * @category Collection
16710 * @param {Array|Object} collection The collection to iterate over.
16711 * @param {Function} [iteratee=_.identity] The function invoked per iteration.
16712 * @returns {Array|Object} Returns `collection`.
16713 * @see _.forEachRight
16714 * @example
16715 *
16716 * _.forEach([1, 2], function(value) {
16717 *   console.log(value);
16718 * });
16719 * // => Logs `1` then `2`.
16720 *
16721 * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {
16722 *   console.log(key);
16723 * });
16724 * // => Logs 'a' then 'b' (iteration order is not guaranteed).
16725 */
16726function forEach(collection, iteratee) {
16727  var func = isArray(collection) ? arrayEach : baseEach;
16728  return func(collection, castFunction(iteratee));
16729}
16730
16731module.exports = forEach;
16732
16733
16734/***/ }),
16735/* 306 */
16736/***/ (function(module, exports) {
16737
16738/**
16739 * A specialized version of `_.forEach` for arrays without support for
16740 * iteratee shorthands.
16741 *
16742 * @private
16743 * @param {Array} [array] The array to iterate over.
16744 * @param {Function} iteratee The function invoked per iteration.
16745 * @returns {Array} Returns `array`.
16746 */
16747function arrayEach(array, iteratee) {
16748  var index = -1,
16749      length = array == null ? 0 : array.length;
16750
16751  while (++index < length) {
16752    if (iteratee(array[index], index, array) === false) {
16753      break;
16754    }
16755  }
16756  return array;
16757}
16758
16759module.exports = arrayEach;
16760
16761
16762/***/ }),
16763/* 307 */
16764/***/ (function(module, exports, __webpack_require__) {
16765
16766var identity = __webpack_require__(63);
16767
16768/**
16769 * Casts `value` to `identity` if it's not a function.
16770 *
16771 * @private
16772 * @param {*} value The value to inspect.
16773 * @returns {Function} Returns cast function.
16774 */
16775function castFunction(value) {
16776  return typeof value == 'function' ? value : identity;
16777}
16778
16779module.exports = castFunction;
16780
16781
16782/***/ }),
16783/* 308 */
16784/***/ (function(module, exports, __webpack_require__) {
16785
16786var debounce = __webpack_require__(309),
16787    isObject = __webpack_require__(8);
16788
16789/** Error message constants. */
vendor: 9,976 bytes, lines 16790-17104
16790var FUNC_ERROR_TEXT = 'Expected a function';
16791
16792/**
16793 * Creates a throttled function that only invokes `func` at most once per
16794 * every `wait` milliseconds. The throttled function comes with a `cancel`
16795 * method to cancel delayed `func` invocations and a `flush` method to
16796 * immediately invoke them. Provide `options` to indicate whether `func`
16797 * should be invoked on the leading and/or trailing edge of the `wait`
16798 * timeout. The `func` is invoked with the last arguments provided to the
16799 * throttled function. Subsequent calls to the throttled function return the
16800 * result of the last `func` invocation.
16801 *
16802 * **Note:** If `leading` and `trailing` options are `true`, `func` is
16803 * invoked on the trailing edge of the timeout only if the throttled function
16804 * is invoked more than once during the `wait` timeout.
16805 *
16806 * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
16807 * until to the next tick, similar to `setTimeout` with a timeout of `0`.
16808 *
16809 * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
16810 * for details over the differences between `_.throttle` and `_.debounce`.
16811 *
16812 * @static
16813 * @memberOf _
16814 * @since 0.1.0
16815 * @category Function
16816 * @param {Function} func The function to throttle.
16817 * @param {number} [wait=0] The number of milliseconds to throttle invocations to.
16818 * @param {Object} [options={}] The options object.
16819 * @param {boolean} [options.leading=true]
16820 *  Specify invoking on the leading edge of the timeout.
16821 * @param {boolean} [options.trailing=true]
16822 *  Specify invoking on the trailing edge of the timeout.
16823 * @returns {Function} Returns the new throttled function.
16824 * @example
16825 *
16826 * // Avoid excessively updating the position while scrolling.
16827 * jQuery(window).on('scroll', _.throttle(updatePosition, 100));
16828 *
16829 * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.
16830 * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });
16831 * jQuery(element).on('click', throttled);
16832 *
16833 * // Cancel the trailing throttled invocation.
16834 * jQuery(window).on('popstate', throttled.cancel);
16835 */
16836function throttle(func, wait, options) {
16837  var leading = true,
16838      trailing = true;
16839
16840  if (typeof func != 'function') {
16841    throw new TypeError(FUNC_ERROR_TEXT);
16842  }
16843  if (isObject(options)) {
16844    leading = 'leading' in options ? !!options.leading : leading;
16845    trailing = 'trailing' in options ? !!options.trailing : trailing;
16846  }
16847  return debounce(func, wait, {
16848    'leading': leading,
16849    'maxWait': wait,
16850    'trailing': trailing
16851  });
16852}
16853
16854module.exports = throttle;
16855
16856
16857/***/ }),
16858/* 309 */
16859/***/ (function(module, exports, __webpack_require__) {
16860
16861var isObject = __webpack_require__(8),
16862    now = __webpack_require__(310),
16863    toNumber = __webpack_require__(64);
16864
16865/** Error message constants. */
16866var FUNC_ERROR_TEXT = 'Expected a function';
16867
16868/* Built-in method references for those with the same name as other `lodash` methods. */
16869var nativeMax = Math.max,
16870    nativeMin = Math.min;
16871
16872/**
16873 * Creates a debounced function that delays invoking `func` until after `wait`
16874 * milliseconds have elapsed since the last time the debounced function was
16875 * invoked. The debounced function comes with a `cancel` method to cancel
16876 * delayed `func` invocations and a `flush` method to immediately invoke them.
16877 * Provide `options` to indicate whether `func` should be invoked on the
16878 * leading and/or trailing edge of the `wait` timeout. The `func` is invoked
16879 * with the last arguments provided to the debounced function. Subsequent
16880 * calls to the debounced function return the result of the last `func`
16881 * invocation.
16882 *
16883 * **Note:** If `leading` and `trailing` options are `true`, `func` is
16884 * invoked on the trailing edge of the timeout only if the debounced function
16885 * is invoked more than once during the `wait` timeout.
16886 *
16887 * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
16888 * until to the next tick, similar to `setTimeout` with a timeout of `0`.
16889 *
16890 * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
16891 * for details over the differences between `_.debounce` and `_.throttle`.
16892 *
16893 * @static
16894 * @memberOf _
16895 * @since 0.1.0
16896 * @category Function
16897 * @param {Function} func The function to debounce.
16898 * @param {number} [wait=0] The number of milliseconds to delay.
16899 * @param {Object} [options={}] The options object.
16900 * @param {boolean} [options.leading=false]
16901 *  Specify invoking on the leading edge of the timeout.
16902 * @param {number} [options.maxWait]
16903 *  The maximum time `func` is allowed to be delayed before it's invoked.
16904 * @param {boolean} [options.trailing=true]
16905 *  Specify invoking on the trailing edge of the timeout.
16906 * @returns {Function} Returns the new debounced function.
16907 * @example
16908 *
16909 * // Avoid costly calculations while the window size is in flux.
16910 * jQuery(window).on('resize', _.debounce(calculateLayout, 150));
16911 *
16912 * // Invoke `sendMail` when clicked, debouncing subsequent calls.
16913 * jQuery(element).on('click', _.debounce(sendMail, 300, {
16914 *   'leading': true,
16915 *   'trailing': false
16916 * }));
16917 *
16918 * // Ensure `batchLog` is invoked once after 1 second of debounced calls.
16919 * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });
16920 * var source = new EventSource('/stream');
16921 * jQuery(source).on('message', debounced);
16922 *
16923 * // Cancel the trailing debounced invocation.
16924 * jQuery(window).on('popstate', debounced.cancel);
16925 */
16926function debounce(func, wait, options) {
16927  var lastArgs,
16928      lastThis,
16929      maxWait,
16930      result,
16931      timerId,
16932      lastCallTime,
16933      lastInvokeTime = 0,
16934      leading = false,
16935      maxing = false,
16936      trailing = true;
16937
16938  if (typeof func != 'function') {
16939    throw new TypeError(FUNC_ERROR_TEXT);
16940  }
16941  wait = toNumber(wait) || 0;
16942  if (isObject(options)) {
16943    leading = !!options.leading;
16944    maxing = 'maxWait' in options;
16945    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;
16946    trailing = 'trailing' in options ? !!options.trailing : trailing;
16947  }
16948
16949  function invokeFunc(time) {
16950    var args = lastArgs,
16951        thisArg = lastThis;
16952
16953    lastArgs = lastThis = undefined;
16954    lastInvokeTime = time;
16955    result = func.apply(thisArg, args);
16956    return result;
16957  }
16958
16959  function leadingEdge(time) {
16960    // Reset any `maxWait` timer.
16961    lastInvokeTime = time;
16962    // Start the timer for the trailing edge.
16963    timerId = setTimeout(timerExpired, wait);
16964    // Invoke the leading edge.
16965    return leading ? invokeFunc(time) : result;
16966  }
16967
16968  function remainingWait(time) {
16969    var timeSinceLastCall = time - lastCallTime,
16970        timeSinceLastInvoke = time - lastInvokeTime,
16971        timeWaiting = wait - timeSinceLastCall;
16972
16973    return maxing
16974      ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)
16975      : timeWaiting;
16976  }
16977
16978  function shouldInvoke(time) {
16979    var timeSinceLastCall = time - lastCallTime,
16980        timeSinceLastInvoke = time - lastInvokeTime;
16981
16982    // Either this is the first call, activity has stopped and we're at the
16983    // trailing edge, the system time has gone backwards and we're treating
16984    // it as the trailing edge, or we've hit the `maxWait` limit.
16985    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||
16986      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));
16987  }
16988
16989  function timerExpired() {
16990    var time = now();
16991    if (shouldInvoke(time)) {
16992      return trailingEdge(time);
16993    }
16994    // Restart the timer.
16995    timerId = setTimeout(timerExpired, remainingWait(time));
16996  }
16997
16998  function trailingEdge(time) {
16999    timerId = undefined;
17000
17001    // Only invoke if we have `lastArgs` which means `func` has been
17002    // debounced at least once.
17003    if (trailing && lastArgs) {
17004      return invokeFunc(time);
17005    }
17006    lastArgs = lastThis = undefined;
17007    return result;
17008  }
17009
17010  function cancel() {
17011    if (timerId !== undefined) {
17012      clearTimeout(timerId);
17013    }
17014    lastInvokeTime = 0;
17015    lastArgs = lastCallTime = lastThis = timerId = undefined;
17016  }
17017
17018  function flush() {
17019    return timerId === undefined ? result : trailingEdge(now());
17020  }
17021
17022  function debounced() {
17023    var time = now(),
17024        isInvoking = shouldInvoke(time);
17025
17026    lastArgs = arguments;
17027    lastThis = this;
17028    lastCallTime = time;
17029
17030    if (isInvoking) {
17031      if (timerId === undefined) {
17032        return leadingEdge(lastCallTime);
17033      }
17034      if (maxing) {
17035        // Handle invocations in a tight loop.
17036        clearTimeout(timerId);
17037        timerId = setTimeout(timerExpired, wait);
17038        return invokeFunc(lastCallTime);
17039      }
17040    }
17041    if (timerId === undefined) {
17042      timerId = setTimeout(timerExpired, wait);
17043    }
17044    return result;
17045  }
17046  debounced.cancel = cancel;
17047  debounced.flush = flush;
17048  return debounced;
17049}
17050
17051module.exports = debounce;
17052
17053
17054/***/ }),
17055/* 310 */
17056/***/ (function(module, exports, __webpack_require__) {
17057
17058var root = __webpack_require__(6);
17059
17060/**
17061 * Gets the timestamp of the number of milliseconds that have elapsed since
17062 * the Unix epoch (1 January 1970 00:00:00 UTC).
17063 *
17064 * @static
17065 * @memberOf _
17066 * @since 2.4.0
17067 * @category Date
17068 * @returns {number} Returns the timestamp.
17069 * @example
17070 *
17071 * _.defer(function(stamp) {
17072 *   console.log(_.now() - stamp);
17073 * }, _.now());
17074 * // => Logs the number of milliseconds it took for the deferred invocation.
17075 */
17076var now = function() {
17077  return root.Date.now();
17078};
17079
17080module.exports = now;
17081
17082
17083/***/ }),
17084/* 311 */
17085/***/ (function(module, exports, __webpack_require__) {
17086
17087"use strict";
17088
17089
17090var _interopRequireDefault = __webpack_require__(0);
17091
17092var _typeof2 = _interopRequireDefault(__webpack_require__(13));
17093
17094Object.defineProperty(exports, "__esModule", {
17095  value: true
17096});
17097exports.setStyle = setStyle;
17098exports.getStyle = getStyle;
17099exports.getProperty = getProperty;
17100exports.matchSelector = matchSelector;
17101exports.getQuerySelector = getQuerySelector;
17102exports.getValidDocument = getValidDocument;
17103exports.queryDocument = queryDocument;
17104exports.elementContains = elementContains;
17105exports.isSiblingNode = isSiblingNode;
17106exports.getChildElements = getChildElements;
17107exports.getSiblingElements = getSiblingElements;
17108exports.getRefType = getRefType;
17109exports.getClosestElement = void 0;
17110
17111var _shared = __webpack_require__(15);
17112
17113var _constants = __webpack_require__(4);
17114/* eslint-env browser */
17115
17116
17117var ELEMENT_MATCHES = _shared.IX2BrowserSupport.ELEMENT_MATCHES;
17118var _constants$IX2EngineC = _constants.IX2EngineConstants,
17119    IX2_ID_DELIMITER = _constants$IX2EngineC.IX2_ID_DELIMITER,
17120    HTML_ELEMENT = _constants$IX2EngineC.HTML_ELEMENT,
17121    PLAIN_OBJECT = _constants$IX2EngineC.PLAIN_OBJECT,
17122    WF_PAGE = _constants$IX2EngineC.WF_PAGE;
17123
17124function setStyle(element, prop, value) {
17125  // $FlowIgnore — flow complains that prop should be a number. Will need to update upstream
17126  element.style[prop] = value;
17127}
17128
17129function getStyle(element, prop) {
17130  // $FlowIgnore — flow complains that prop should be a number. Will need to update upstream
17131  return element.style[prop];
17132}
17133
17134function getProperty(element, prop) {
17135  // $FlowIgnore — flow complains that prop should be a number. Will need to update upstream
17136  return element[prop];
17137}
17138
17139function matchSelector(selector) {
17140  // $FlowIgnore — ELEMENT_MATCHES is the name of the method on the element's prototype depending on browser
17141  return function (element) {
17142    return element[ELEMENT_MATCHES](selector);
17143  };
17144}
17145
17146function getQuerySelector(_ref) {
17147  var id = _ref.id,
17148      selector = _ref.selector;
17149
17150  if (id) {
17151    var nodeId = id;
17152
17153    if (id.indexOf(IX2_ID_DELIMITER) !== -1) {
17154      var pair = id.split(IX2_ID_DELIMITER);
17155      var pageId = pair[0];
17156      nodeId = pair[1]; // Short circuit query if we're on the wrong page
17157      // $FlowIgnore — if documentElement is null crash
17158
17159      if (pageId !== document.documentElement.getAttribute(WF_PAGE)) {
17160        return null;
17161      }
17162    }
17163
17164    return "[data-w-id=\"".concat(nodeId, "\"], [data-w-id^=\"").concat(nodeId, "_instance\"]");
17165  }
17166
17167  return selector;
17168}
17169
17170function getValidDocument(pageId) {
17171  if (pageId == null || // $FlowIgnore — if documentElement is null crash
17172  pageId === document.documentElement.getAttribute(WF_PAGE)) {
17173    return document;
17174  }
17175
17176  return null;
17177}
17178
17179function queryDocument(baseSelector, descendantSelector) {
17180  return Array.prototype.slice.call(document.querySelectorAll(descendantSelector ? baseSelector + ' ' + descendantSelector : baseSelector));
17181}
17182
17183function elementContains(parent, child) {
17184  return parent.contains(child);
17185}
17186
17187function isSiblingNode(a, b) {
17188  return a !== b && a.parentNode === b.parentNode;
17189}
17190
17191function getChildElements(sourceElements) {
17192  var childElements = [];
17193
17194  for (var i = 0, _ref2 = sourceElements || [], length = _ref2.length; i < length; i++) {
17195    var children = sourceElements[i].children;
17196    var childCount = children.length;
17197
17198    if (!childCount) {
17199      continue;
17200    }
17201
17202    for (var j = 0; j < childCount; j++) {
17203      childElements.push(children[j]);
17204    }
17205  }
17206
17207  return childElements;
17208} // $FlowFixMe
17209
17210
17211function getSiblingElements() {
17212  var sourceElements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
17213  var elements = [];
17214  var parentCache = [];
17215
17216  for (var i = 0, length = sourceElements.length; i < length; i++) {
17217    var parentNode = sourceElements[i].parentNode;
17218
17219    if (!parentNode || !parentNode.children || !parentNode.children.length) {
17220      continue;
17221    }
17222
17223    if (parentCache.indexOf(parentNode) !== -1) {
17224      continue;
17225    }
17226
17227    parentCache.push(parentNode);
17228    var el = parentNode.firstElementChild;
17229
17230    while (el != null) {
17231      if (sourceElements.indexOf(el) === -1) {
17232        elements.push(el);
17233      }
17234
17235      el = el.nextElementSibling;
17236    }
17237  }
17238
17239  return elements;
17240}
17241
17242var getClosestElement = Element.prototype.closest ? function (element, selector) {
17243  // $FlowIgnore — ELEMENT_MATCHES is the name of the method on the element's prototype depending on browser
17244  if (!document.documentElement.contains(element)) {
17245    return null;
17246  }
17247
17248  return element.closest(selector);
17249} : function (element, selector) {
17250  // $FlowIgnore — if documentElement is null crash
17251  if (!document.documentElement.contains(element)) {
17252    return null;
17253  }
17254
17255  var el = element;
17256
17257  do {
17258    // $FlowIgnore — if documentElement is null crash
17259    if (el[ELEMENT_MATCHES] && el[ELEMENT_MATCHES](selector)) {
17260      return el;
17261    }
17262
17263    el = el.parentNode;
17264  } while (el != null);
17265
17266  return null;
17267};
17268exports.getClosestElement = getClosestElement;
17269
17270function getRefType(ref) {
17271  if (ref != null && (0, _typeof2["default"])(ref) == 'object') {
17272    return ref instanceof Element ? HTML_ELEMENT : PLAIN_OBJECT;
17273  }
17274
17275  return null;
17276}
17277
17278/***/ }),
17279/* 312 */
17280/***/ (function(module, exports, __webpack_require__) {
17281
17282"use strict";
17283
17284
17285var _interopRequireDefault2 = __webpack_require__(0);
17286
17287var _defineProperty2 = _interopRequireDefault2(__webpack_require__(21));
17288
17289var _typeof2 = _interopRequireDefault2(__webpack_require__(13));
17290
17291var _default2;
17292
17293var _interopRequireDefault = __webpack_require__(0);
17294
17295Object.defineProperty(exports, "__esModule", {
17296  value: true
17297});
17298exports["default"] = void 0;
17299
17300var _extends2 = _interopRequireDefault(__webpack_require__(30));
17301
17302var _flow = _interopRequireDefault(__webpack_require__(313));
17303
17304var _get = _interopRequireDefault(__webpack_require__(60));
17305
17306var _clamp = _interopRequireDefault(__webpack_require__(332));
17307
17308var _constants = __webpack_require__(4);
17309
17310var _IX2VanillaEngine = __webpack_require__(123);
17311
17312var _IX2EngineActions = __webpack_require__(65);
17313
17314var _shared = __webpack_require__(15);
17315/* eslint-env browser */
17316
17317
17318var _constants$EventTypeC = _constants.EventTypeConsts,
17319    MOUSE_CLICK = _constants$EventTypeC.MOUSE_CLICK,
17320    MOUSE_SECOND_CLICK = _constants$EventTypeC.MOUSE_SECOND_CLICK,
17321    MOUSE_DOWN = _constants$EventTypeC.MOUSE_DOWN,
17322    MOUSE_UP = _constants$EventTypeC.MOUSE_UP,
17323    MOUSE_OVER = _constants$EventTypeC.MOUSE_OVER,
17324    MOUSE_OUT = _constants$EventTypeC.MOUSE_OUT,
17325    DROPDOWN_CLOSE = _constants$EventTypeC.DROPDOWN_CLOSE,
17326    DROPDOWN_OPEN = _constants$EventTypeC.DROPDOWN_OPEN,
17327    SLIDER_ACTIVE = _constants$EventTypeC.SLIDER_ACTIVE,
17328    SLIDER_INACTIVE = _constants$EventTypeC.SLIDER_INACTIVE,
17329    TAB_ACTIVE = _constants$EventTypeC.TAB_ACTIVE,
17330    TAB_INACTIVE = _constants$EventTypeC.TAB_INACTIVE,
17331    NAVBAR_CLOSE = _constants$EventTypeC.NAVBAR_CLOSE,
17332    NAVBAR_OPEN = _constants$EventTypeC.NAVBAR_OPEN,
17333    MOUSE_MOVE = _constants$EventTypeC.MOUSE_MOVE,
17334    PAGE_SCROLL_DOWN = _constants$EventTypeC.PAGE_SCROLL_DOWN,
17335    SCROLL_INTO_VIEW = _constants$EventTypeC.SCROLL_INTO_VIEW,
17336    SCROLL_OUT_OF_VIEW = _constants$EventTypeC.SCROLL_OUT_OF_VIEW,
17337    PAGE_SCROLL_UP = _constants$EventTypeC.PAGE_SCROLL_UP,
17338    SCROLLING_IN_VIEW = _constants$EventTypeC.SCROLLING_IN_VIEW,
17339    PAGE_FINISH = _constants$EventTypeC.PAGE_FINISH,
17340    ECOMMERCE_CART_CLOSE = _constants$EventTypeC.ECOMMERCE_CART_CLOSE,
17341    ECOMMERCE_CART_OPEN = _constants$EventTypeC.ECOMMERCE_CART_OPEN,
17342    PAGE_START = _constants$EventTypeC.PAGE_START,
17343    PAGE_SCROLL = _constants$EventTypeC.PAGE_SCROLL;
17344var COMPONENT_ACTIVE = 'COMPONENT_ACTIVE';
17345var COMPONENT_INACTIVE = 'COMPONENT_INACTIVE';
17346var COLON_DELIMITER = _constants.IX2EngineConstants.COLON_DELIMITER;
17347var getNamespacedParameterId = _shared.IX2VanillaUtils.getNamespacedParameterId;
17348
17349var composableFilter = function composableFilter(predicate) {
17350  return function (options) {
17351    if ((0, _typeof2["default"])(options) === 'object' && predicate(options)) {
17352      return true;
17353    }
17354
17355    return options;
17356  };
17357};
17358
17359var isElement = composableFilter(function (_ref) {
17360  var element = _ref.element,
17361      nativeEvent = _ref.nativeEvent;
17362  return element === nativeEvent.target;
17363});
17364var containsElement = composableFilter(function (_ref2) {
17365  var element = _ref2.element,
17366      nativeEvent = _ref2.nativeEvent;
17367  return element.contains(nativeEvent.target);
17368});
17369var isOrContainsElement = (0, _flow["default"])([isElement, containsElement]);
17370
17371var getAutoStopEvent = function getAutoStopEvent(store, autoStopEventId) {
17372  if (autoStopEventId) {
17373    var _store$getState = store.getState(),
17374        ixData = _store$getState.ixData;
17375
17376    var events = ixData.events;
17377    var eventToStop = events[autoStopEventId];
17378
17379    if (eventToStop && !AUTO_STOP_DISABLED_EVENTS[eventToStop.eventTypeId]) {
17380      return eventToStop;
17381    }
17382  }
17383
17384  return null;
17385};
17386
17387var hasAutoStopEvent = function hasAutoStopEvent(_ref3) {
17388  var store = _ref3.store,
17389      event = _ref3.event;
17390  var eventAction = event.action;
17391  var autoStopEventId = eventAction.config.autoStopEventId;
17392  return Boolean(getAutoStopEvent(store, autoStopEventId));
17393};
17394
17395var actionGroupCreator = function actionGroupCreator(_ref4, state) {
17396  var store = _ref4.store,
17397      event = _ref4.event,
17398      element = _ref4.element,
17399      eventStateKey = _ref4.eventStateKey;
17400  var eventAction = event.action,
17401      eventId = event.id;
17402  var _eventAction$config = eventAction.config,
17403      actionListId = _eventAction$config.actionListId,
17404      autoStopEventId = _eventAction$config.autoStopEventId;
17405  var eventToStop = getAutoStopEvent(store, autoStopEventId);
17406
17407  if (eventToStop) {
17408    (0, _IX2VanillaEngine.stopActionGroup)({
17409      store: store,
17410      eventId: autoStopEventId,
17411      eventTarget: element,
17412      eventStateKey: autoStopEventId + COLON_DELIMITER + eventStateKey.split(COLON_DELIMITER)[1],
17413      actionListId: (0, _get["default"])(eventToStop, 'action.config.actionListId')
17414    });
17415  }
17416
17417  (0, _IX2VanillaEngine.stopActionGroup)({
17418    store: store,
17419    eventId: eventId,
17420    eventTarget: element,
17421    eventStateKey: eventStateKey,
17422    actionListId: actionListId
17423  });
17424  (0, _IX2VanillaEngine.startActionGroup)({
17425    store: store,
17426    eventId: eventId,
17427    eventTarget: element,
17428    eventStateKey: eventStateKey,
17429    actionListId: actionListId
17430  });
17431  return state;
17432}; // $FlowFixMe
17433
17434
17435var withFilter = function withFilter(filter, handler) {
17436  return function (options, state) {
17437    return (// $FlowFixMe
17438      filter(options, state) === true ? handler(options, state) : state
17439    );
17440  };
17441};
17442
17443var baseActionGroupOptions = {
17444  handler: withFilter(isOrContainsElement, actionGroupCreator)
17445};
17446var baseActivityActionGroupOptions = (0, _extends2["default"])({}, baseActionGroupOptions, {
17447  types: [COMPONENT_ACTIVE, COMPONENT_INACTIVE].join(' ')
17448});
17449var SCROLL_EVENT_TYPES = [{
17450  target: window,
17451  types: 'resize orientationchange',
17452  throttle: true
17453}, {
17454  target: document,
17455  types: 'scroll wheel readystatechange IX2_PAGE_UPDATE',
17456  throttle: true
17457}];
17458var MOUSE_OVER_OUT_TYPES = 'mouseover mouseout';
17459var baseScrollActionGroupOptions = {
17460  types: SCROLL_EVENT_TYPES
17461};
17462var AUTO_STOP_DISABLED_EVENTS = {
17463  PAGE_START: PAGE_START,
17464  PAGE_FINISH: PAGE_FINISH
17465};
17466
17467var getDocumentState = function () {
17468  var supportOffset = window.pageXOffset !== undefined;
17469  var isCSS1Compat = document.compatMode === 'CSS1Compat';
17470  var rootElement = isCSS1Compat ? document.documentElement : document.body;
17471  return function () {
17472    return {
17473      // $FlowFixMe
17474      scrollLeft: supportOffset ? window.pageXOffset : rootElement.scrollLeft,
17475      // $FlowFixMe
17476      scrollTop: supportOffset ? window.pageYOffset : rootElement.scrollTop,
17477      // required to remove elasticity in Safari scrolling.
17478      stiffScrollTop: (0, _clamp["default"])( // $FlowFixMe
17479      supportOffset ? window.pageYOffset : rootElement.scrollTop, 0, // $FlowFixMe
17480      rootElement.scrollHeight - window.innerHeight),
17481      // $FlowFixMe
17482      scrollWidth: rootElement.scrollWidth,
17483      // $FlowFixMe
17484      scrollHeight: rootElement.scrollHeight,
17485      // $FlowFixMe
17486      clientWidth: rootElement.clientWidth,
17487      // $FlowFixMe
17488      clientHeight: rootElement.clientHeight,
17489      innerWidth: window.innerWidth,
17490      innerHeight: window.innerHeight
17491    };
17492  };
17493}();
17494
17495var areBoxesIntersecting = function areBoxesIntersecting(a, b) {
17496  return !(a.left > b.right || a.right < b.left || a.top > b.bottom || a.bottom < b.top);
17497};
17498
17499var isElementHovered = function isElementHovered(_ref5) {
17500  var element = _ref5.element,
17501      nativeEvent = _ref5.nativeEvent;
17502  var type = nativeEvent.type,
17503      target = nativeEvent.target,
17504      relatedTarget = nativeEvent.relatedTarget;
17505  var containsTarget = element.contains(target);
17506
17507  if (type === 'mouseover' && containsTarget) {
17508    return true;
17509  }
17510
17511  var containsRelated = element.contains(relatedTarget);
17512
17513  if (type === 'mouseout' && containsTarget && containsRelated) {
17514    return true;
17515  }
17516
17517  return false;
17518};
17519
17520var isElementVisible = function isElementVisible(options) {
17521  var element = options.element,
17522      config = options.event.config;
17523
17524  var _getDocumentState = getDocumentState(),
17525      clientWidth = _getDocumentState.clientWidth,
17526      clientHeight = _getDocumentState.clientHeight;
17527
17528  var scrollOffsetValue = config.scrollOffsetValue;
17529  var scrollOffsetUnit = config.scrollOffsetUnit;
17530  var isPX = scrollOffsetUnit === 'PX';
17531  var offsetPadding = isPX ? scrollOffsetValue : clientHeight * (scrollOffsetValue || 0) / 100;
17532  return areBoxesIntersecting(element.getBoundingClientRect(), {
17533    left: 0,
17534    top: offsetPadding,
17535    right: clientWidth,
17536    bottom: clientHeight - offsetPadding
17537  });
17538};
17539
17540var whenComponentActiveChange = function whenComponentActiveChange(handler) {
17541  return function (options, oldState) {
17542    var type = options.nativeEvent.type; // prettier-ignore
17543
17544    var isActive = [COMPONENT_ACTIVE, COMPONENT_INACTIVE].indexOf(type) !== -1 ? type === COMPONENT_ACTIVE : oldState.isActive;
17545    var newState = (0, _extends2["default"])({}, oldState, {
17546      isActive: isActive
17547    });
17548
17549    if (!oldState || newState.isActive !== oldState.isActive) {
17550      return handler(options, newState) || newState;
17551    }
17552
17553    return newState;
17554  };
17555};
17556
17557var whenElementHoverChange = function whenElementHoverChange(handler) {
17558  return function (options, oldState) {
17559    var newState = {
17560      elementHovered: isElementHovered(options)
17561    };
17562
17563    if (oldState ? newState.elementHovered !== oldState.elementHovered : newState.elementHovered) {
17564      return handler(options, newState) || newState;
17565    }
17566
17567    return newState;
17568  };
17569}; // $FlowFixMe
17570
17571
17572var whenElementVisibiltyChange = function whenElementVisibiltyChange(handler) {
17573  return function (options, oldState) {
17574    var newState = (0, _extends2["default"])({}, oldState, {
17575      elementVisible: isElementVisible(options)
17576    });
17577
17578    if (oldState ? newState.elementVisible !== oldState.elementVisible : newState.elementVisible) {
17579      return handler(options, newState) || newState;
17580    }
17581
17582    return newState;
17583  };
17584}; // $FlowFixMe
17585
17586
17587var whenScrollDirectionChange = function whenScrollDirectionChange(handler) {
17588  return function (options) {
17589    var oldState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
17590
17591    var _getDocumentState2 = getDocumentState(),
17592        scrollTop = _getDocumentState2.stiffScrollTop,
17593        scrollHeight = _getDocumentState2.scrollHeight,
17594        innerHeight = _getDocumentState2.innerHeight;
17595
17596    var _options$event = options.event,
17597        config = _options$event.config,
17598        eventTypeId = _options$event.eventTypeId;
17599    var scrollOffsetValue = config.scrollOffsetValue,
17600        scrollOffsetUnit = config.scrollOffsetUnit;
17601    var isPX = scrollOffsetUnit === 'PX';
17602    var scrollHeightBounds = scrollHeight - innerHeight; // percent top since innerHeight may change for mobile devices which also changes the scrollTop value.
17603
17604    var percentTop = Number((scrollTop / scrollHeightBounds).toFixed(2)); // no state change
17605
17606    if (oldState && oldState.percentTop === percentTop) {
17607      return oldState;
17608    }
17609
17610    var scrollTopPadding = (isPX ? scrollOffsetValue : innerHeight * (scrollOffsetValue || 0) / 100) / scrollHeightBounds;
17611    var scrollingDown;
17612    var scrollDirectionChanged;
17613    var anchorTop = 0;
17614
17615    if (oldState) {
17616      scrollingDown = percentTop > oldState.percentTop;
17617      scrollDirectionChanged = oldState.scrollingDown !== scrollingDown;
17618      anchorTop = scrollDirectionChanged ? percentTop : oldState.anchorTop;
17619    }
17620
17621    var inBounds = eventTypeId === PAGE_SCROLL_DOWN ? percentTop >= anchorTop + scrollTopPadding : percentTop <= anchorTop - scrollTopPadding;
17622    var newState = (0, _extends2["default"])({}, oldState, {
17623      percentTop: percentTop,
17624      inBounds: inBounds,
17625      anchorTop: anchorTop,
17626      scrollingDown: scrollingDown
17627    });
17628
17629    if (oldState && inBounds && (scrollDirectionChanged || newState.inBounds !== oldState.inBounds)) {
17630      return handler(options, newState) || newState;
17631    }
17632
17633    return newState;
17634  };
17635};
17636
17637var pointIntersects = function pointIntersects(point, rect) {
17638  return point.left > rect.left && point.left < rect.right && point.top > rect.top && point.top < rect.bottom;
17639};
17640
17641var whenPageLoadFinish = function whenPageLoadFinish(handler) {
17642  return function (options, oldState) {
17643    var newState = {
17644      finished: document.readyState === 'complete'
17645    };
17646
17647    if (newState.finished && !(oldState && oldState.finshed)) {
17648      handler(options);
17649    }
17650
17651    return newState;
17652  };
17653};
17654
17655var whenPageLoadStart = function whenPageLoadStart(handler) {
17656  return function (options, oldState) {
17657    var newState = {
17658      started: true
17659    };
17660
17661    if (!oldState) {
17662      handler(options);
17663    }
17664
17665    return newState;
17666  };
17667};
17668
17669var whenClickCountChange = function whenClickCountChange(handler) {
17670  return function (options) {
17671    var oldState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
17672      clickCount: 0
17673    };
17674    var newState = {
17675      clickCount: oldState.clickCount % 2 + 1
17676    };
17677
17678    if (newState.clickCount !== oldState.clickCount) {
17679      return handler(options, newState) || newState;
17680    }
17681
17682    return newState;
17683  };
17684};
17685
17686var getComponentActiveOptions = function getComponentActiveOptions() {
17687  var allowNestedChildrenEvents = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
17688  return (0, _extends2["default"])({}, baseActivityActionGroupOptions, {
17689    handler: withFilter(allowNestedChildrenEvents ? isOrContainsElement : isElement, whenComponentActiveChange(function (options, state) {
17690      return state.isActive ? baseActionGroupOptions.handler(options, state) : state;
17691    }))
17692  });
17693};
17694
17695var getComponentInactiveOptions = function getComponentInactiveOptions() {
17696  var allowNestedChildrenEvents = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
17697  return (0, _extends2["default"])({}, baseActivityActionGroupOptions, {
17698    handler: withFilter(allowNestedChildrenEvents ? isOrContainsElement : isElement, whenComponentActiveChange(function (options, state) {
17699      return !state.isActive ? baseActionGroupOptions.handler(options, state) : state;
17700    }))
17701  });
17702};
17703
17704var scrollIntoOutOfViewOptions = (0, _extends2["default"])({}, baseScrollActionGroupOptions, {
17705  handler: whenElementVisibiltyChange(function (options, state) {
17706    var elementVisible = state.elementVisible;
17707    var event = options.event,
17708        store = options.store;
17709
17710    var _store$getState2 = store.getState(),
17711        ixData = _store$getState2.ixData;
17712
17713    var events = ixData.events; // trigger the handler only once if only one of SCROLL_INTO or SCROLL_OUT_OF event types
17714    // are registered.
17715
17716    if (!events[event.action.config.autoStopEventId] && state.triggered) {
17717      return state;
17718    }
17719
17720    if (event.eventTypeId === SCROLL_INTO_VIEW === elementVisible) {
17721      actionGroupCreator(options);
17722      return (0, _extends2["default"])({}, state, {
17723        triggered: true
17724      });
17725    } else {
17726      return state;
17727    }
17728  })
17729});
17730var MOUSE_OUT_ROUND_THRESHOLD = 0.05;
17731
17732var _default = (_default2 = {}, (0, _defineProperty2["default"])(_default2, SLIDER_ACTIVE, getComponentActiveOptions()), (0, _defineProperty2["default"])(_default2, SLIDER_INACTIVE, getComponentInactiveOptions()), (0, _defineProperty2["default"])(_default2, DROPDOWN_OPEN, getComponentActiveOptions()), (0, _defineProperty2["default"])(_default2, DROPDOWN_CLOSE, getComponentInactiveOptions()), (0, _defineProperty2["default"])(_default2, NAVBAR_OPEN, getComponentActiveOptions(false)), (0, _defineProperty2["default"])(_default2, NAVBAR_CLOSE, getComponentInactiveOptions(false)), (0, _defineProperty2["default"])(_default2, TAB_ACTIVE, getComponentActiveOptions()), (0, _defineProperty2["default"])(_default2, TAB_INACTIVE, getComponentInactiveOptions()), (0, _defineProperty2["default"])(_default2, ECOMMERCE_CART_OPEN, {
17733  types: 'ecommerce-cart-open',
17734  handler: withFilter(isOrContainsElement, actionGroupCreator)
17735}), (0, _defineProperty2["default"])(_default2, ECOMMERCE_CART_CLOSE, {
17736  types: 'ecommerce-cart-close',
17737  handler: withFilter(isOrContainsElement, actionGroupCreator)
17738}), (0, _defineProperty2["default"])(_default2, MOUSE_CLICK, {
17739  types: 'click',
17740  handler: withFilter(isOrContainsElement, whenClickCountChange(function (options, _ref6) {
17741    var clickCount = _ref6.clickCount;
17742
17743    if (hasAutoStopEvent(options)) {
17744      clickCount === 1 && actionGroupCreator(options);
17745    } else {
17746      actionGroupCreator(options);
17747    }
17748  }))
17749}), (0, _defineProperty2["default"])(_default2, MOUSE_SECOND_CLICK, {
17750  types: 'click',
17751  handler: withFilter(isOrContainsElement, whenClickCountChange(function (options, _ref7) {
17752    var clickCount = _ref7.clickCount;
17753
17754    if (clickCount === 2) {
17755      actionGroupCreator(options);
17756    }
17757  }))
17758}), (0, _defineProperty2["default"])(_default2, MOUSE_DOWN, (0, _extends2["default"])({}, baseActionGroupOptions, {
17759  types: 'mousedown'
17760})), (0, _defineProperty2["default"])(_default2, MOUSE_UP, (0, _extends2["default"])({}, baseActionGroupOptions, {
17761  types: 'mouseup'
17762})), (0, _defineProperty2["default"])(_default2, MOUSE_OVER, {
17763  types: MOUSE_OVER_OUT_TYPES,
17764  handler: withFilter(isOrContainsElement, whenElementHoverChange(function (options, state) {
17765    if (state.elementHovered) {
17766      actionGroupCreator(options);
17767    }
17768  }))
17769}), (0, _defineProperty2["default"])(_default2, MOUSE_OUT, {
17770  types: MOUSE_OVER_OUT_TYPES,
17771  handler: withFilter(isOrContainsElement, whenElementHoverChange(function (options, state) {
17772    if (!state.elementHovered) {
17773      actionGroupCreator(options);
17774    }
17775  }))
17776}), (0, _defineProperty2["default"])(_default2, MOUSE_MOVE, {
17777  types: 'mousemove mouseout scroll',
17778  handler: function handler( // $FlowFixMe
17779  _ref8) {
17780    var store = _ref8.store,
17781        element = _ref8.element,
17782        eventConfig = _ref8.eventConfig,
17783        nativeEvent = _ref8.nativeEvent,
17784        eventStateKey = _ref8.eventStateKey;
17785    var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
17786      clientX: 0,
17787      clientY: 0,
17788      pageX: 0,
17789      pageY: 0
17790    };
17791    var basedOn = eventConfig.basedOn,
17792        selectedAxis = eventConfig.selectedAxis,
17793        continuousParameterGroupId = eventConfig.continuousParameterGroupId,
17794        reverse = eventConfig.reverse,
17795        _eventConfig$restingS = eventConfig.restingState,
17796        restingState = _eventConfig$restingS === void 0 ? 0 : _eventConfig$restingS;
17797    var _nativeEvent$clientX = nativeEvent.clientX,
17798        clientX = _nativeEvent$clientX === void 0 ? state.clientX : _nativeEvent$clientX,
17799        _nativeEvent$clientY = nativeEvent.clientY,
17800        clientY = _nativeEvent$clientY === void 0 ? state.clientY : _nativeEvent$clientY,
17801        _nativeEvent$pageX = nativeEvent.pageX,
17802        pageX = _nativeEvent$pageX === void 0 ? state.pageX : _nativeEvent$pageX,
17803        _nativeEvent$pageY = nativeEvent.pageY,
17804        pageY = _nativeEvent$pageY === void 0 ? state.pageY : _nativeEvent$pageY;
17805    var isXAxis = selectedAxis === 'X_AXIS';
17806    var isMouseOut = nativeEvent.type === 'mouseout';
17807    var value = restingState / 100;
17808    var namespacedParameterId = continuousParameterGroupId;
17809    var elementHovered = false;
17810
17811    switch (basedOn) {
17812      case _constants.EventBasedOn.VIEWPORT:
17813        {
17814          value = isXAxis ? Math.min(clientX, window.innerWidth) / window.innerWidth : Math.min(clientY, window.innerHeight) / window.innerHeight;
17815          break;
17816        }
17817
17818      case _constants.EventBasedOn.PAGE:
17819        {
17820          var _getDocumentState3 = getDocumentState(),
17821              scrollLeft = _getDocumentState3.scrollLeft,
17822              scrollTop = _getDocumentState3.scrollTop,
17823              scrollWidth = _getDocumentState3.scrollWidth,
17824              scrollHeight = _getDocumentState3.scrollHeight;
17825
17826          value = isXAxis ? Math.min(scrollLeft + pageX, scrollWidth) / scrollWidth : Math.min(scrollTop + pageY, scrollHeight) / scrollHeight;
17827          break;
17828        }
17829
17830      case _constants.EventBasedOn.ELEMENT:
17831      default:
17832        {
17833          namespacedParameterId = getNamespacedParameterId(eventStateKey, continuousParameterGroupId);
17834          var isMouseEvent = nativeEvent.type.indexOf('mouse') === 0; // Use isOrContainsElement for mouse events since they are fired from the target
17835
17836          if (isMouseEvent && isOrContainsElement({
17837            element: element,
17838            nativeEvent: nativeEvent
17839          }) !== true) {
17840            break;
17841          }
17842
17843          var rect = element.getBoundingClientRect();
17844          var left = rect.left,
17845              top = rect.top,
17846              width = rect.width,
17847              height = rect.height; // Otherwise we'll need to calculate the mouse position from the previous handler state
17848          // against the target element's rect
17849
17850          if (!isMouseEvent && !pointIntersects({
17851            left: clientX,
17852            top: clientY
17853          }, rect)) {
17854            break;
17855          }
17856
17857          elementHovered = true;
17858          value = isXAxis ? (clientX - left) / width : (clientY - top) / height;
17859          break;
17860        }
17861    } // cover case where the event is a mouse out, but the value is not quite at 100%
17862
17863
17864    if (isMouseOut && (value > 1 - MOUSE_OUT_ROUND_THRESHOLD || value < MOUSE_OUT_ROUND_THRESHOLD)) {
17865      value = Math.round(value);
17866    } // Only update based on element if the mouse is moving over or has just left the element
17867
17868
17869    if (basedOn !== _constants.EventBasedOn.ELEMENT || elementHovered || // $FlowFixMe
17870    elementHovered !== state.elementHovered) {
17871      value = reverse ? 1 - value : value;
17872      store.dispatch((0, _IX2EngineActions.parameterChanged)(namespacedParameterId, value));
17873    }
17874
17875    return {
17876      elementHovered: elementHovered,
17877      clientX: clientX,
17878      clientY: clientY,
17879      pageX: pageX,
17880      pageY: pageY
17881    };
17882  }
17883}), (0, _defineProperty2["default"])(_default2, PAGE_SCROLL, {
17884  types: SCROLL_EVENT_TYPES,
17885  // $FlowFixMe
17886  handler: function handler(_ref9) {
17887    var store = _ref9.store,
17888        eventConfig = _ref9.eventConfig;
17889    var continuousParameterGroupId = eventConfig.continuousParameterGroupId,
17890        reverse = eventConfig.reverse;
17891
17892    var _getDocumentState4 = getDocumentState(),
17893        scrollTop = _getDocumentState4.scrollTop,
17894        scrollHeight = _getDocumentState4.scrollHeight,
17895        clientHeight = _getDocumentState4.clientHeight;
17896
17897    var value = scrollTop / (scrollHeight - clientHeight);
17898    value = reverse ? 1 - value : value;
17899    store.dispatch((0, _IX2EngineActions.parameterChanged)(continuousParameterGroupId, value));
17900  }
17901}), (0, _defineProperty2["default"])(_default2, SCROLLING_IN_VIEW, {
17902  types: SCROLL_EVENT_TYPES,
17903  handler: function handler( // $FlowFixMe
17904  _ref10) {
17905    var element = _ref10.element,
17906        store = _ref10.store,
17907        eventConfig = _ref10.eventConfig,
17908        eventStateKey = _ref10.eventStateKey;
17909    var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
17910      scrollPercent: 0
17911    };
17912
17913    var _getDocumentState5 = getDocumentState(),
17914        scrollLeft = _getDocumentState5.scrollLeft,
17915        scrollTop = _getDocumentState5.scrollTop,
17916        scrollWidth = _getDocumentState5.scrollWidth,
17917        scrollHeight = _getDocumentState5.scrollHeight,
17918        visibleHeight = _getDocumentState5.clientHeight;
17919
17920    var basedOn = eventConfig.basedOn,
17921        selectedAxis = eventConfig.selectedAxis,
17922        continuousParameterGroupId = eventConfig.continuousParameterGroupId,
17923        startsEntering = eventConfig.startsEntering,
17924        startsExiting = eventConfig.startsExiting,
17925        addEndOffset = eventConfig.addEndOffset,
17926        addStartOffset = eventConfig.addStartOffset,
17927        _eventConfig$addOffse = eventConfig.addOffsetValue,
17928        addOffsetValue = _eventConfig$addOffse === void 0 ? 0 : _eventConfig$addOffse,
17929        _eventConfig$endOffse = eventConfig.endOffsetValue,
17930        endOffsetValue = _eventConfig$endOffse === void 0 ? 0 : _eventConfig$endOffse;
17931    var isXAxis = selectedAxis === 'X_AXIS';
17932
17933    if (basedOn === _constants.EventBasedOn.VIEWPORT) {
17934      var value = isXAxis ? scrollLeft / scrollWidth : scrollTop / scrollHeight;
17935
17936      if (value !== state.scrollPercent) {
17937        store.dispatch((0, _IX2EngineActions.parameterChanged)(continuousParameterGroupId, value));
17938      }
17939
17940      return {
17941        scrollPercent: value
17942      };
17943    } else {
17944      var namespacedParameterId = getNamespacedParameterId(eventStateKey, continuousParameterGroupId);
17945      var elementRect = element.getBoundingClientRect();
17946      var offsetStartPerc = (addStartOffset ? addOffsetValue : 0) / 100;
17947      var offsetEndPerc = (addEndOffset ? endOffsetValue : 0) / 100; // flip the offset percentages depending on start / exit type
17948
17949      offsetStartPerc = startsEntering ? offsetStartPerc : 1 - offsetStartPerc;
17950      offsetEndPerc = startsExiting ? offsetEndPerc : 1 - offsetEndPerc;
17951      var offsetElementTop = elementRect.top + Math.min(elementRect.height * offsetStartPerc, visibleHeight);
17952      var offsetElementBottom = elementRect.top + elementRect.height * offsetEndPerc;
17953      var offsetHeight = offsetElementBottom - offsetElementTop;
17954      var fixedScrollHeight = Math.min(visibleHeight + offsetHeight, scrollHeight);
17955      var fixedScrollTop = Math.min(Math.max(0, visibleHeight - offsetElementTop), fixedScrollHeight);
17956      var fixedScrollPerc = fixedScrollTop / fixedScrollHeight;
17957
17958      if (fixedScrollPerc !== state.scrollPercent) {
17959        store.dispatch((0, _IX2EngineActions.parameterChanged)(namespacedParameterId, fixedScrollPerc));
17960      }
17961
17962      return {
17963        scrollPercent: fixedScrollPerc
17964      };
17965    }
17966  }
17967}), (0, _defineProperty2["default"])(_default2, SCROLL_INTO_VIEW, scrollIntoOutOfViewOptions), (0, _defineProperty2["default"])(_default2, SCROLL_OUT_OF_V
17967IEW, scrollIntoOutOfViewOptions), (0, _defineProperty2["default"])(_default2, PAGE_SCROLL_DOWN, (0, _extends2["default"])({}, baseScrollActionGroupOptions, {
17968  handler: whenScrollDirectionChange(function (options, state) {
17969    if (state.scrollingDown) {
17970      actionGroupCreator(options);
17971    }
17972  })
17973})), (0, _defineProperty2["default"])(_default2, PAGE_SCROLL_UP, (0, _extends2["default"])({}, baseScrollActionGroupOptions, {
17974  handler: whenScrollDirectionChange(function (options, state) {
17975    if (!state.scrollingDown) {
17976      actionGroupCreator(options);
17977    }
17978  })
17979})), (0, _defineProperty2["default"])(_default2, PAGE_FINISH, {
17980  types: 'readystatechange IX2_PAGE_UPDATE',
17981  handler: withFilter(isElement, whenPageLoadFinish(actionGroupCreator))
17982}), (0, _defineProperty2["default"])(_default2, PAGE_START, {
17983  types: 'readystatechange IX2_PAGE_UPDATE',
17984  handler: withFilter(isElement, whenPageLoadStart(actionGroupCreator))
17985}), _default2);
17986
17987exports["default"] = _default;
17988
17989/***/ }),
17990/* 313 */
17991/***/ (function(module, exports, __webpack_require__) {
17992
vendor: 4,744 bytes, lines 17993-18172
17993var createFlow = __webpack_require__(314);
17994
17995/**
17996 * Creates a function that returns the result of invoking the given functions
17997 * with the `this` binding of the created function, where each successive
17998 * invocation is supplied the return value of the previous.
17999 *
18000 * @static
18001 * @memberOf _
18002 * @since 3.0.0
18003 * @category Util
18004 * @param {...(Function|Function[])} [funcs] The functions to invoke.
18005 * @returns {Function} Returns the new composite function.
18006 * @see _.flowRight
18007 * @example
18008 *
18009 * function square(n) {
18010 *   return n * n;
18011 * }
18012 *
18013 * var addSquare = _.flow([_.add, square]);
18014 * addSquare(1, 2);
18015 * // => 9
18016 */
18017var flow = createFlow();
18018
18019module.exports = flow;
18020
18021
18022/***/ }),
18023/* 314 */
18024/***/ (function(module, exports, __webpack_require__) {
18025
18026var LodashWrapper = __webpack_require__(66),
18027    flatRest = __webpack_require__(315),
18028    getData = __webpack_require__(127),
18029    getFuncName = __webpack_require__(128),
18030    isArray = __webpack_require__(2),
18031    isLaziable = __webpack_require__(328);
18032
18033/** Error message constants. */
18034var FUNC_ERROR_TEXT = 'Expected a function';
18035
18036/** Used to compose bitmasks for function metadata. */
18037var WRAP_CURRY_FLAG = 8,
18038    WRAP_PARTIAL_FLAG = 32,
18039    WRAP_ARY_FLAG = 128,
18040    WRAP_REARG_FLAG = 256;
18041
18042/**
18043 * Creates a `_.flow` or `_.flowRight` function.
18044 *
18045 * @private
18046 * @param {boolean} [fromRight] Specify iterating from right to left.
18047 * @returns {Function} Returns the new flow function.
18048 */
18049function createFlow(fromRight) {
18050  return flatRest(function(funcs) {
18051    var length = funcs.length,
18052        index = length,
18053        prereq = LodashWrapper.prototype.thru;
18054
18055    if (fromRight) {
18056      funcs.reverse();
18057    }
18058    while (index--) {
18059      var func = funcs[index];
18060      if (typeof func != 'function') {
18061        throw new TypeError(FUNC_ERROR_TEXT);
18062      }
18063      if (prereq && !wrapper && getFuncName(func) == 'wrapper') {
18064        var wrapper = new LodashWrapper([], true);
18065      }
18066    }
18067    index = wrapper ? index : length;
18068    while (++index < length) {
18069      func = funcs[index];
18070
18071      var funcName = getFuncName(func),
18072          data = funcName == 'wrapper' ? getData(func) : undefined;
18073
18074      if (data && isLaziable(data[0]) &&
18075            data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&
18076            !data[4].length && data[9] == 1
18077          ) {
18078        wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);
18079      } else {
18080        wrapper = (func.length == 1 && isLaziable(func))
18081          ? wrapper[funcName]()
18082          : wrapper.thru(func);
18083      }
18084    }
18085    return function() {
18086      var args = arguments,
18087          value = args[0];
18088
18089      if (wrapper && args.length == 1 && isArray(value)) {
18090        return wrapper.plant(value).value();
18091      }
18092      var index = 0,
18093          result = length ? funcs[index].apply(this, args) : value;
18094
18095      while (++index < length) {
18096        result = funcs[index].call(this, result);
18097      }
18098      return result;
18099    };
18100  });
18101}
18102
18103module.exports = createFlow;
18104
18105
18106/***/ }),
18107/* 315 */
18108/***/ (function(module, exports, __webpack_require__) {
18109
18110var flatten = __webpack_require__(316),
18111    overRest = __webpack_require__(319),
18112    setToString = __webpack_require__(321);
18113
18114/**
18115 * A specialized version of `baseRest` which flattens the rest array.
18116 *
18117 * @private
18118 * @param {Function} func The function to apply a rest parameter to.
18119 * @returns {Function} Returns the new function.
18120 */
18121function flatRest(func) {
18122  return setToString(overRest(func, undefined, flatten), func + '');
18123}
18124
18125module.exports = flatRest;
18126
18127
18128/***/ }),
18129/* 316 */
18130/***/ (function(module, exports, __webpack_require__) {
18131
18132var baseFlatten = __webpack_require__(317);
18133
18134/**
18135 * Flattens `array` a single level deep.
18136 *
18137 * @static
18138 * @memberOf _
18139 * @since 0.1.0
18140 * @category Array
18141 * @param {Array} array The array to flatten.
18142 * @returns {Array} Returns the new flattened array.
18143 * @example
18144 *
18145 * _.flatten([1, [2, [3, [4]], 5]]);
18146 * // => [1, 2, [3, [4]], 5]
18147 */
18148function flatten(array) {
18149  var length = array == null ? 0 : array.length;
18150  return length ? baseFlatten(array, 1) : [];
18151}
18152
18153module.exports = flatten;
18154
18155
18156/***/ }),
18157/* 317 */
18158/***/ (function(module, exports, __webpack_require__) {
18159
18160var arrayPush = __webpack_require__(52),
18161    isFlattenable = __webpack_require__(318);
18162
18163/**
18164 * The base implementation of `_.flatten` with support for restricting flattening.
18165 *
18166 * @private
18167 * @param {Array} array The array to flatten.
18168 * @param {number} depth The maximum recursion depth.
18169 * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.
18170 * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.
18171 * @param {Array} [result=[]] The initial result value.
18172 * @returns {Array} Returns the new flattened array.
vendor: 4,491 bytes, lines 18173-18344
18173 */
18174function baseFlatten(array, depth, predicate, isStrict, result) {
18175  var index = -1,
18176      length = array.length;
18177
18178  predicate || (predicate = isFlattenable);
18179  result || (result = []);
18180
18181  while (++index < length) {
18182    var value = array[index];
18183    if (depth > 0 && predicate(value)) {
18184      if (depth > 1) {
18185        // Recursively flatten arrays (susceptible to call stack limits).
18186        baseFlatten(value, depth - 1, predicate, isStrict, result);
18187      } else {
18188        arrayPush(result, value);
18189      }
18190    } else if (!isStrict) {
18191      result[result.length] = value;
18192    }
18193  }
18194  return result;
18195}
18196
18197module.exports = baseFlatten;
18198
18199
18200/***/ }),
18201/* 318 */
18202/***/ (function(module, exports, __webpack_require__) {
18203
18204var Symbol = __webpack_require__(23),
18205    isArguments = __webpack_require__(36),
18206    isArray = __webpack_require__(2);
18207
18208/** Built-in value references. */
18209var spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;
18210
18211/**
18212 * Checks if `value` is a flattenable `arguments` object or array.
18213 *
18214 * @private
18215 * @param {*} value The value to check.
18216 * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.
18217 */
18218function isFlattenable(value) {
18219  return isArray(value) || isArguments(value) ||
18220    !!(spreadableSymbol && value && value[spreadableSymbol]);
18221}
18222
18223module.exports = isFlattenable;
18224
18225
18226/***/ }),
18227/* 319 */
18228/***/ (function(module, exports, __webpack_require__) {
18229
18230var apply = __webpack_require__(320);
18231
18232/* Built-in method references for those with the same name as other `lodash` methods. */
18233var nativeMax = Math.max;
18234
18235/**
18236 * A specialized version of `baseRest` which transforms the rest array.
18237 *
18238 * @private
18239 * @param {Function} func The function to apply a rest parameter to.
18240 * @param {number} [start=func.length-1] The start position of the rest parameter.
18241 * @param {Function} transform The rest array transform.
18242 * @returns {Function} Returns the new function.
18243 */
18244function overRest(func, start, transform) {
18245  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);
18246  return function() {
18247    var args = arguments,
18248        index = -1,
18249        length = nativeMax(args.length - start, 0),
18250        array = Array(length);
18251
18252    while (++index < length) {
18253      array[index] = args[start + index];
18254    }
18255    index = -1;
18256    var otherArgs = Array(start + 1);
18257    while (++index < start) {
18258      otherArgs[index] = args[index];
18259    }
18260    otherArgs[start] = transform(array);
18261    return apply(func, this, otherArgs);
18262  };
18263}
18264
18265module.exports = overRest;
18266
18267
18268/***/ }),
18269/* 320 */
18270/***/ (function(module, exports) {
18271
18272/**
18273 * A faster alternative to `Function#apply`, this function invokes `func`
18274 * with the `this` binding of `thisArg` and the arguments of `args`.
18275 *
18276 * @private
18277 * @param {Function} func The function to invoke.
18278 * @param {*} thisArg The `this` binding of `func`.
18279 * @param {Array} args The arguments to invoke `func` with.
18280 * @returns {*} Returns the result of `func`.
18281 */
18282function apply(func, thisArg, args) {
18283  switch (args.length) {
18284    case 0: return func.call(thisArg);
18285    case 1: return func.call(thisArg, args[0]);
18286    case 2: return func.call(thisArg, args[0], args[1]);
18287    case 3: return func.call(thisArg, args[0], args[1], args[2]);
18288  }
18289  return func.apply(thisArg, args);
18290}
18291
18292module.exports = apply;
18293
18294
18295/***/ }),
18296/* 321 */
18297/***/ (function(module, exports, __webpack_require__) {
18298
18299var baseSetToString = __webpack_require__(322),
18300    shortOut = __webpack_require__(324);
18301
18302/**
18303 * Sets the `toString` method of `func` to return `string`.
18304 *
18305 * @private
18306 * @param {Function} func The function to modify.
18307 * @param {Function} string The `toString` result.
18308 * @returns {Function} Returns `func`.
18309 */
18310var setToString = shortOut(baseSetToString);
18311
18312module.exports = setToString;
18313
18314
18315/***/ }),
18316/* 322 */
18317/***/ (function(module, exports, __webpack_require__) {
18318
18319var constant = __webpack_require__(323),
18320    defineProperty = __webpack_require__(125),
18321    identity = __webpack_require__(63);
18322
18323/**
18324 * The base implementation of `setToString` without support for hot loop shorting.
18325 *
18326 * @private
18327 * @param {Function} func The function to modify.
18328 * @param {Function} string The `toString` result.
18329 * @returns {Function} Returns `func`.
18330 */
18331var baseSetToString = !defineProperty ? identity : function(func, string) {
18332  return defineProperty(func, 'toString', {
18333    'configurable': true,
18334    'enumerable': false,
18335    'value': constant(string),
18336    'writable': true
18337  });
18338};
18339
18340module.exports = baseSetToString;
18341
18342
18343/***/ }),
18344/* 323 */
vendor: 7,235 bytes, lines 18345-18578
18345/***/ (function(module, exports) {
18346
18347/**
18348 * Creates a function that returns `value`.
18349 *
18350 * @static
18351 * @memberOf _
18352 * @since 2.4.0
18353 * @category Util
18354 * @param {*} value The value to return from the new function.
18355 * @returns {Function} Returns the new constant function.
18356 * @example
18357 *
18358 * var objects = _.times(2, _.constant({ 'a': 1 }));
18359 *
18360 * console.log(objects);
18361 * // => [{ 'a': 1 }, { 'a': 1 }]
18362 *
18363 * console.log(objects[0] === objects[1]);
18364 * // => true
18365 */
18366function constant(value) {
18367  return function() {
18368    return value;
18369  };
18370}
18371
18372module.exports = constant;
18373
18374
18375/***/ }),
18376/* 324 */
18377/***/ (function(module, exports) {
18378
18379/** Used to detect hot functions by number of calls within a span of milliseconds. */
18380var HOT_COUNT = 800,
18381    HOT_SPAN = 16;
18382
18383/* Built-in method references for those with the same name as other `lodash` methods. */
18384var nativeNow = Date.now;
18385
18386/**
18387 * Creates a function that'll short out and invoke `identity` instead
18388 * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`
18389 * milliseconds.
18390 *
18391 * @private
18392 * @param {Function} func The function to restrict.
18393 * @returns {Function} Returns the new shortable function.
18394 */
18395function shortOut(func) {
18396  var count = 0,
18397      lastCalled = 0;
18398
18399  return function() {
18400    var stamp = nativeNow(),
18401        remaining = HOT_SPAN - (stamp - lastCalled);
18402
18403    lastCalled = stamp;
18404    if (remaining > 0) {
18405      if (++count >= HOT_COUNT) {
18406        return arguments[0];
18407      }
18408    } else {
18409      count = 0;
18410    }
18411    return func.apply(undefined, arguments);
18412  };
18413}
18414
18415module.exports = shortOut;
18416
18417
18418/***/ }),
18419/* 325 */
18420/***/ (function(module, exports, __webpack_require__) {
18421
18422var WeakMap = __webpack_require__(109);
18423
18424/** Used to store function metadata. */
18425var metaMap = WeakMap && new WeakMap;
18426
18427module.exports = metaMap;
18428
18429
18430/***/ }),
18431/* 326 */
18432/***/ (function(module, exports) {
18433
18434/**
18435 * This method returns `undefined`.
18436 *
18437 * @static
18438 * @memberOf _
18439 * @since 2.3.0
18440 * @category Util
18441 * @example
18442 *
18443 * _.times(2, _.noop);
18444 * // => [undefined, undefined]
18445 */
18446function noop() {
18447  // No operation performed.
18448}
18449
18450module.exports = noop;
18451
18452
18453/***/ }),
18454/* 327 */
18455/***/ (function(module, exports) {
18456
18457/** Used to lookup unminified function names. */
18458var realNames = {};
18459
18460module.exports = realNames;
18461
18462
18463/***/ }),
18464/* 328 */
18465/***/ (function(module, exports, __webpack_require__) {
18466
18467var LazyWrapper = __webpack_require__(68),
18468    getData = __webpack_require__(127),
18469    getFuncName = __webpack_require__(128),
18470    lodash = __webpack_require__(329);
18471
18472/**
18473 * Checks if `func` has a lazy counterpart.
18474 *
18475 * @private
18476 * @param {Function} func The function to check.
18477 * @returns {boolean} Returns `true` if `func` has a lazy counterpart,
18478 *  else `false`.
18479 */
18480function isLaziable(func) {
18481  var funcName = getFuncName(func),
18482      other = lodash[funcName];
18483
18484  if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {
18485    return false;
18486  }
18487  if (func === other) {
18488    return true;
18489  }
18490  var data = getData(other);
18491  return !!data && func === data[0];
18492}
18493
18494module.exports = isLaziable;
18495
18496
18497/***/ }),
18498/* 329 */
18499/***/ (function(module, exports, __webpack_require__) {
18500
18501var LazyWrapper = __webpack_require__(68),
18502    LodashWrapper = __webpack_require__(66),
18503    baseLodash = __webpack_require__(67),
18504    isArray = __webpack_require__(2),
18505    isObjectLike = __webpack_require__(12),
18506    wrapperClone = __webpack_require__(330);
18507
18508/** Used for built-in method references. */
18509var objectProto = Object.prototype;
18510
18511/** Used to check objects for own properties. */
18512var hasOwnProperty = objectProto.hasOwnProperty;
18513
18514/**
18515 * Creates a `lodash` object which wraps `value` to enable implicit method
18516 * chain sequences. Methods that operate on and return arrays, collections,
18517 * and functions can be chained together. Methods that retrieve a single value
18518 * or may return a primitive value will automatically end the chain sequence
18519 * and return the unwrapped value. Otherwise, the value must be unwrapped
18520 * with `_#value`.
18521 *
18522 * Explicit chain sequences, which must be unwrapped with `_#value`, may be
18523 * enabled using `_.chain`.
18524 *
18525 * The execution of chained methods is lazy, that is, it's deferred until
18526 * `_#value` is implicitly or explicitly called.
18527 *
18528 * Lazy evaluation allows several methods to support shortcut fusion.
18529 * Shortcut fusion is an optimization to merge iteratee calls; this avoids
18530 * the creation of intermediate arrays and can greatly reduce the number of
18531 * iteratee executions. Sections of a chain sequence qualify for shortcut
18532 * fusion if the section is applied to an array and iteratees accept only
18533 * one argument. The heuristic for whether a section qualifies for shortcut
18534 * fusion is subject to change.
18535 *
18536 * Chaining is supported in custom builds as long as the `_#value` method is
18537 * directly or indirectly included in the build.
18538 *
18539 * In addition to lodash methods, wrappers have `Array` and `String` methods.
18540 *
18541 * The wrapper `Array` methods are:
18542 * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`
18543 *
18544 * The wrapper `String` methods are:
18545 * `replace` and `split`
18546 *
18547 * The wrapper methods that support shortcut fusion are:
18548 * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,
18549 * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,
18550 * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`
18551 *
18552 * The chainable wrapper methods are:
18553 * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,
18554 * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,
18555 * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,
18556 * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,
18557 * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,
18558 * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,
18559 * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,
18560 * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,
18561 * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,
18562 * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,
18563 * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,
18564 * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,
18565 * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,
18566 * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,
18567 * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,
18568 * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,
18569 * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,
18570 * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,
18571 * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,
18572 * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,
18573 * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,
18574 * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,
18575 * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,
18576 * `zipObject`, `zipObjectDeep`, and `zipWith`
18577 *
18578 * The wrapper methods that are **not** chainable by default are:
18579 * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,
18580 * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,
18581 * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,
18582 * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,
18583 * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,
18584 * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,
18585 * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,
18586 * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,
18587 * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,
18588 * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,
18589 * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,
18590 * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,
18591 * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,
18592 * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,
18593 * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,
18594 * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,
18595 * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,
18596 * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,
18597 * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,
18598 * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,
18599 * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,
18600 * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,
18601 * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,
18602 * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,
18603 * `upperFirst`, `value`, and `words`
18604 *
18605 * @name _
18606 * @constructor
18607 * @category Seq
18608 * @param {*} value The value to wrap in a `lodash` instance.
18609 * @returns {Object} Returns the new `lodash` wrapper instance.
18610 * @example
18611 *
18612 * function square(n) {
18613 *   return n * n;
18614 * }
18615 *
18616 * var wrapped = _([1, 2, 3]);
18617 *
18618 * // Returns an unwrapped value.
18619 * wrapped.reduce(_.add);
18620 * // => 6
18621 *
18622 * // Returns a wrapped value.
18623 * var squares = wrapped.map(square);
18624 *
18625 * _.isArray(squares);
18626 * // => false
18627 *
18628 * _.isArray(squares.value());
18629 * // => true
18630 */
18631function lodash(value) {
18632  if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {
18633    if (value instanceof LodashWrapper) {
18634      return value;
18635    }
18636    if (hasOwnProperty.call(value, '__wrapped__')) {
18637      return wrapperClone(value);
18638    }
18639  }
18640  return new LodashWrapper(value);
18641}
18642
18643// Ensure wrappers are instances of `baseLodash`.
18644lodash.prototype = baseLodash.prototype;
18645lodash.prototype.constructor = lodash;
18646
18647module.exports = lodash;
18648
18649
18650/***/ }),
18651/* 330 */
18652/***/ (function(module, exports, __webpack_require__) {
18653
18654var LazyWrapper = __webpack_require__(68),
18655    LodashWrapper = __webpack_require__(66),
18656    copyArray = __webpack_require__(331);
18657
18658/**
18659 * Creates a clone of `wrapper`.
18660 *
18661 * @private
18662 * @param {Object} wrapper The wrapper to clone.
18663 * @returns {Object} Returns the cloned wrapper.
18664 */
18665function wrapperClone(wrapper) {
18666  if (wrapper instanceof LazyWrapper) {
18667    return wrapper.clone();
18668  }
18669  var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);
18670  result.__actions__ = copyArray(wrapper.__actions__);
18671  result.__index__  = wrapper.__index__;
18672  result.__values__ = wrapper.__values__;
18673  return result;
18674}
18675
18676module.exports = wrapperClone;
18677
18678
18679/***/ }),
18680/* 331 */
18681/***/ (function(module, exports) {
18682
18683/**
18684 * Copies the values of `source` to `array`.
18685 *
18686 * @private
18687 * @param {Array} source The array to copy values from.
18688 * @param {Array} [array=[]] The array to copy values to.
18689 * @returns {Array} Returns `array`.
18690 */
18691function copyArray(source, array) {
18692  var index = -1,
18693      length = source.length;
18694
18695  array || (array = Array(length));
18696  while (++index < length) {
18697    array[index] = source[index];
18698  }
18699  return array;
18700}
18701
18702module.exports = copyArray;
18703
18704
18705/***/ }),
18706/* 332 */
18707/***/ (function(module, exports, __webpack_require__) {
18708
18709var baseClamp = __webpack_require__(333),
18710    toNumber = __webpack_require__(64);
18711
18712/**
18713 * Clamps `number` within the inclusive `lower` and `upper` bounds.
18714 *
18715 * @static
18716 * @memberOf _
18717 * @since 4.0.0
18718 * @category Number
18719 * @param {number} number The number to clamp.
18720 * @param {number} [lower] The lower bound.
18721 * @param {number} upper The upper bound.
18722 * @returns {number} Returns the clamped number.
18723 * @example
18724 *
18725 * _.clamp(-10, -5, 5);
18726 * // => -5
18727 *
18728 * _.clamp(10, -5, 5);
18729 * // => 5
18730 */
18731function clamp(number, lower, upper) {
18732  if (upper === undefined) {
18733    upper = lower;
18734    lower = undefined;
18735  }
18736  if (upper !== undefined) {
18737    upper = toNumber(upper);
18738    upper = upper === upper ? upper : 0;
18739  }
18740  if (lower !== undefined) {
18741    lower = toNumber(lower);
18742    lower = lower === lower ? lower : 0;
18743  }
18744  return baseClamp(toNumber(number), lower, upper);
18745}
18746
18747module.exports = clamp;
18748
18749
18750/***/ }),
18751/* 333 */
18752/***/ (function(module, exports) {
18753
18754/**
18755 * The base implementation of `_.clamp` which doesn't coerce arguments.
18756 *
18757 * @private
18758 * @param {number} number The number to clamp.
18759 * @param {number} [lower] The lower bound.
18760 * @param {number} upper The upper bound.
18761 * @returns {number} Returns the clamped number.
18762 */
18763function baseClamp(number, lower, upper) {
18764  if (number === number) {
18765    if (upper !== undefined) {
18766      number = number <= upper ? number : upper;
18767    }
18768    if (lower !== undefined) {
18769      number = number >= lower ? number : lower;
18770    }
18771  }
18772  return number;
18773}
18774
18775module.exports = baseClamp;
18776
18777
18778/***/ }),
18779/* 334 */
18780/***/ (function(module, exports, __webpack_require__) {
18781
18782"use strict";
18783 // @wf-will-never-add-flow-to-this-file
18784
18785/* globals window, document */
18786
18787/* eslint-disable no-var */
18788
18789/**
18790 * Webflow: Auto-select links to current page or section
18791 */
18792
18793var Webflow = __webpack_require__(3);
18794
18795Webflow.define('links', module.exports = function ($, _) {
18796  var api = {};
18797  var $win = $(window);
18798  var designer;
18799  var inApp = Webflow.env();
18800  var location = window.location;
18801  var tempLink = document.createElement('a');
18802  var linkCurrent = 'w--current';
18803  var indexPage = /index\.(html|php)$/;
18804  var dirList = /\/$/;
18805  var anchors;
18806  var slug; // -----------------------------------
18807  // Module methods
18808
18809  api.ready = api.design = api.preview = init; // -----------------------------------
18810  // Private methods
18811
18812  function init() {
18813    designer = inApp && Webflow.env('design');
18814    slug = Webflow.env('slug') || location.pathname || ''; // Reset scroll listener, init anchors
18815
18816    Webflow.scroll.off(scroll);
18817    anchors = []; // Test all links for a selectable href
18818
18819    var links = document.links;
18820
18821    for (var i = 0; i < links.length; ++i) {
18822      select(links[i]);
18823    } // Listen for scroll if any anchors exist
18824
18825
18826    if (anchors.length) {
18827      Webflow.scroll.on(scroll);
18828      scroll();
18829    }
18830  }
18831
18832  function select(link) {
18833    var href = designer && link.getAttribute('href-disabled') || link.getAttribute('href');
18834    tempLink.href = href; // Ignore any hrefs with a colon to safely avoid all uri schemes
18835
18836    if (href.indexOf(':') >= 0) {
18837      return;
18838    }
18839
18840    var $link = $(link); // Check for all links with hash (eg (this-host)(/this-path)#section) to this page
18841
18842    if (tempLink.hash.length > 1 && tempLink.host + tempLink.pathname === location.host + location.pathname) {
18843      // Ignore any hrefs with Google Translate type hash
18844      // Example: jQuery can't parse $('#googtrans(en|es)')
18845      // https://forum.webflow.com/t/dropdown-menus-not-working-on-site/87140
18846      if (!/^#[a-zA-Z0-9\-\_]+$/.test(tempLink.hash)) {
18847        return;
18848      }
18849
18850      var $section = $(tempLink.hash);
18851      $section.length && anchors.push({
18852        link: $link,
18853        sec: $section,
18854        active: false
18855      });
18856      return;
18857    } // Ignore empty # links
18858
18859
18860    if (href === '#' || href === '') {
18861      return;
18862    } // Determine whether the link should be selected
18863
18864
18865    var match = tempLink.href === location.href || href === slug || indexPage.test(href) && dirList.test(slug);
18866    setClass($link, linkCurrent, match);
18867  }
18868
18869  function scroll() {
18870    var viewTop = $win.scrollTop();
18871    var viewHeight = $win.height(); // Check each anchor for a section in view
18872
18873    _.each(anchors, function (anchor) {
18874      var $link = anchor.link;
18875      var $section = anchor.sec;
18876      var top = $section.offset().top;
18877      var height = $section.outerHeight();
18878      var offset = viewHeight * 0.5;
18879      var active = $section.is(':visible') && top + height - offset >= viewTop && top + offset <= viewTop + viewHeight;
18880
18881      if (anchor.active === active) {
18882        return;
18883      }
18884
18885      anchor.active = active;
18886      setClass($link, linkCurrent, active);
18887    });
18888  }
18889
18890  function setClass($elem, className, add) {
18891    var exists = $elem.hasClass(className);
18892
18893    if (add && exists) {
18894      return;
18895    }
18896
18897    if (!add && !exists) {
18898      return;
18899    }
18900
18901    add ? $elem.addClass(className) : $elem.removeClass(className);
18902  } // Export module
18903
18904
18905  return api;
18906});
18907
18908/***/ }),
18909/* 335 */
18910/***/ (function(module, exports, __webpack_require__) {
18911
18912"use strict";
18913 // @wf-will-never-add-flow-to-this-file
18914
18915/* globals window, document */
18916
18917/* eslint-disable no-var */
18918
18919/**
18920 * Webflow: Smooth scroll
18921 */
18922
18923var Webflow = __webpack_require__(3);
18924
18925Webflow.define('scroll', module.exports = function ($) {
18926  /**
18927   * A collection of namespaced events found in this module.
18928   * Namespaced events encapsulate our code, and make it safer and easier
18929   * for designers to apply custom code overrides.
18930   * @see https://api.jquery.com/on/#event-names
18931   * @typedef {Object.<string>} NamespacedEventsCollection
18932   */
18933  var NS_EVENTS = {
18934    WF_CLICK_EMPTY: 'click.wf-empty-link',
18935    WF_CLICK_SCROLL: 'click.wf-scroll'
18936  };
18937  var loc = window.location;
18938  var history = inIframe() ? null : window.history;
18939  var $win = $(window);
18940  var $doc = $(document);
18941  var $body = $(document.body);
18942
18943  var animate = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || function (fn) {
18944    window.setTimeout(fn, 15);
18945  };
18946
18947  var rootTag = Webflow.env('editor') ? '.w-editor-body' : 'body';
18948  var headerSelector = 'header, ' + rootTag + ' > .header, ' + rootTag + ' > .w-nav:not([data-no-scroll])';
18949  var emptyHrefSelector = 'a[href="#"]';
18950  /**
18951   * Select only links whose href:
18952   * - contains a #
18953   * - is not one of our namespaced TabLink elements
18954   * - is not _only_ a #
18955   */
18956
18957  var localHrefSelector = 'a[href*="#"]:not(.w-tab-link):not(' + emptyHrefSelector + ')';
18958  var scrollTargetOutlineCSS = '.wf-force-outline-none[tabindex="-1"]:focus{outline:none;}';
18959  var focusStylesEl = document.createElement('style');
18960  focusStylesEl.appendChild(document.createTextNode(scrollTargetOutlineCSS));
18961
18962  function inIframe() {
18963    try {
18964      return Boolean(window.frameElement);
18965    } catch (e) {
18966      return true;
18967    }
18968  }
18969
18970  var validHash = /^#[a-zA-Z0-9][\w:.-]*$/;
18971  /**
18972   * Determine if link navigates to current page
18973   * @param {HTMLAnchorElement} link
18974   */
18975
18976  function linksToCurrentPage(link) {
18977    return validHash.test(link.hash) && link.host + link.pathname === loc.host + loc.pathname;
18978  }
18979  /**
18980   * Check if the designer has indicated that this page should
18981   * have no scroll animation, or if the end user has set
18982   * prefers-reduced-motion in their OS
18983   */
18984
18985
18986  var reducedMotionMediaQuery = typeof window.matchMedia === 'function' && window.matchMedia('(prefers-reduced-motion: reduce)');
18987
18988  function reducedMotionEnabled() {
18989    return document.body.getAttribute('data-wf-scroll-motion') === 'none' || reducedMotionMediaQuery.matches;
18990  }
18991
18992  function setFocusable($el, action) {
18993    var initialTabindex;
18994
18995    switch (action) {
18996      case 'add':
18997        initialTabindex = $el.attr('tabindex');
18998
18999        if (initialTabindex) {
19000          $el.attr('data-wf-tabindex-swap', initialTabindex);
19001        } else {
19002          $el.attr('tabindex', '-1');
19003        }
19004
19005        break;
19006
19007      case 'remove':
19008        initialTabindex = $el.attr('data-wf-tabindex-swap');
19009
19010        if (initialTabindex) {
19011          $el.attr('tabindex', initialTabindex);
19012          $el.removeAttr('data-wf-tabindex-swap');
19013        } else {
19014          $el.removeAttr('tabindex');
19015        }
19016
19017        break;
19018    }
19019
19020    $el.toggleClass('wf-force-outline-none', action === 'add');
19021  }
19022  /**
19023   * Determine if we should execute custom scroll
19024   */
19025
19026
19027  function validateScroll(evt) {
19028    var target = evt.currentTarget;
19029
19030    if ( // Bail if in Designer
19031    Webflow.env('design') || // Ignore links being used by jQuery mobile
19032    window.$.mobile && /(?:^|\s)ui-link(?:$|\s)/.test(target.className)) {
19033      return;
19034    }
19035
19036    var hash = linksToCurrentPage(target) ? target.hash : '';
19037    if (hash === '') return;
19038    var $el = $(hash);
19039
19040    if (!$el.length) {
19041      return;
19042    }
19043
19044    if (evt) {
19045      evt.preventDefault();
19046      evt.stopPropagation();
19047    }
19048
19049    updateHistory(hash, evt);
19050    window.setTimeout(function () {
19051      scroll($el, function setFocus() {
19052        setFocusable($el, 'add');
19053        $el.get(0).focus({
19054          preventScroll: true
19055        });
19056        setFocusable($el, 'remove');
19057      });
19058    }, evt ? 0 : 300);
19059  }
19060
19061  function updateHistory(hash) {
19062    // Push new history state
19063    if (loc.hash !== hash && history && history.pushState && // Navigation breaks Chrome when the protocol is `file:`.
19064    !(Webflow.env.chrome && loc.protocol === 'file:')) {
19065      var oldHash = history.state && history.state.hash;
19066
19067      if (oldHash !== hash) {
19068        history.pushState({
19069          hash: hash
19070        }, '', hash);
19071      }
19072    }
19073  }
19074
19075  function scroll($targetEl, cb) {
19076    var start = $win.scrollTop();
19077    var end = calculateScrollEndPosition($targetEl);
19078    if (start === end) return;
19079    var duration = calculateScrollDuration($targetEl, start, end);
19080    var clock = Date.now();
19081
19082    var step = function step() {
19083      var elapsed = Date.now() - clock;
19084      window.scroll(0, getY(start, end, elapsed, duration));
19085
19086      if (elapsed <= duration) {
19087        animate(step);
19088      } else if (typeof cb === 'function') {
19089        cb();
19090      }
19091    };
19092
19093    animate(step);
19094  }
19095
19096  function calculateScrollEndPosition($targetEl) {
19097    // If a fixed header exists, offset for the height
19098    var $header = $(headerSelector);
19099    var offsetY = $header.css('position') === 'fixed' ? $header.outerHeight() : 0;
19100    var end = $targetEl.offset().top - offsetY; // If specified, scroll so that the element ends up in the middle of the viewport
19101
19102    if ($targetEl.data('scroll') === 'mid') {
19103      var available = $win.height() - offsetY;
19104      var elHeight = $targetEl.outerHeight();
19105
19106      if (elHeight < available) {
19107        end -= Math.round((available - elHeight) / 2);
19108      }
19109    }
19110
19111    return end;
19112  }
19113
19114  function calculateScrollDuration($targetEl, start, end) {
19115    if (reducedMotionEnabled()) return 0;
19116    var mult = 1; // Check for custom time multiplier on the body and the scroll target
19117
19118    $body.add($targetEl).each(function (_, el) {
19119      var time = parseFloat(el.getAttribute('data-scroll-time'));
19120
19121      if (!isNaN(time) && time >= 0) {
19122        mult = time;
19123      }
19124    });
19125    return (472.143 * Math.log(Math.abs(start - end) + 125) - 2000) * mult;
19126  }
19127
19128  function getY(start, end, elapsed, duration) {
19129    if (elapsed > duration) {
19130      return end;
19131    }
19132
19133    return start + (end - start) * ease(elapsed / duration);
19134  }
19135
19136  function ease(t) {
19137    return t < 0.5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1;
19138  }
19139
19140  function ready() {
19141    var WF_CLICK_EMPTY = NS_EVENTS.WF_CLICK_EMPTY,
19142        WF_CLICK_SCROLL = NS_EVENTS.WF_CLICK_SCROLL;
19143    $doc.on(WF_CLICK_SCROLL, localHrefSelector, validateScroll);
19144    /**
19145     * Prevent empty hash links from triggering scroll.
19146     * Legacy feature to preserve: use the default "#" link
19147     * to trigger an interaction, and do not want the page
19148     * to scroll to the top.
19149     */
19150
19151    $doc.on(WF_CLICK_EMPTY, emptyHrefSelector, function (e) {
19152      e.preventDefault();
19153    });
19154    document.head.insertBefore(focusStylesEl, document.head.firstChild);
19155  } // Export module
19156
19157
19158  return {
19159    ready: ready
19160  };
19161});
19162
19163/***/ }),
19164/* 336 */
19165/***/ (function(module, exports, __webpack_require__) {
19166
19167"use strict";
19168 // @wf-will-never-add-flow-to-this-file
19169
19170/* globals document, window */
19171
19172/* eslint-disable no-var */
19173
19174/**
19175 * Webflow: Touch events
19176 * Supports legacy 'tap' event
19177 * Adds a 'swipe' event to desktop and mobile
19178 */
19179
19180var Webflow = __webpack_require__(3);
19181
19182Webflow.define('touch', module.exports = function ($) {
19183  var api = {};
19184  var getSelection = window.getSelection; // Delegate all legacy 'tap' events to 'click'
19185
19186  $.event.special.tap = {
19187    bindType: 'click',
19188    delegateType: 'click'
19189  };
19190
19191  api.init = function (el) {
19192    el = typeof el === 'string' ? $(el).get(0) : el;
19193    return el ? new Touch(el) : null;
19194  };
19195
19196  function Touch(el) {
19197    var active = false;
19198    var useTouch = false;
19199    var thresholdX = Math.min(Math.round(window.innerWidth * 0.04), 40);
19200    var startX;
19201    var lastX;
19202    el.addEventListener('touchstart', start, false);
19203    el.addEventListener('touchmove', move, false);
19204    el.addEventListener('touchend', end, false);
19205    el.addEventListener('touchcancel', cancel, false);
19206    el.addEventListener('mousedown', start, false);
19207    el.addEventListener('mousemove', move, false);
19208    el.addEventListener('mouseup', end, false);
19209    el.addEventListener('mouseout', cancel, false);
19210
19211    function start(evt) {
19212      // We don’t handle multi-touch events yet.
19213      var touches = evt.touches;
19214
19215      if (touches && touches.length > 1) {
19216        return;
19217      }
19218
19219      active = true;
19220
19221      if (touches) {
19222        useTouch = true;
19223        startX = touches[0].clientX;
19224      } else {
19225        startX = evt.clientX;
19226      }
19227
19228      lastX = startX;
19229    }
19230
19231    function move(evt) {
19232      if (!active) {
19233        return;
19234      }
19235
19236      if (useTouch && evt.type === 'mousemove') {
19237        evt.preventDefault();
19238        evt.stopPropagation();
19239        return;
19240      }
19241
19242      var touches = evt.touches;
19243      var x = touches ? touches[0].clientX : evt.clientX;
19244      var velocityX = x - lastX;
19245      lastX = x; // Allow swipes while pointer is down, but prevent them during text selection
19246
19247      if (Math.abs(velocityX) > thresholdX && getSelection && String(getSelection()) === '') {
19248        triggerEvent('swipe', evt, {
19249          direction: velocityX > 0 ? 'right' : 'left'
19250        });
19251        cancel();
19252      }
19253    }
19254
19255    function end(evt) {
19256      if (!active) {
19257        return;
19258      }
19259
19260      active = false;
19261
19262      if (useTouch && evt.type === 'mouseup') {
19263        evt.preventDefault();
19264        evt.stopPropagation();
19265        useTouch = false;
19266        return;
19267      }
19268    }
19269
19270    function cancel() {
19271      active = false;
19272    }
19273
19274    function destroy() {
19275      el.removeEventListener('touchstart', start, false);
19276      el.removeEventListener('touchmove', move, false);
19277      el.removeEventListener('touchend', end, false);
19278      el.removeEventListener('touchcancel', cancel, false);
19279      el.removeEventListener('mousedown', start, false);
19280      el.removeEventListener('mousemove', move, false);
19281      el.removeEventListener('mouseup', end, false);
19282      el.removeEventListener('mouseout', cancel, false);
19283      el = null;
19284    } // Public instance methods
19285
19286
19287    this.destroy = destroy;
19288  } // Wrap native event to supoprt preventdefault + stopPropagation
19289
19290
19291  function triggerEvent(type, evt, data) {
19292    var newEvent = $.Event(type, {
19293      originalEvent: evt
19294    });
19295    $(evt.target).trigger(newEvent, data);
19296  } // Listen for touch events on all nodes by default.
19297
19298
19299  api.instance = api.init(document); // Export module
19300
19301  return api;
19302});
19303
19304/***/ }),
19305/* 337 */
19306/***/ (function(module, exports, __webpack_require__) {
19307
19308"use strict";
19309 // @wf-will-never-add-flow-to-this-file
19310
19311/* globals
19312  window,
19313  document,
19314  FormData,
19315  WEBFLOW_FORM_API_HOST,
19316  WEBFLOW_FORM_OLDIE_HOST
19317*/
19318
19319/* eslint-disable no-var */
19320
19321/**
19322 * Webflow: Forms
19323 */
19324
19325var _interopRequireDefault = __webpack_require__(0);
19326
19327var _slicedToArray2 = _interopRequireDefault(__webpack_require__(338));
19328
19329var Webflow = __webpack_require__(3);
19330
19331Webflow.define('forms', module.exports = function ($, _) {
19332  var api = {};
19333  var $doc = $(document);
19334  var $forms;
19335  var loc = window.location;
19336  var retro = window.XDomainRequest && !window.atob;
19337  var namespace = '.w-form';
19338  var siteId;
19339  var emailField = /e(-)?mail/i;
19340  var emailValue = /^\S+@\S+$/;
19341  var alert = window.alert;
19342  var inApp = Webflow.env();
19343  var listening;
19344  var formUrl;
19345  var signFileUrl; // MailChimp domains: list-manage.com + mirrors
19346
19347  var chimpRegex = /list-manage[1-9]?.com/i;
19348
19349  var disconnected = _.debounce(function () {
19350    alert('Oops! This page has improperly configured forms. Please contact your website administrator to fix this issue.');
19351  }, 100);
19352
19353  api.ready = api.design = api.preview = function () {
19354    // Init forms
19355    init(); // Wire document events on published site only once
19356
19357    if (!inApp && !listening) {
19358      addListeners();
19359    }
19360  };
19361
19362  function init() {
19363    siteId = $('html').attr('data-wf-site');
19364    formUrl = "https://webflow.com" + '/api/v1/form/' + siteId; // Work around same-protocol IE XDR limitation - without this IE9 and below forms won't submit
19365
19366    if (retro && formUrl.indexOf("https://webflow.com") >= 0) {
19367      formUrl = formUrl.replace("https://webflow.com", "https://formdata.webflow.com");
19368    }
19369
19370    signFileUrl = "".concat(formUrl, "/signFile");
19371    $forms = $(namespace + ' form');
19372
19373    if (!$forms.length) {
19374      return;
19375    }
19376
19377    $forms.each(build);
19378  }
19379
19380  function build(i, el) {
19381    // Store form state using namespace
19382    var $el = $(el);
19383    var data = $.data(el, namespace);
19384
19385    if (!data) {
19386      data = $.data(el, namespace, {
19387        form: $el
19388      });
19389    } // data.form
19390
19391
19392    reset(data);
19393    var wrap = $el.closest('div.w-form');
19394    data.done = wrap.find('> .w-form-done');
19395    data.fail = wrap.find('> .w-form-fail');
19396    data.fileUploads = wrap.find('.w-file-upload');
19397    data.fileUploads.each(function (j) {
19398      initFileUpload(j, data);
19399    }); // Accessiblity fixes
19400
19401    var formName = data.form.attr('aria-label') || data.form.attr('data-name') || 'Form';
19402
19403    if (!data.done.attr('aria-label')) {
19404      data.form.attr('aria-label', formName);
19405    }
19406
19407    data.done.attr('tabindex', '-1');
19408    data.done.attr('role', 'region');
19409
19410    if (!data.done.attr('aria-label')) {
19411      data.done.attr('aria-label', formName + ' success');
19412    }
19413
19414    data.fail.attr('tabindex', '-1');
19415    data.fail.attr('role', 'region');
19416
19417    if (!data.fail.attr('aria-label')) {
19418      data.fail.attr('aria-label', formName + ' failure');
19419    }
19420
19421    var action = data.action = $el.attr('action');
19422    data.handler = null;
19423    data.redirect = $el.attr('data-redirect'); // MailChimp form
19424
19425    if (chimpRegex.test(action)) {
19426      data.handler = submitMailChimp;
19427      return;
19428    } // Custom form action
19429
19430
19431    if (action) {
19432      return;
19433    } // Webflow forms for hosting accounts
19434
19435
19436    if (siteId) {
19437      data.handler = typeof hostedSubmitWebflow === 'function' ? hostedSubmitWebflow : exportedSubmitWebflow;
19438      return;
19439    } // Alert for disconnected Webflow forms
19440
19441
19442    disconnected();
19443  }
19444
19445  function addListeners() {
19446    listening = true; // Handle form submission for Webflow forms
19447
19448    $doc.on('submit', namespace + ' form', function (evt) {
19449      var data = $.data(this, namespace);
19450
19451      if (data.handler) {
19452        data.evt = evt;
19453        data.handler(data);
19454      }
19455    }); // handle checked ui for custom checkbox and radio button
19456
19457    var CHECKBOX_CLASS_NAME = '.w-checkbox-input';
19458    var RADIO_INPUT_CLASS_NAME = '.w-radio-input';
19459    var CHECKED_CLASS = 'w--redirected-checked';
19460    var FOCUSED_CLASS = 'w--redirected-focus';
19461    var FOCUSED_VISIBLE_CLASS = 'w--redirected-focus-visible';
19462    var focusVisibleSelectors = ':focus-visible, [data-wf-focus-visible]';
19463    var CUSTOM_CONTROLS = [['checkbox', CHECKBOX_CLASS_NAME], ['radio', RADIO_INPUT_CLASS_NAME]];
19464    $doc.on('change', namespace + " form input[type=\"checkbox\"]:not(" + CHECKBOX_CLASS_NAME + ')', function (evt) {
19465      $(evt.target).siblings(CHECKBOX_CLASS_NAME).toggleClass(CHECKED_CLASS);
19466    });
19467    $doc.on('change', namespace + " form input[type=\"radio\"]", function (evt) {
19468      $("input[name=\"".concat(evt.target.name, "\"]:not(").concat(CHECKBOX_CLASS_NAME, ")")).map(function (i, el) {
19469        return $(el).siblings(RADIO_INPUT_CLASS_NAME).removeClass(CHECKED_CLASS);
19470      });
19471      var $target = $(evt.target);
19472
19473      if (!$target.hasClass('w-radio-input')) {
19474        $target.siblings(RADIO_INPUT_CLASS_NAME).addClass(CHECKED_CLASS);
19475      }
19476    });
19477    CUSTOM_CONTROLS.forEach(function (_ref) {
19478      var _ref2 = (0, _slicedToArray2["default"])(_ref, 2),
19479          controlType = _ref2[0],
19480          customControlClassName = _ref2[1];
19481
19482      $doc.on('focus', namespace + " form input[type=\"".concat(controlType, "\"]:not(") + customControlClassName + ')', function (evt) {
19483        $(evt.target).siblings(customControlClassName).addClass(FOCUSED_CLASS);
19484        $(evt.target).filter(focusVisibleSelectors).siblings(customControlClassName).addClass(FOCUSED_VISIBLE_CLASS);
19485      });
19486      $doc.on('blur', namespace + " form input[type=\"".concat(controlType, "\"]:not(") + customControlClassName + ')', function (evt) {
19487        $(evt.target).siblings(customControlClassName).removeClass("".concat(FOCUSED_CLASS, " ").concat(FOCUSED_VISIBLE_CLASS));
19488      });
19489    });
19490  } // Reset data common to all submit handlers
19491
19492
19493  function reset(data) {
19494    var btn = data.btn = data.form.find(':input[type="submit"]');
19495    data.wait = data.btn.attr('data-wait') || null;
19496    data.success = false;
19497    btn.prop('disabled', false);
19498    data.label && btn.val(data.label);
19499  } // Disable submit button
19500
19501
19502  function disableBtn(data) {
19503    var btn = data.btn;
19504    var wait = data.wait;
19505    btn.prop('disabled', true); // Show wait text and store previous label
19506
19507    if (wait) {
19508      data.label = btn.val();
19509      btn.val(wait);
19510    }
19511  } // Find form fields, validate, and set value pairs
19512
19513
19514  function findFields(form, result) {
19515    var status = null;
19516    result = result || {}; // The ":input" selector is a jQuery shortcut to select all inputs, selects, textareas
19517
19518    form.find(':input:not([type="submit"]):not([type="file"])').each(function (i, el) {
19519      var field = $(el);
19520      var type = field.attr('type');
19521      var name = field.attr('data-name') || field.attr('name') || 'Field ' + (i + 1);
19522      var value = field.val();
19523
19524      if (type === 'checkbox') {
19525        value = field.is(':checked');
19526      } else if (type === 'radio') {
19527        // Radio group value already processed
19528        if (result[name] === null || typeof result[name] === 'string') {
19529          return;
19530        }
19531
19532        value = form.find('input[name="' + field.attr('name') + '"]:checked').val() || null;
19533      }
19534
19535      if (typeof value === 'string') {
19536        value = $.trim(value);
19537      }
19538
19539      result[name] = value;
19540      status = status || getStatus(field, type, name, value);
19541    });
19542    return status;
19543  }
19544
19545  function findFileUploads(form) {
19546    var result = {};
19547    form.find(':input[type="file"]').each(function (i, el) {
19548      var field = $(el);
19549      var name = field.attr('data-name') || field.attr('name') || 'File ' + (i + 1);
19550      var value = field.attr('data-value');
19551
19552      if (typeof value === 'string') {
19553        value = $.trim(value);
19554      }
19555
19556      result[name] = value;
19557    });
19558    return result;
19559  }
19560
19561  var trackingCookieNameMap = {
19562    _mkto_trk: 'marketo' // __hstc: 'hubspot',
19563
19564  };
19565
19566  function collectEnterpriseTrackingCookies() {
19567    var cookies = document.cookie.split('; ').reduce(function (acc, cookie) {
19568      var splitCookie = cookie.split('=');
19569      var name = splitCookie[0];
19570
19571      if (name in trackingCookieNameMap) {
19572        var mappedName = trackingCookieNameMap[name];
19573        var value = splitCookie.slice(1).join('=');
19574        acc[mappedName] = value;
19575      }
19576
19577      return acc;
19578    }, {});
19579    return cookies;
19580  }
19581
19582  function getStatus(field, type, name, value) {
19583    var status = null;
19584
19585    if (type === 'password') {
19586      status = 'Passwords cannot be submitted.';
19587    } else if (field.attr('required')) {
19588      if (!value) {
19589        status = 'Please fill out the required field: ' + name;
19590      } else if (emailField.test(field.attr('type'))) {
19591        if (!emailValue.test(value)) {
19592          status = 'Please enter a valid email address for: ' + name;
19593        }
19594      }
19595    } else if (name === 'g-recaptcha-response' && !value) {
19596      status = 'Please confirm you’re not a robot.';
19597    }
19598
19599    return status;
19600  }
19601
19602  function exportedSubmitWebflow(data) {
19603    preventDefault(data);
19604    afterSubmit(data);
19605  }
19606  /* WEBFLOW_HOSTED_BLOCK:START */
19607  // Submit form to Webflow
19608
19609
19610  function hostedSubmitWebflow(data) {
19611    reset(data);
19612    var form = data.form;
19613    var payload = {
19614      name: form.attr('data-name') || form.attr('name') || 'Untitled Form',
19615      source: loc.href,
19616      test: Webflow.env(),
19617      fields: {},
19618      fileUploads: {},
19619      dolphin: /pass[\s-_]?(word|code)|secret|login|credentials/i.test(form.html()),
19620      trackingCookies: collectEnterpriseTrackingCookies()
19621    };
19622    var wfFlow = form.attr('data-wf-flow');
19623
19624    if (wfFlow) {
19625      payload.wfFlow = wfFlow;
19626    }
19627
19628    preventDefault(data); // Find & populate all fields
19629
19630    var status = findFields(form, payload.fields);
19631
19632    if (status) {
19633      return alert(status);
19634    }
19635
19636    payload.fileUploads = findFileUploads(form); // Disable submit button
19637
19638    disableBtn(data); // Read site ID
19639    // NOTE: If this site is exported, the HTML tag must retain the data-wf-site attribute for forms to work
19640
19641    if (!siteId) {
19642      afterSubmit(data);
19643      return;
19644    }
19645
19646    $.ajax({
19647      url: formUrl,
19648      type: 'POST',
19649      data: payload,
19650      dataType: 'json',
19651      crossDomain: true
19652    }).done(function (response) {
19653      if (response && response.code === 200) {
19654        data.success = true;
19655      }
19656
19657      afterSubmit(data);
19658    }).fail(function () {
19659      afterSubmit(data);
19660    });
19661  }
19662  /* WEBFLOW_HOSTED_BLOCK:END */
19663  // Submit form to MailChimp
19664
19665
19666  function submitMailChimp(data) {
19667    reset(data);
19668    var form = data.form;
19669    var payload = {}; // Skip Ajax submission if http/s mismatch, fallback to POST instead
19670
19671    if (/^https/.test(loc.href) && !/^https/.test(data.action)) {
19672      form.attr('method', 'post');
19673      return;
19674    }
19675
19676    preventDefault(data); // Find & populate all fields
19677
19678    var status = findFields(form, payload);
19679
19680    if (status) {
19681      return alert(status);
19682    } // Disable submit button
19683
19684
19685    disableBtn(data); // Use special format for MailChimp params
19686
19687    var fullName;
19688
19689    _.each(payload, function (value, key) {
19690      if (emailField.test(key)) {
19691        payload.EMAIL = value;
19692      }
19693
19694      if (/^((full[ _-]?)?name)$/i.test(key)) {
19695        fullName = value;
19696      }
19697
19698      if (/^(first[ _-]?name)$/i.test(key)) {
19699        payload.FNAME = value;
19700      }
19701
19702      if (/^(last[ _-]?name)$/i.test(key)) {
19703        payload.LNAME = value;
19704      }
19705    });
19706
19707    if (fullName && !payload.FNAME) {
19708      fullName = fullName.split(' ');
19709      payload.FNAME = fullName[0];
19710      payload.LNAME = payload.LNAME || fullName[1];
19711    } // Use the (undocumented) MailChimp jsonp api
19712
19713
19714    var url = data.action.replace('/post?', '/post-json?') + '&c=?'; // Add special param to prevent bot signups
19715
19716    var userId = url.indexOf('u=') + 2;
19717    userId = url.substring(userId, url.indexOf('&', userId));
19718    var listId = url.indexOf('id=') + 3;
19719    listId = url.substring(listId, url.indexOf('&', listId));
19720    payload['b_' + userId + '_' + listId] = '';
19721    $.ajax({
19722      url: url,
19723      data: payload,
19724      dataType: 'jsonp'
19725    }).done(function (resp) {
19726      data.success = resp.result === 'success' || /already/.test(resp.msg);
19727
19728      if (!data.success) {
19729        console.info('MailChimp error: ' + resp.msg);
19730      }
19731
19732      afterSubmit(data);
19733    }).fail(function () {
19734      afterSubmit(data);
19735    });
19736  } // Common callback which runs after all Ajax submissions
19737
19738
19739  function afterSubmit(data) {
19740    var form = data.form;
19741    var redirect = data.redirect;
19742    var success = data.success; // Redirect to a success url if defined
19743
19744    if (success && redirect) {
19745      Webflow.location(redirect);
19746      return;
19747    } // Show or hide status divs
19748
19749
19750    data.done.toggle(success);
19751    data.fail.toggle(!success);
19752
19753    if (success) {
19754      data.done.focus();
19755    } else {
19756      data.fail.focus();
19757    } // Hide form on success
19758
19759
19760    form.toggle(!success); // Reset data and enable submit button
19761
19762    reset(data);
19763  }
19764
19765  function preventDefault(data) {
19766    data.evt && data.evt.preventDefault();
19767    data.evt = null;
19768  }
19769
19770  function initFileUpload(i, form) {
19771    if (!form.fileUploads || !form.fileUploads[i]) {
19772      return;
19773    }
19774
19775    var file;
19776    var $el = $(form.fileUploads[i]);
19777    var $defaultWrap = $el.find('> .w-file-upload-default');
19778    var $uploadingWrap = $el.find('> .w-file-upload-uploading');
19779    var $successWrap = $el.find('> .w-file-upload-success');
19780    var $errorWrap = $el.find('> .w-file-upload-error');
19781    var $input = $defaultWrap.find('.w-file-upload-input');
19782    var $label = $defaultWrap.find('.w-file-upload-label');
19783    var $labelChildren = $label.children();
19784    var $errorMsgEl = $errorWrap.find('.w-file-upload-error-msg');
19785    var $fileEl = $successWrap.find('.w-file-upload-file');
19786    var $removeEl = $successWrap.find('.w-file-remove-link');
19787    var $fileNameEl = $fileEl.find('.w-file-upload-file-name');
19788    var sizeErrMsg = $errorMsgEl.attr('data-w-size-error');
19789    var typeErrMsg = $errorMsgEl.attr('data-w-type-error');
19790    var genericErrMsg = $errorMsgEl.attr('data-w-generic-error'); // Accessiblity fixes
19791    // The file upload Input is not stylable by the designer, so we are
19792    // going to pretend the Label is the input. ¯\_(ツ)_/¯
19793
19794    if (!inApp) {
19795      $label.on('click keydown', function (e) {
19796        if (e.type === 'keydown' && e.which !== 13 && e.which !== 32) {
19797          return;
19798        }
19799
19800        e.preventDefault();
19801        $input.click();
19802      });
19803    } // Both of these are added through CSS
19804
19805
19806    $label.find('.w-icon-file-upload-icon').attr('aria-hidden', 'true');
19807    $removeEl.find('.w-icon-file-upload-remove').attr('aria-hidden', 'true');
19808
19809    if (!inApp) {
19810      $removeEl.on('click keydown', function (e) {
19811        if (e.type === 'keydown') {
19812          if (e.which !== 13 && e.which !== 32) {
19813            return;
19814          }
19815
19816          e.preventDefault();
19817        }
19818
19819        $input.removeAttr('data-value');
19820        $input.val('');
19821        $fileNameEl.html('');
19822        $defaultWrap.toggle(true);
19823        $successWrap.toggle(false);
19824        $label.focus();
19825      });
19826      $input.on('change', function (e) {
19827        file = e.target && e.target.files && e.target.files[0];
19828
19829        if (!file) {
19830          return;
19831        } // Show uploading
19832
19833
19834        $defaultWrap.toggle(false);
19835        $errorWrap.toggle(false);
19836        $uploadingWrap.toggle(true);
19837        $uploadingWrap.focus(); // Set filename
19838
19839        $fileNameEl.text(file.name); // Disable submit button
19840
19841        if (!isUploading()) {
19842          disableBtn(form);
19843        }
19844
19845        form.fileUploads[i].uploading = true;
19846        signFile(file, afterSign);
19847      }); // Setting input width 1px and height equal label
19848      // This is so the browser required error will show up
19849
19850      var height = $label.outerHeight();
19851      $input.height(height);
19852      $input.width(1);
19853    } else {
19854      $input.on('click', function (e) {
19855        e.preventDefault();
19856      });
19857      $label.on('click', function (e) {
19858        e.preventDefault();
19859      });
19860      $labelChildren.on('click', function (e) {
19861        e.preventDefault();
19862      });
19863    }
19864
19865    function parseError(err) {
19866      var errorMsg = err.responseJSON && err.responseJSON.msg;
19867      var userError = genericErrMsg;
19868
19869      if (typeof errorMsg === 'string' && errorMsg.indexOf('InvalidFileTypeError') === 0) {
19870        userError = typeErrMsg;
19871      } else if (typeof errorMsg === 'string' && errorMsg.indexOf('MaxFileSizeError') === 0) {
19872        userError = sizeErrMsg;
19873      }
19874
19875      $errorMsgEl.text(userError);
19876      $input.removeAttr('data-value');
19877      $input.val('');
19878      $uploadingWrap.toggle(false);
19879      $defaultWrap.toggle(true);
19880      $errorWrap.toggle(true);
19881      $errorWrap.focus();
19882      form.fileUploads[i].uploading = false;
19883
19884      if (!isUploading()) {
19885        reset(form);
19886      }
19887    }
19888
19889    function afterSign(err, data) {
19890      if (err) {
19891        return parseError(err);
19892      }
19893
19894      var fileName = data.fileName;
19895      var postData = data.postData;
19896      var fileId = data.fileId;
19897      var s3Url = data.s3Url;
19898      $input.attr('data-value', fileId);
19899      uploadS3(s3Url, postData, file, fileName, afterUpload);
19900    }
19901
19902    function afterUpload(err) {
19903      if (err) {
19904        return parseError(err);
19905      } // Show success
19906
19907
19908      $uploadingWrap.toggle(false);
19909      $successWrap.css('display', 'inline-block');
19910      $successWrap.focus();
19911      form.fileUploads[i].uploading = false;
19912
19913      if (!isUploading()) {
19914        reset(form);
19915      }
19916    }
19917
19918    function isUploading() {
19919      var uploads = form.fileUploads && form.fileUploads.toArray() || [];
19920      return uploads.some(function (value) {
19921        return value.uploading;
19922      });
19923    }
19924  }
19925
19926  function signFile(file, cb) {
19927    var payload = new URLSearchParams({
19928      name: file.name,
19929      size: file.size
19930    });
19931    $.ajax({
19932      type: 'GET',
19933      url: "".concat(signFileUrl, "?").concat(payload),
19934      crossDomain: true
19935    }).done(function (data) {
19936      cb(null, data);
19937    }).fail(function (err) {
19938      cb(err);
19939    });
19940  }
19941
19942  function uploadS3(url, data, file, fileName, cb) {
19943    var formData = new FormData();
19944
19945    for (var k in data) {
19946      formData.append(k, data[k]);
19947    }
19948
19949    formData.append('file', file, fileName);
19950    $.ajax({
19951      type: 'POST',
19952      url: url,
19953      data: formData,
19954      processData: false,
19955      contentType: false
19956    }).done(function () {
19957      cb(null);
19958    }).fail(function (err) {
19959      cb(err);
19960    });
19961  } // Export module
19962
19963
19964  return api;
19965});
19966
19967/***/ }),
19968/* 338 */
19969/***/ (function(module, exports, __webpack_require__) {
19970
19971var arrayWithHoles = __webpack_require__(339);
19972
19973var iterableToArrayLimit = __webpack_require__(340);
19974
19975var nonIterableRest = __webpack_require__(341);
19976
19977function _slicedToArray(arr, i) {
19978  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();
19979}
19980
19981module.exports = _slicedToArray;
19982
19983/***/ }),
19984/* 339 */
19985/***/ (function(module, exports) {
19986
19987function _arrayWithHoles(arr) {
19988  if (Array.isArray(arr)) return arr;
19989}
19990
19991module.exports = _arrayWithHoles;
19992
19993/***/ }),
19994/* 340 */
19995/***/ (function(module, exports) {
19996
19997function _iterableToArrayLimit(arr, i) {
19998  var _arr = [];
19999  var _n = true;
20000  var _d = false;
20001  var _e = undefined;
20002
20003  try {
20004    for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
20005      _arr.push(_s.value);
20006
20007      if (i && _arr.length === i) break;
20008    }
20009  } catch (err) {
20010    _d = true;
20011    _e = err;
20012  } finally {
20013    try {
20014      if (!_n && _i["return"] != null) _i["return"]();
20015    } finally {
20016      if (_d) throw _e;
20017    }
20018  }
20019
20020  return _arr;
20021}
20022
20023module.exports = _iterableToArrayLimit;
20024
20025/***/ }),
20026/* 341 */
20027/***/ (function(module, exports) {
20028
20029function _nonIterableRest() {
20030  throw new TypeError("Invalid attempt to destructure non-iterable instance");
20031}
20032
20033module.exports = _nonIterableRest;
20034
20035/***/ }),
20036/* 342 */
20037/***/ (function(module, exports, __webpack_require__) {
20038
20039"use strict";
20040 // @wf-will-never-add-flow-to-this-file
20041
20042/* globals window, document */
20043
20044/* eslint-disable no-var */
20045
20046/**
20047 * Webflow: Navbar component
20048 */
20049
20050var Webflow = __webpack_require__(3);
20051
20052var IXEvents = __webpack_require__(39);
20053
20054var KEY_CODES = {
20055  ARROW_LEFT: 37,
20056  ARROW_UP: 38,
20057  ARROW_RIGHT: 39,
20058  ARROW_DOWN: 40,
20059  ESCAPE: 27,
20060  SPACE: 32,
20061  ENTER: 13,
20062  HOME: 36,
20063  END: 35
20064};
20065Webflow.define('navbar', module.exports = function ($, _) {
20066  var api = {};
20067  var tram = $.tram;
20068  var $win = $(window);
20069  var $doc = $(document);
20070  var debounce = _.debounce;
20071  var $body;
20072  var $navbars;
20073  var designer;
20074  var inEditor;
20075  var inApp = Webflow.env();
20076  var overlay = '<div class="w-nav-overlay" data-wf-ignore />';
20077  var namespace = '.w-nav';
20078  var navbarOpenedButton = 'w--open';
20079  var navbarOpenedDropdown = 'w--nav-dropdown-open';
20080  var navbarOpenedDropdownToggle = 'w--nav-dropdown-toggle-open';
20081  var navbarOpenedDropdownList = 'w--nav-dropdown-list-open';
20082  var navbarOpenedLink = 'w--nav-link-open';
20083  var ix = IXEvents.triggers;
20084  var menuSibling = $(); // -----------------------------------
20085  // Module methods
20086
20087  api.ready = api.design = api.preview = init;
20088
20089  api.destroy = function () {
20090    menuSibling = $();
20091    removeListeners();
20092
20093    if ($navbars && $navbars.length) {
20094      $navbars.each(teardown);
20095    }
20096  }; // -----------------------------------
20097  // Private methods
20098
20099
20100  function init() {
20101    designer = inApp && Webflow.env('design');
20102    inEditor = Webflow.env('editor');
20103    $body = $(document.body); // Find all instances on the page
20104
20105    $navbars = $doc.find(namespace);
20106
20107    if (!$navbars.length) {
20108      return;
20109    }
20110
20111    $navbars.each(build); // Wire events
20112
20113    removeListeners();
20114    addListeners();
20115  }
20116
20117  function removeListeners() {
20118    Webflow.resize.off(resizeAll);
20119  }
20120
20121  function addListeners() {
20122    Webflow.resize.on(resizeAll);
20123  }
20124
20125  function resizeAll() {
20126    $navbars.each(resize);
20127  }
20128
20129  function build(i, el) {
20130    var $el = $(el); // Store state in data
20131
20132    var data = $.data(el, namespace);
20133
20134    if (!data) {
20135      data = $.data(el, namespace, {
20136        open: false,
20137        el: $el,
20138        config: {},
20139        selectedIdx: -1
20140      });
20141    }
20142
20143    data.menu = $el.find('.w-nav-menu');
20144    data.links = data.menu.find('.w-nav-link');
20145    data.dropdowns = data.menu.find('.w-dropdown');
20146    data.dropdownToggle = data.menu.find('.w-dropdown-toggle');
20147    data.dropdownList = data.menu.find('.w-dropdown-list');
20148    data.button = $el.find('.w-nav-button');
20149    data.container = $el.find('.w-container');
20150    data.overlayContainerId = 'w-nav-overlay-' + i;
20151    data.outside = outside(data); //   If the brand links exists and is set to link to the homepage, the
20152    // default setting, then add an aria-label
20153
20154    var navBrandLink = $el.find('.w-nav-brand');
20155
20156    if (navBrandLink && navBrandLink.attr('href') === '/' && navBrandLink.attr('aria-label') == null) {
20157      navBrandLink.attr('aria-label', 'home');
20158    } //   VoiceOver bug, when items that disallow user selection are focused
20159    // VoiceOver gets confused and scrolls to the end of the page. ¯\_(ツ)_/¯
20160
20161
20162    data.button.attr('style', '-webkit-user-select: text;'); // Add attributes to toggle element
20163
20164    if (data.button.attr('aria-label') == null) {
20165      data.button.attr('aria-label', 'menu');
20166    }
20167
20168    data.button.attr('role', 'button');
20169    data.button.attr('tabindex', '0');
20170    data.button.attr('aria-controls', data.overlayContainerId);
20171    data.button.attr('aria-haspopup', 'menu');
20172    data.button.attr('aria-expanded', 'false'); // Remove old events
20173
20174    data.el.off(namespace);
20175    data.button.off(namespace);
20176    data.menu.off(namespace); // Set config from data attributes
20177
20178    configure(data); // Add events based on mode
20179
20180    if (designer) {
20181      removeOverlay(data);
20182      data.el.on('setting' + namespace, handler(data));
20183    } else {
20184      addOverlay(data);
20185      data.button.on('click' + namespace, toggle(data));
20186      data.menu.on('click' + namespace, 'a', navigate(data));
20187      data.button.on('keydown' + namespace, makeToggleButtonKeyboardHandler(data));
20188      data.el.on('keydown' + namespace, makeLinksKeyboardHandler(data));
20189    } // Trigger initial resize
20190
20191
20192    resize(i, el);
20193  }
20194
20195  function teardown(i, el) {
20196    var data = $.data(el, namespace);
20197
20198    if (data) {
20199      removeOverlay(data);
20200      $.removeData(el, namespace);
20201    }
20202  }
20203
20204  function removeOverlay(data) {
20205    if (!data.overlay) {
20206      return;
20207    }
20208
20209    close(data, true);
20210    data.overlay.remove();
20211    data.overlay = null;
20212  }
20213
20214  function addOverlay(data) {
20215    if (data.overlay) {
20216      return;
20217    }
20218
20219    data.overlay = $(overlay).appendTo(data.el);
20220    data.overlay.attr('id', data.overlayContainerId);
20221    data.parent = data.menu.parent();
20222    close(data, true);
20223  }
20224
20225  function configure(data) {
20226    var config = {};
20227    var old = data.config || {}; // Set config options from data attributes
20228
20229    var animation = config.animation = data.el.attr('data-animation') || 'default';
20230    config.animOver = /^over/.test(animation);
20231    config.animDirect = /left$/.test(animation) ? -1 : 1; // Re-open menu if the animation type changed
20232
20233    if (old.animation !== animation) {
20234      data.open && _.defer(reopen, data);
20235    }
20236
20237    config.easing = data.el.attr('data-easing') || 'ease';
20238    config.easing2 = data.el.attr('data-easing2') || 'ease';
20239    var duration = data.el.attr('data-duration');
20240    config.duration = duration != null ? Number(duration) : 400;
20241    config.docHeight = data.el.attr('data-doc-height'); // Store config in data
20242
20243    data.config = config;
20244  }
20245
20246  function handler(data) {
20247    return function (evt, options) {
20248      options = options || {};
20249      var winWidth = $win.width();
20250      configure(data);
20251      options.open === true && open(data, true);
20252      options.open === false && close(data, true); // Reopen if media query changed after setting
20253
20254      data.open && _.defer(function () {
20255        if (winWidth !== $win.width()) {
20256          reopen(data);
20257        }
20258      });
20259    };
20260  }
20261
20262  function makeToggleButtonKeyboardHandler(data) {
20263    return function (evt) {
20264      switch (evt.keyCode) {
20265        case KEY_CODES.SPACE:
20266        case KEY_CODES.ENTER:
20267          {
20268            // Toggle returns a function
20269            toggle(data)();
20270            evt.preventDefault();
20271            return evt.stopPropagation();
20272          }
20273
20274        case KEY_CODES.ESCAPE:
20275          {
20276            close(data);
20277            evt.preventDefault();
20278            return evt.stopPropagation();
20279          }
20280
20281        case KEY_CODES.ARROW_RIGHT:
20282        case KEY_CODES.ARROW_DOWN:
20283        case KEY_CODES.HOME:
20284        case KEY_CODES.END:
20285          {
20286            if (!data.open) {
20287              evt.preventDefault();
20288              return evt.stopPropagation();
20289            }
20290
20291            if (evt.keyCode === KEY_CODES.END) {
20292              data.selectedIdx = data.links.length - 1;
20293            } else {
20294              data.selectedIdx = 0;
20295            }
20296
20297            focusSelectedLink(data);
20298            evt.preventDefault();
20299            return evt.stopPropagation();
20300          }
20301      }
20302    };
20303  }
20304
20305  function makeLinksKeyboardHandler(data) {
20306    return function (evt) {
20307      if (!data.open) {
20308        return;
20309      } // Realign selectedIdx with the menu item that is currently in focus.
20310      // We need this because we do not track the `Tab` key activity!
20311
20312
20313      data.selectedIdx = data.links.index(document.activeElement);
20314
20315      switch (evt.keyCode) {
20316        case KEY_CODES.HOME:
20317        case KEY_CODES.END:
20318          {
20319            if (evt.keyCode === KEY_CODES.END) {
20320              data.selectedIdx = data.links.length - 1;
20321            } else {
20322              data.selectedIdx = 0;
20323            }
20324
20325            focusSelectedLink(data);
20326            evt.preventDefault();
20327            return evt.stopPropagation();
20328          }
20329
20330        case KEY_CODES.ESCAPE:
20331          {
20332            close(data); // Focus toggle button
20333
20334            data.button.focus();
20335            evt.preventDefault();
20336            return evt.stopPropagation();
20337          }
20338
20339        case KEY_CODES.ARROW_LEFT:
20340        case KEY_CODES.ARROW_UP:
20341          {
20342            data.selectedIdx = Math.max(-1, data.selectedIdx - 1);
20343            focusSelectedLink(data);
20344            evt.preventDefault();
20345            return evt.stopPropagation();
20346          }
20347
20348        case KEY_CODES.ARROW_RIGHT:
20349        case KEY_CODES.ARROW_DOWN:
20350          {
20351            data.selectedIdx = Math.min(data.links.length - 1, data.selectedIdx + 1);
20352            focusSelectedLink(data);
20353            evt.preventDefault();
20354            return evt.stopPropagation();
20355          }
20356      }
20357    };
20358  }
20359
20360  function focusSelectedLink(data) {
20361    if (data.links[data.selectedIdx]) {
20362      var selectedElement = data.links[data.selectedIdx];
20363      selectedElement.focus();
20364      navigate(selectedElement);
20365    }
20366  }
20367
20368  function reopen(data) {
20369    if (!data.open) {
20370      return;
20371    }
20372
20373    close(data, true);
20374    open(data, true);
20375  }
20376
20377  function toggle(data) {
20378    // Debounce toggle to wait for accurate open state
20379    return debounce(function () {
20380      data.open ? close(data) : open(data);
20381    });
20382  }
20383
20384  function navigate(data) {
20385    return function (evt) {
20386      var link = $(this);
20387      var href = link.attr('href'); // Avoid late clicks on touch devices
20388
20389      if (!Webflow.validClick(evt.currentTarget)) {
20390        evt.preventDefault();
20391        return;
20392      } // Close when navigating to an in-page anchor
20393
20394
20395      if (href && href.indexOf('#') === 0 && data.open) {
20396        close(data);
20397      }
20398    };
20399  }
20400
20401  function outside(data) {
20402    // Unbind previous click handler if it exists
20403    if (data.outside) {
20404      $doc.off('click' + namespace, data.outside);
20405    }
20406
20407    return function (evt) {
20408      var $target = $(evt.target); // Ignore clicks on Editor overlay UI
20409
20410      if (inEditor && $target.closest('.w-editor-bem-EditorOverlay').length) {
20411        return;
20412      } // Close menu when clicked outside, debounced to wait for state
20413
20414
20415      outsideDebounced(data, $target);
20416    };
20417  }
20418
20419  var outsideDebounced = debounce(function (data, $target) {
20420    if (!data.open) {
20421      return;
20422    }
20423
20424    var menu = $target.closest('.w-nav-menu');
20425
20426    if (!data.menu.is(menu)) {
20427      close(data);
20428    }
20429  });
20430
20431  function resize(i, el) {
20432    var data = $.data(el, namespace);
20432 // Check for collapsed state based on button display
20433
20434    var collapsed = data.collapsed = data.button.css('display') !== 'none'; // Close menu if button is no longer visible (and not in designer)
20435
20436    if (data.open && !collapsed && !designer) {
20437      close(data, true);
20438    } // Set max-width of links + dropdowns to match container
20439
20440
20441    if (data.container.length) {
20442      var updateEachMax = updateMax(data);
20443      data.links.each(updateEachMax);
20444      data.dropdowns.each(updateEachMax);
20445    } // If currently open, update height to match body
20446
20447
20448    if (data.open) {
20449      setOverlayHeight(data);
20450    }
20451  }
20452
20453  var maxWidth = 'max-width';
20454
20455  function updateMax(data) {
20456    // Set max-width of each element to match container
20457    var containMax = data.container.css(maxWidth);
20458
20459    if (containMax === 'none') {
20460      containMax = '';
20461    }
20462
20463    return function (i, link) {
20464      link = $(link);
20465      link.css(maxWidth, ''); // Don't set the max-width if an upstream value exists
20466
20467      if (link.css(maxWidth) === 'none') {
20468        link.css(maxWidth, containMax);
20469      }
20470    };
20471  }
20472
20473  function addMenuOpen(i, el) {
20474    el.setAttribute('data-nav-menu-open', '');
20475  }
20476
20477  function removeMenuOpen(i, el) {
20478    el.removeAttribute('data-nav-menu-open');
20479  }
20480
20481  function open(data, immediate) {
20482    if (data.open) {
20483      return;
20484    }
20485
20486    data.open = true;
20487    data.menu.each(addMenuOpen);
20488    data.links.addClass(navbarOpenedLink);
20489    data.dropdowns.addClass(navbarOpenedDropdown);
20490    data.dropdownToggle.addClass(navbarOpenedDropdownToggle);
20491    data.dropdownList.addClass(navbarOpenedDropdownList);
20492    data.button.addClass(navbarOpenedButton);
20493    var config = data.config;
20494    var animation = config.animation;
20495
20496    if (animation === 'none' || !tram.support.transform || config.duration <= 0) {
20497      immediate = true;
20498    }
20499
20500    var bodyHeight = setOverlayHeight(data);
20501    var menuHeight = data.menu.outerHeight(true);
20502    var menuWidth = data.menu.outerWidth(true);
20503    var navHeight = data.el.height();
20504    var navbarEl = data.el[0];
20505    resize(0, navbarEl);
20506    ix.intro(0, navbarEl);
20507    Webflow.redraw.up(); // Listen for click outside events
20508
20509    if (!designer) {
20510      $doc.on('click' + namespace, data.outside);
20511    } // No transition for immediate
20512
20513
20514    if (immediate) {
20515      complete();
20516      return;
20517    }
20518
20519    var transConfig = 'transform ' + config.duration + 'ms ' + config.easing; // Add menu to overlay
20520
20521    if (data.overlay) {
20522      menuSibling = data.menu.prev();
20523      data.overlay.show().append(data.menu);
20524    } // Over left/right
20525
20526
20527    if (config.animOver) {
20528      tram(data.menu).add(transConfig).set({
20529        x: config.animDirect * menuWidth,
20530        height: bodyHeight
20531      }).start({
20532        x: 0
20533      }).then(complete);
20534      data.overlay && data.overlay.width(menuWidth);
20535      return;
20536    } // Drop Down
20537
20538
20539    var offsetY = navHeight + menuHeight;
20540    tram(data.menu).add(transConfig).set({
20541      y: -offsetY
20542    }).start({
20543      y: 0
20544    }).then(complete);
20545
20546    function complete() {
20547      data.button.attr('aria-expanded', 'true');
20548    }
20549  }
20550
20551  function setOverlayHeight(data) {
20552    var config = data.config;
20553    var bodyHeight = config.docHeight ? $doc.height() : $body.height();
20554
20555    if (config.animOver) {
20556      data.menu.height(bodyHeight);
20557    } else if (data.el.css('position') !== 'fixed') {
20558      bodyHeight -= data.el.outerHeight(true);
20559    }
20560
20561    data.overlay && data.overlay.height(bodyHeight);
20562    return bodyHeight;
20563  }
20564
20565  function close(data, immediate) {
20566    if (!data.open) {
20567      return;
20568    }
20569
20570    data.open = false;
20571    data.button.removeClass(navbarOpenedButton);
20572    var config = data.config;
20573
20574    if (config.animation === 'none' || !tram.support.transform || config.duration <= 0) {
20575      immediate = true;
20576    }
20577
20578    ix.outro(0, data.el[0]); // Stop listening for click outside events
20579
20580    $doc.off('click' + namespace, data.outside);
20581
20582    if (immediate) {
20583      tram(data.menu).stop();
20584      complete();
20585      return;
20586    }
20587
20588    var transConfig = 'transform ' + config.duration + 'ms ' + config.easing2;
20589    var menuHeight = data.menu.outerHeight(true);
20590    var menuWidth = data.menu.outerWidth(true);
20591    var navHeight = data.el.height(); // Over left/right
20592
20593    if (config.animOver) {
20594      tram(data.menu).add(transConfig).start({
20595        x: menuWidth * config.animDirect
20596      }).then(complete);
20597      return;
20598    } // Drop Down
20599
20600
20601    var offsetY = navHeight + menuHeight;
20602    tram(data.menu).add(transConfig).start({
20603      y: -offsetY
20604    }).then(complete);
20605
20606    function complete() {
20607      data.menu.height('');
20608      tram(data.menu).set({
20609        x: 0,
20610        y: 0
20611      });
20612      data.menu.each(removeMenuOpen);
20613      data.links.removeClass(navbarOpenedLink);
20614      data.dropdowns.removeClass(navbarOpenedDropdown);
20615      data.dropdownToggle.removeClass(navbarOpenedDropdownToggle);
20616      data.dropdownList.removeClass(navbarOpenedDropdownList);
20617
20618      if (data.overlay && data.overlay.children().length) {
20619        // Move menu back to parent at the original location
20620        menuSibling.length ? data.menu.insertAfter(menuSibling) : data.menu.prependTo(data.parent);
20621        data.overlay.attr('style', '').hide();
20622      } // Trigger event so other components can hook in (dropdown)
20623
20624
20625      data.el.triggerHandler('w-close');
20626      data.button.attr('aria-expanded', 'false');
20627    }
20628  } // Export module
20629
20630
20631  return api;
20632});
20633
20634/***/ }),
20635/* 343 */
20636/***/ (function(module, exports, __webpack_require__) {
20637
20638"use strict";
20639 // @wf-will-never-add-flow-to-this-file
20640
20641/* global window, document */
20642
20643/* eslint-disable no-var */
20644
20645/**
20646 * Webflow: Slider component
20647 */
20648
20649var Webflow = __webpack_require__(3);
20650
20651var IXEvents = __webpack_require__(39);
20652
20653var KEY_CODES = {
20654  ARROW_LEFT: 37,
20655  ARROW_UP: 38,
20656  ARROW_RIGHT: 39,
20657  ARROW_DOWN: 40,
20658  SPACE: 32,
20659  ENTER: 13,
20660  HOME: 36,
20661  END: 35
20662};
20663var FOCUSABLE_SELECTOR = 'a[href], area[href], [role="button"], input, select, textarea, button, iframe, object, embed, *[tabindex], *[contenteditable]';
20664Webflow.define('slider', module.exports = function ($, _) {
20665  var api = {};
20666  var tram = $.tram;
20667  var $doc = $(document);
20668  var $sliders;
20669  var designer;
20670  var inApp = Webflow.env();
20671  var namespace = '.w-slider';
20672  var dot = '<div class="w-slider-dot" data-wf-ignore />';
20673  var ariaLiveLabelHtml = '<div aria-live="off" aria-atomic="true" class="w-slider-aria-label" data-wf-ignore />';
20674  var forceShow = 'w-slider-force-show';
20675  var ix = IXEvents.triggers;
20676  var fallback;
20677  var inRedraw = false; // -----------------------------------
20678  // Module methods
20679
20680  api.ready = function () {
20681    designer = Webflow.env('design');
20682    init();
20683  };
20684
20685  api.design = function () {
20686    designer = true; // Helps slider init on Designer load.
20687
20688    setTimeout(init, 1000);
20689  };
20690
20691  api.preview = function () {
20692    designer = false;
20693    init();
20694  };
20695
20696  api.redraw = function () {
20697    inRedraw = true;
20698    init();
20699    inRedraw = false;
20700  };
20701
20702  api.destroy = removeListeners; // -----------------------------------
20703  // Private methods
20704
20705  function init() {
20706    // Find all sliders on the page
20707    $sliders = $doc.find(namespace);
20708
20709    if (!$sliders.length) {
20710      return;
20711    }
20712
20713    $sliders.each(build);
20714
20715    if (fallback) {
20716      return;
20717    }
20718
20719    removeListeners();
20720    addListeners();
20721  }
20722
20723  function removeListeners() {
20724    Webflow.resize.off(renderAll);
20725    Webflow.redraw.off(api.redraw);
20726  }
20727
20728  function addListeners() {
20729    Webflow.resize.on(renderAll);
20730    Webflow.redraw.on(api.redraw);
20731  }
20732
20733  function renderAll() {
20734    $sliders.filter(':visible').each(render);
20735  }
20736
20737  function build(i, el) {
20738    var $el = $(el); // Store slider state in data
20739
20740    var data = $.data(el, namespace);
20741
20742    if (!data) {
20743      data = $.data(el, namespace, {
20744        index: 0,
20745        depth: 1,
20746        hasFocus: {
20747          keyboard: false,
20748          mouse: false
20749        },
20750        el: $el,
20751        config: {}
20752      });
20753    }
20754
20755    data.mask = $el.children('.w-slider-mask');
20756    data.left = $el.children('.w-slider-arrow-left');
20757    data.right = $el.children('.w-slider-arrow-right');
20758    data.nav = $el.children('.w-slider-nav');
20759    data.slides = data.mask.children('.w-slide');
20760    data.slides.each(ix.reset);
20761
20762    if (inRedraw) {
20763      data.maskWidth = 0;
20764    }
20765
20766    if ($el.attr('role') === undefined) {
20767      $el.attr('role', 'region');
20768    }
20769
20770    if ($el.attr('aria-label') === undefined) {
20771      $el.attr('aria-label', 'carousel');
20772    } // Store the ID of the slider slide view mask
20773
20774
20775    var slideViewId = data.mask.attr('id'); // If user did not provide an ID, set it
20776
20777    if (!slideViewId) {
20778      slideViewId = 'w-slider-mask-' + i;
20779      data.mask.attr('id', slideViewId);
20780    } // Create aria live label
20781
20782
20783    if (!designer && !data.ariaLiveLabel) {
20784      data.ariaLiveLabel = $(ariaLiveLabelHtml).appendTo(data.mask);
20785    } // Add attributes to left/right buttons
20786
20787
20788    data.left.attr('role', 'button');
20789    data.left.attr('tabindex', '0');
20790    data.left.attr('aria-controls', slideViewId);
20791
20792    if (data.left.attr('aria-label') === undefined) {
20793      data.left.attr('aria-label', 'previous slide');
20794    }
20795
20796    data.right.attr('role', 'button');
20797    data.right.attr('tabindex', '0');
20798    data.right.attr('aria-controls', slideViewId);
20799
20800    if (data.right.attr('aria-label') === undefined) {
20801      data.right.attr('aria-label', 'next slide');
20802    } // Disable in old browsers
20803
20804
20805    if (!tram.support.transform) {
20806      data.left.hide();
20807      data.right.hide();
20808      data.nav.hide();
20809      fallback = true;
20810      return;
20811    } // Remove old events
20812
20813
20814    data.el.off(namespace);
20815    data.left.off(namespace);
20816    data.right.off(namespace);
20817    data.nav.off(namespace); // Set config from data attributes
20818
20819    configure(data); // Add events based on mode
20820
20821    if (designer) {
20822      data.el.on('setting' + namespace, handler(data));
20823      stopTimer(data);
20824      data.hasTimer = false;
20825    } else {
20826      data.el.on('swipe' + namespace, handler(data));
20827      data.left.on('click' + namespace, previousFunction(data));
20828      data.right.on('click' + namespace, next(data));
20829      data.left.on('keydown' + namespace, keyboardSlideButtonsFunction(data, previousFunction));
20830      data.right.on('keydown' + namespace, keyboardSlideButtonsFunction(data, next)); // Listen to nav keyboard events
20831
20832      data.nav.on('keydown' + namespace, '> div', handler(data)); // Start timer if autoplay is true, only once
20833
20834      if (data.config.autoplay && !data.hasTimer) {
20835        data.hasTimer = true;
20836        data.timerCount = 1;
20837        startTimer(data);
20838      }
20839
20840      data.el.on('mouseenter' + namespace, hasFocus(data, true, 'mouse'));
20841      data.el.on('focusin' + namespace, hasFocus(data, true, 'keyboard'));
20842      data.el.on('mouseleave' + namespace, hasFocus(data, false, 'mouse'));
20843      data.el.on('focusout' + namespace, hasFocus(data, false, 'keyboard'));
20844    } // Listen to nav click events
20845
20846
20847    data.nav.on('click' + namespace, '> div', handler(data)); // Remove gaps from formatted html (for inline-blocks)
20848
20849    if (!inApp) {
20850      data.mask.contents().filter(function () {
20851        return this.nodeType === 3;
20852      }).remove();
20853    } // If slider or any parent is hidden, temporarily show for measurements (https://github.com/webflow/webflow/issues/24921)
20854
20855
20856    var $elHidden = $el.filter(':hidden');
20857    $elHidden.addClass(forceShow);
20858    var $elHiddenParents = $el.parents(':hidden');
20859    $elHiddenParents.addClass(forceShow); // Run first render
20860
20861    if (!inRedraw) {
20862      render(i, el);
20863    } // If slider or any parent is hidden, reset after temporarily showing for measurements
20864
20865
20866    $elHidden.removeClass(forceShow);
20867    $elHiddenParents.removeClass(forceShow);
20868  }
20869
20870  function configure(data) {
20871    var config = {};
20872    config.crossOver = 0; // Set config options from data attributes
20873
20874    config.animation = data.el.attr('data-animation') || 'slide';
20875
20876    if (config.animation === 'outin') {
20877      config.animation = 'cross';
20878      config.crossOver = 0.5;
20879    }
20880
20881    config.easing = data.el.attr('data-easing') || 'ease';
20882    var duration = data.el.attr('data-duration');
20883    config.duration = duration != null ? parseInt(duration, 10) : 500;
20884
20885    if (isAttrTrue(data.el.attr('data-infinite'))) {
20886      config.infinite = true;
20887    }
20888
20889    if (isAttrTrue(data.el.attr('data-disable-swipe'))) {
20890      config.disableSwipe = true;
20891    }
20892
20893    if (isAttrTrue(data.el.attr('data-hide-arrows'))) {
20894      config.hideArrows = true;
20895    } else if (data.config.hideArrows) {
20896      data.left.show();
20897      data.right.show();
20898    }
20899
20900    if (isAttrTrue(data.el.attr('data-autoplay'))) {
20901      config.autoplay = true;
20902      config.delay = parseInt(data.el.attr('data-delay'), 10) || 2000;
20903      config.timerMax = parseInt(data.el.attr('data-autoplay-limit'), 10); // Disable timer on first touch or mouse down
20904
20905      var touchEvents = 'mousedown' + namespace + ' touchstart' + namespace;
20906
20907      if (!designer) {
20908        data.el.off(touchEvents).one(touchEvents, function () {
20909          stopTimer(data);
20910        });
20911      }
20912    } // Use edge buffer to help calculate page count
20913
20914
20915    var arrowWidth = data.right.width();
20916    config.edge = arrowWidth ? arrowWidth + 40 : 100; // Store config in data
20917
20918    data.config = config;
20919  }
20920
20921  function isAttrTrue(value) {
20922    return value === '1' || value === 'true';
20923  }
20924
20925  function hasFocus(data, focusIn, eventType) {
20926    return function (evt) {
20927      if (!focusIn) {
20928        // Prevent Focus Out if moving to another element in the slider
20929        if ($.contains(data.el.get(0), evt.relatedTarget)) {
20930          return;
20931        }
20932
20933        data.hasFocus[eventType] = focusIn; // Prevent Aria live change if focused by other input
20934
20935        if (data.hasFocus.mouse && eventType === 'keyboard' || data.hasFocus.keyboard && eventType === 'mouse') {
20936          return;
20937        }
20938      } else {
20939        data.hasFocus[eventType] = focusIn;
20940      }
20941
20942      if (focusIn) {
20943        data.ariaLiveLabel.attr('aria-live', 'polite');
20944
20945        if (data.hasTimer) {
20946          stopTimer(data);
20947        }
20948      } else {
20949        data.ariaLiveLabel.attr('aria-live', 'off');
20950
20951        if (data.hasTimer) {
20952          startTimer(data);
20953        }
20954      }
20955
20956      return;
20957    };
20958  }
20959
20960  function keyboardSlideButtonsFunction(data, directionFunction) {
20961    return function (evt) {
20962      switch (evt.keyCode) {
20963        case KEY_CODES.SPACE:
20964        case KEY_CODES.ENTER:
20965          {
20966            // DirectionFunction returns a function
20967            directionFunction(data)();
20968            evt.preventDefault();
20969            return evt.stopPropagation();
20970          }
20971      }
20972    };
20973  }
20974
20975  function previousFunction(data) {
20976    return function () {
20977      change(data, {
20978        index: data.index - 1,
20979        vector: -1
20980      });
20981    };
20982  }
20983
20984  function next(data) {
20985    return function () {
20986      change(data, {
20987        index: data.index + 1,
20988        vector: 1
20989      });
20990    };
20991  }
20992
20993  function select(data, value) {
20994    // Select page based on slide element index
20995    var found = null;
20996
20997    if (value === data.slides.length) {
20998      init();
20999      layout(data); // Rebuild and find new slides
21000    }
21001
21002    _.each(data.anchors, function (anchor, index) {
21003      $(anchor.els).each(function (i, el) {
21004        if ($(el).index() === value) {
21005          found = index;
21006        }
21007      });
21008    });
21009
21010    if (found != null) {
21011      change(data, {
21012        index: found,
21013        immediate: true
21014      });
21015    }
21016  }
21017
21018  function startTimer(data) {
21019    stopTimer(data);
21020    var config = data.config;
21021    var timerMax = config.timerMax;
21022
21023    if (timerMax && data.timerCount++ > timerMax) {
21024      return;
21025    }
21026
21027    data.timerId = window.setTimeout(function () {
21028      if (data.timerId == null || designer) {
21029        return;
21030      }
21031
21032      next(data)();
21033      startTimer(data);
21034    }, config.delay);
21035  }
21036
21037  function stopTimer(data) {
21038    window.clearTimeout(data.timerId);
21039    data.timerId = null;
21040  }
21041
21042  function handler(data) {
21043    return function (evt, options) {
21044      options = options || {};
21045      var config = data.config; // Designer settings
21046
21047      if (designer && evt.type === 'setting') {
21048        if (options.select === 'prev') {
21049          return previousFunction(data)();
21050        }
21051
21052        if (options.select === 'next') {
21053          return next(data)();
21054        }
21055
21056        configure(data);
21057        layout(data);
21058
21059        if (options.select == null) {
21060          return;
21061        }
21062
21063        select(data, options.select);
21064        return;
21065      } // Swipe event
21066
21067
21068      if (evt.type === 'swipe') {
21069        if (config.disableSwipe) {
21070          return;
21071        }
21072
21073        if (Webflow.env('editor')) {
21074          return;
21075        }
21076
21077        if (options.direction === 'left') {
21078          return next(data)();
21079        }
21080
21081        if (options.direction === 'right') {
21082          return previousFunction(data)();
21083        }
21084
21085        return;
21086      } // Page buttons
21087
21088
21089      if (data.nav.has(evt.target).length) {
21090        var index = $(evt.target).index();
21091
21092        if (evt.type === 'click') {
21093          change(data, {
21094            index: index
21095          });
21096        }
21097
21098        if (evt.type === 'keydown') {
21099          switch (evt.keyCode) {
21100            case KEY_CODES.ENTER:
21101            case KEY_CODES.SPACE:
21102              {
21103                change(data, {
21104                  index: index
21105                });
21106                evt.preventDefault();
21107                break;
21108              }
21109
21110            case KEY_CODES.ARROW_LEFT:
21111            case KEY_CODES.ARROW_UP:
21112              {
21113                focusDot(data.nav, Math.max(index - 1, 0));
21114                evt.preventDefault();
21115                break;
21116              }
21117
21118            case KEY_CODES.ARROW_RIGHT:
21119            case KEY_CODES.ARROW_DOWN:
21120              {
21121                focusDot(data.nav, Math.min(index + 1, data.pages));
21122                evt.preventDefault();
21123                break;
21124              }
21125
21126            case KEY_CODES.HOME:
21127              {
21128                focusDot(data.nav, 0);
21129                evt.preventDefault();
21130                break;
21131              }
21132
21133            case KEY_CODES.END:
21134              {
21135                focusDot(data.nav, data.pages);
21136                evt.preventDefault();
21137                break;
21138              }
21139
21140            default:
21141              {
21142                return;
21143              }
21144          }
21145        }
21146      }
21147    };
21148  }
21149
21150  function focusDot($nav, index) {
21151    // Focus nav dot; don't change class to active
21152    var $active = $nav.children().eq(index).focus();
21153    $nav.children().not($active);
21154  }
21155
21156  function change(data, options) {
21157    options = options || {};
21158    var config = data.config;
21159    var anchors = data.anchors; // Set new index
21160
21161    data.previous = data.index;
21162    var index = options.index;
21163    var shift = {};
21164
21165    if (index < 0) {
21166      index = anchors.length - 1;
21167
21168      if (config.infinite) {
21169        // Shift first slide to the end
21170        shift.x = -data.endX;
21171        shift.from = 0;
21172        shift.to = anchors[0].width;
21173      }
21174    } else if (index >= anchors.length) {
21175      index = 0;
21176
21177      if (config.infinite) {
21178        // Shift last slide to the start
21179        shift.x = anchors[anchors.length - 1].width;
21180        shift.from = -anchors[anchors.length - 1].x;
21181        shift.to = shift.from - shift.x;
21182      }
21183    }
21184
21185    data.index = index; // Select nav dot; set class active
21186
21187    var $active = data.nav.children().eq(index).addClass('w-active').attr('aria-pressed', 'true').attr('tabindex', '0');
21188    data.nav.children().not($active).removeClass('w-active').attr('aria-pressed', 'false').attr('tabindex', '-1'); // Hide arrows
21189
21190    if (config.hideArrows) {
21191      data.index === anchors.length - 1 ? data.right.hide() : data.right.show();
21192      data.index === 0 ? data.left.hide() : data.left.show();
21193    } // Get page offset from anchors
21194
21195
21196    var lastOffsetX = data.offsetX || 0;
21197    var offsetX = data.offsetX = -anchors[data.index].x;
21198    var resetConfig = {
21199      x: offsetX,
21200      opacity: 1,
21201      visibility: ''
21202    }; // Transition slides
21203
21204    var targets = $(anchors[data.index].els);
21205    var prevTargs = $(anchors[data.previous] && anchors[data.previous].els);
21206    var others = data.slides.not(targets);
21207    var animation = config.animation;
21208    var easing = config.easing;
21209    var duration = Math.round(config.duration);
21210    var vector = options.vector || (data.index > data.previous ? 1 : -1);
21211    var fadeRule = 'opacity ' + duration + 'ms ' + easing;
21212    var slideRule = 'transform ' + duration + 'ms ' + easing; // Make active slides' content focusable
21213
21214    targets.find(FOCUSABLE_SELECTOR).removeAttr('tabindex');
21215    targets.removeAttr('aria-hidden'); // Voiceover bug: Sometimes descendants are still visible, so hide everything...
21216
21217    targets.find('*').removeAttr('aria-hidden'); // Prevent focus on inactive slides' content
21218
21219    others.find(FOCUSABLE_SELECTOR).attr('tabindex', '-1');
21220    others.attr('aria-hidden', 'true'); // Voiceover bug: Sometimes descendants are still visible, so hide everything...
21221
21222    others.find('*').attr('aria-hidden', 'true'); // Trigger IX events
21223
21224    if (!designer) {
21225      targets.each(ix.intro);
21226      others.each(ix.outro);
21227    } // Set immediately after layout changes (but not during redraw)
21228
21229
21230    if (options.immediate && !inRedraw) {
21231      tram(targets).set(resetConfig);
21232      resetOthers();
21233      return;
21234    } // Exit early if index is unchanged
21235
21236
21237    if (data.index === data.previous) {
21238      return;
21239    } // Announce slide change to screen reader
21240
21241
21242    if (!designer) {
21243      data.ariaLiveLabel.text("Slide ".concat(index + 1, " of ").concat(anchors.length, "."));
21244    } // Cross Fade / Out-In
21245
21246
21247    if (animation === 'cross') {
21248      var reduced = Math.round(duration - duration * config.crossOver);
21249      var wait = Math.round(duration - reduced);
21250      fadeRule = 'opacity ' + reduced + 'ms ' + easing;
21251      tram(prevTargs).set({
21252        visibility: ''
21253      }).add(fadeRule).start({
21254        opacity: 0
21255      });
21256      tram(targets).set({
21257        visibility: '',
21258        x: offsetX,
21259        opacity: 0,
21260        zIndex: data.depth++
21261      }).add(fadeRule).wait(wait).then({
21262        opacity: 1
21263      }).then(resetOthers);
21264      return;
21265    } // Fade Over
21266
21267
21268    if (animation === 'fade') {
21269      tram(prevTargs).set({
21270        visibility: ''
21271      }).stop();
21272      tram(targets).set({
21273        visibility: '',
21274        x: offsetX,
21275        opacity: 0,
21276        zIndex: data.depth++
21277      }).add(fadeRule).start({
21278        opacity: 1
21279      }).then(resetOthers);
21280      return;
21281    } // Slide Over
21282
21283
21284    if (animation === 'over') {
21285      resetConfig = {
21286        x: data.endX
21287      };
21288      tram(prevTargs).set({
21289        visibility: ''
21290      }).stop();
21291      tram(targets).set({
21292        visibility: '',
21293        zIndex: data.depth++,
21294        x: offsetX + anchors[data.index].width * vector
21295      }).add(slideRule).start({
21296        x: offsetX
21297      }).then(resetOthers);
21298      return;
21299    } // Slide - infinite scroll
21300
21301
21302    if (config.infinite && shift.x) {
21303      tram(data.slides.not(prevTargs)).set({
21304        visibility: '',
21305        x: shift.x
21306      }).add(slideRule).start({
21307        x: offsetX
21308      });
21309      tram(prevTargs).set({
21310        visibility: '',
21311        x: shift.from
21312      }).add(slideRule).start({
21313        x: shift.to
21314      });
21315      data.shifted = prevTargs;
21316    } else {
21317      if (config.infinite && data.shifted) {
21318        tram(data.shifted).set({
21319          visibility: '',
21320          x: lastOffsetX
21321        });
21322        data.shifted = null;
21323      } // Slide - basic scroll
21324
21325
21326      tram(data.slides).set({
21327        visibility: ''
21328      }).add(slideRule).start({
21329        x: offsetX
21330      });
21331    } // Helper to move others out of view
21332
21333
21334    function resetOthers() {
21335      targets = $(anchors[data.index].els);
21336      others = data.slides.not(targets);
21337
21338      if (animation !== 'slide') {
21339        resetConfig.visibility = 'hidden';
21340      }
21341
21342      tram(others).set(resetConfig);
21343    }
21344  }
21345
21346  function render(i, el) {
21347    var data = $.data(el, namespace);
21348
21349    if (!data) {
21350      return;
21351    }
21352
21353    if (maskChanged(data)) {
21354      return layout(data);
21355    }
21356
21357    if (designer && slidesChanged(data)) {
21358      layout(data);
21359    }
21360  }
21361
21362  function layout(data) {
21363    // Determine page count from width of slides
21364    var pages = 1;
21365    var offset = 0;
21366    var anchor = 0;
21367    var width = 0;
21368    var maskWidth = data.maskWidth;
21369    var threshold = maskWidth - data.config.edge;
21370
21371    if (threshold < 0) {
21372      threshold = 0;
21373    }
21374
21375    data.anchors = [{
21376      els: [],
21377      x: 0,
21378      width: 0
21379    }];
21380    data.slides.each(function (i, el) {
21381      if (anchor - offset > threshold) {
21382        pages++;
21383        offset += maskWidth; // Store page anchor for transition
21384
21385        data.anchors[pages - 1] = {
21386          els: [],
21387          x: anchor,
21388          width: 0
21389        };
21390      } // Set next anchor using current width + margin
21391
21392
21393      width = $(el).outerWidth(true);
21394      anchor += width;
21395      data.anchors[pages - 1].width += width;
21396      data.anchors[pages - 1].els.push(el);
21397      var ariaLabel = i + 1 + ' of ' + data.slides.length;
21398      $(el).attr('aria-label', ariaLabel);
21399      $(el).attr('role', 'group');
21400    });
21401    data.endX = anchor; // Build dots if nav exists and needs updating
21402
21403    if (designer) {
21404      data.pages = null;
21405    }
21406
21407    if (data.nav.length && data.pages !== pages) {
21408      data.pages = pages;
21409      buildNav(data);
21410    } // Make sure index is still within range and call change handler
21411
21412
21413    var index = data.index;
21414
21415    if (index >= pages) {
21416      index = pages - 1;
21417    }
21418
21419    change(data, {
21420      immediate: true,
21421      index: index
21422    });
21423  }
21424
21425  function buildNav(data) {
21426    var dots = [];
21427    var $dot;
21428    var spacing = data.el.attr('data-nav-spacing');
21429
21430    if (spacing) {
21431      spacing = parseFloat(spacing) + 'px';
21432    }
21433
21434    for (var i = 0, len = data.pages; i < len; i++) {
21435      $dot = $(dot);
21436      $dot.attr('aria-label', 'Show slide ' + (i + 1) + ' of ' + len).attr('aria-pressed', 'false').attr('role', 'button').attr('tabindex', '-1');
21437
21438      if (data.nav.hasClass('w-num')) {
21439        $dot.text(i + 1);
21440      }
21441
21442      if (spacing != null) {
21443        $dot.css({
21444          'margin-left': spacing,
21445          'margin-right': spacing
21446        });
21447      }
21448
21449      dots.push($dot);
21450    }
21451
21452    data.nav.empty().append(dots);
21453  }
21454
21455  function maskChanged(data) {
21456    var maskWidth = data.mask.width();
21457
21458    if (data.maskWidth !== maskWidth) {
21459      data.maskWidth = maskWidth;
21460      return true;
21461    }
21462
21463    return false;
21464  }
21465
21466  function slidesChanged(data) {
21467    var slidesWidth = 0;
21468    data.slides.each(function (i, el) {
21469      slidesWidth += $(el).outerWidth(true);
21470    });
21471
21472    if (data.slidesWidth !== slidesWidth) {
21473      data.slidesWidth = slidesWidth;
21474      return true;
21475    }
21476
21477    return false;
21478  } // Export module
21479
21480
21481  return api;
21482});
21483
21484/***/ })
21485/******/ ]);/**
21486 * ----------------------------------------------------------------------
21487 * Webflow: Interactions 2.0: Init
21488 */
21489Webflow.require('ix2').init(
21490{"events":{"e-3":{"id":"e-3","name":"","animationType":"custom","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-2","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-4"}},"mediaQueries":["main"],"target":{"selector":".numbers-wrapper","originalId":"6320b80e48e94f429adce430|4dac42c9-452e-9c0e-0cd4-87aa60d0beba","appliesTo":"CLASS"},"targets":[{"selector":".numbers-wrapper","originalId":"6320b80e48e94f429adce430|4dac42c9-452e-9c0e-0cd4-87aa60d0beba","appliesTo":"CLASS"}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":10,"scrollOffsetUnit":"%","delay":null,"direction":null,"effectIn":null},"createdOn":1638797975930},"e-5":{"id":"e-5","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"SLIDE_EFFECT","instant":false,"config":{"actionListId":"slideInBottom","autoStopEventId":"e-6"}},"mediaQueries":["main"],"target":{"selector":".features-wrapper","originalId":"6320b80e48e94f429adce430|5c7786f0-ce9f-ea2c-e6d6-b1fc051b7a21","appliesTo":"CLASS"},"targets":[{"selector":".features-wrapper","originalId":"6320b80e48e94f429adce430|5c7786f0-ce9f-ea2c-e6d6-b1fc051b7a21","appliesTo":"CLASS"}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":12,"scrollOffsetUnit":"%","delay":0,"direction":"BOTTOM","effectIn":true},"createdOn":1638799131608},"e-9":{"id":"e-9","name":"","animationType":"custom","eventTypeId":"MOUSE_OVER","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-3","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-10"}},"mediaQueries":["main"],"target":{"selector":".phone-shocase-image","originalId":"6320b80e48e94f429adce430|87149cb4-f3aa-6678-3d9f-21ec7c2125bd","appliesTo":"CLASS"},"targets":[{"selector":".phone-shocase-image","originalId":"6320b80e48e94f429adce430|87149cb4-f3aa-6678-3d9f-21ec7c2125bd","appliesTo":"CLASS"}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1638800578972},"e-10":{"id":"e-10","name":"","animationType":"custom","eventTypeId":"MOUSE_OUT","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-4","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-9"}},"mediaQueries":["main"],"target":{"selector":".phone-shocase-image","originalId":"6320b80e48e94f429adce430|87149cb4-f3aa-6678-3d9f-21ec7c2125bd","appliesTo":"CLASS"},"targets":[{"selector":".phone-shocase-image","originalId":"6320b80e48e94f429adce430|87149cb4-f3aa-6678-3d9f-21ec7c2125bd","appliesTo":"CLASS"}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1638800578972},"e-15":{"id":"e-15","name":"","animationType":"custom","eventTypeId":"MOUSE_OVER","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-7","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-16"}},"mediaQueries":["main"],"target":{"selector":".nav-link-wrapper","originalId":"ec054acf-6572-2802-c564-4617e8122711","appliesTo":"CLASS"},"targets":[{"selector":".nav-link-wrapper","originalId":"ec054acf-6572-2802-c564-4617e8122711","appliesTo":"CLASS"}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1639132177222},"e-16":{"id":"e-16","name":"","animationType":"custom","eventTypeId":"MOUSE_OUT","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-8","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-15"}},"mediaQueries":["main"],"target":{"selector":".nav-link-wrapper","originalId":"ec054acf-6572-2802-c564-461
214907e8122711","appliesTo":"CLASS"},"targets":[{"selector":".nav-link-wrapper","originalId":"ec054acf-6572-2802-c564-4617e8122711","appliesTo":"CLASS"}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1639132177224},"e-21":{"id":"e-21","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"SLIDE_EFFECT","instant":false,"config":{"actionListId":"slideInBottom","autoStopEventId":"e-22"}},"mediaQueries":["main"],"target":{"selector":".h4-heading-24px","originalId":"6320b80e48e94f429adce430|45922941-c58e-2e73-722d-838b2625f756","appliesTo":"CLASS"},"targets":[{"selector":".h4-heading-24px","originalId":"6320b80e48e94f429adce430|45922941-c58e-2e73-722d-838b2625f756","appliesTo":"CLASS"}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":10,"direction":"BOTTOM","effectIn":true},"createdOn":1639134931946},"e-27":{"id":"e-27","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"SLIDE_EFFECT","instant":false,"config":{"actionListId":"slideInBottom","autoStopEventId":"e-28"}},"mediaQueries":["main"],"target":{"id":"6320b80e48e94f429adce430|0f95d220-4a21-7b53-85d9-138ad8503418","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"6320b80e48e94f429adce430|0f95d220-4a21-7b53-85d9-138ad8503418","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":10,"scrollOffsetUnit":"%","delay":0,"direction":"BOTTOM","effectIn":true},"createdOn":1639136136472},"e-35":{"id":"e-35","name":"","animationType":"custom","eventTypeId":"MOUSE_OVER","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-7","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-36"}},"mediaQueries":["main","medium","small","tiny"],"target":{"selector":".footer-grid-wrapper","originalId":"3927ec4b-44cf-33b5-ea95-93c75583b1b0","appliesTo":"CLASS"},"targets":[{"selector":".footer-grid-wrapper","originalId":"3927ec4b-44cf-33b5-ea95-93c75583b1b0","appliesTo":"CLASS"}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1639151324106},"e-36":{"id":"e-36","name":"","animationType":"custom","eventTypeId":"MOUSE_OUT","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-8","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-35"}},"mediaQueries":["main","medium","small","tiny"],"target":{"selector":".footer-grid-wrapper","originalId":"3927ec4b-44cf-33b5-ea95-93c75583b1b0","appliesTo":"CLASS"},"targets":[{"selector":".footer-grid-wrapper","originalId":"3927ec4b-44cf-33b5-ea95-93c75583b1b0","appliesTo":"CLASS"}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1639151324109},"e-37":{"id":"e-37","name":"","animationType":"custom","eventTypeId":"PAGE_START","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-9","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-38"}},"mediaQueries":["main","medium","small","tiny"],"target":{"id":"6320b80e48e94f429adce430","appliesTo":"PAGE","styleBlockIds":[]},"targets":[{"id":"6320b80e48e94f429adce430","appliesTo":"PAGE","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1639424029982},"e-39":{"id":"e-39","name":"","animationType":"custom","eventTypeId":"MOUSE_MOVE","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-10","affectedElements":{},"duration":0}},"mediaQueries":["main"],"target":{"id":"6320b80e48e94f429adce430","appliesTo":"PAGE","styleBlockIds":[]},"targets":[{"id":"6320b80e48e94f429adce430","appliesTo":"PAGE","styleBlockIds":[]}],"config":[{"continuousParameterGroupId":"a-10-p","selectedAxis":"X_AXIS","basedOn":"VIEWPORT","reverse":false,"smoothing":95,"restingState":100},{"continuousParameterGroupId":"a-10-p-2","selectedAxis":"Y_AXIS","basedOn":"VIEWPORT","reverse":false,"smoothing":95,"restingState":100}],"createdOn":1639425658643},"e-40":{"id":"e-40","name":"","animationType":"custom","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-11","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-41"}},"mediaQueries":["main","medium","small","tiny"],"target":{"id":"6320b80e48e94f429adce430|863125f7-5010-b2e7-a59f-ca69e73c8a5e","a
21490ppliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"6320b80e48e94f429adce430|863125f7-5010-b2e7-a59f-ca69e73c8a5e","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":20,"scrollOffsetUnit":"%","delay":null,"direction":null,"effectIn":null},"createdOn":1639427196699},"e-42":{"id":"e-42","name":"","animationType":"custom","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-12","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-43"}},"mediaQueries":["main","medium","small","tiny"],"target":{"id":"6320b80e48e94f429adce430|3eb49d8d-7ba8-cb71-da2d-dd30e7a90916","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"6320b80e48e94f429adce430|3eb49d8d-7ba8-cb71-da2d-dd30e7a90916","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":20,"scrollOffsetUnit":"%","delay":null,"direction":null,"effectIn":null},"createdOn":1639427799725},"e-44":{"id":"e-44","name":"","animationType":"custom","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-13","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-45"}},"mediaQueries":["main","medium","small","tiny"],"target":{"id":"6320b80e48e94f429adce430|7bad603d-e669-7cb7-70c1-bb2705e2d8d9","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"6320b80e48e94f429adce430|7bad603d-e669-7cb7-70c1-bb2705e2d8d9","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":20,"scrollOffsetUnit":"%","delay":null,"direction":null,"effectIn":null},"createdOn":1639429020457},"e-46":{"id":"e-46","name":"","animationType":"custom","eventTypeId":"SCROLLING_IN_VIEW","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-14","affectedElements":{},"duration":0}},"mediaQueries":["main","medium"],"target":{"id":"6320b80e48e94f429adce430|14f855b0-4be0-7297-e406-f5f7a2314807","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"6320b80e48e94f429adce430|14f855b0-4be0-7297-e406-f5f7a2314807","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":[{"continuousParameterGroupId":"a-14-p","smoothing":90,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1639429370352},"e-47":{"id":"e-47","name":"","animationType":"custom","eventTypeId":"SCROLLING_IN_VIEW","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-15","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"id":"6320b80e48e94f429adce430|3eb49d8d-7ba8-cb71-da2d-dd30e7a90915","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"6320b80e48e94f429adce430|3eb49d8d-7ba8-cb71-da2d-dd30e7a90915","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":[{"continuousParameterGroupId":"a-15-p","smoothing":95,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1639429402393},"e-48":{"id":"e-48","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"SLIDE_EFFECT","instant":false,"config":{"actionListId":"slideInBottom","autoStopEventId":"e-49"}},"mediaQueries":["main"],"target":{"selector":".heading-wrapper","originalId":"6320b80e48e94f429adce430|50a5b83a-6bc0-fbdc-12af-6334b4c8b4ba","appliesTo":"CLASS"},"targets":[{"selector":".heading-wrapper","originalId":"6320b80e48e94f429adce430|50a5b83a-6bc0-fbdc-12af-6334b4c8b4ba","appliesTo":"CLASS"}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":12,"scrollOffsetUnit":"%","delay":0,"direction":"BOTTOM","effectIn":true},"createdOn":1639429536210},"e-52":{"id":"e-52","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"SLIDE_EFFECT","instant":false,"config":{"actionListId":"slideInBottom","autoStopEventId":"e-53"}},"mediaQueries":["main"],"target":{"id":"6320b80e48e94f429adce430|e8a2dd70-6093-0c05-a5b5-78e5d6080950","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"6320b80e48e94f429adce430|e8a2dd70-6093-0c05-a5b5-78e5d6080950","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":12,"scrollOffsetUnit":"%","delay":0,"direction":"BOTTOM","effectIn":true},"createdOn":1639429582594}
21490,"e-54":{"id":"e-54","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"SLIDE_EFFECT","instant":false,"config":{"actionListId":"slideInBottom","autoStopEventId":"e-55"}},"mediaQueries":["main","medium","small","tiny"],"target":{"id":"6320b80e48e94f429adce430|87149cb4-f3aa-6678-3d9f-21ec7c2125bd","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"6320b80e48e94f429adce430|87149cb4-f3aa-6678-3d9f-21ec7c2125bd","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":12,"scrollOffsetUnit":"%","delay":0,"direction":"BOTTOM","effectIn":true},"createdOn":1639429643251},"e-56":{"id":"e-56","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"SLIDE_EFFECT","instant":false,"config":{"actionListId":"slideInBottom","autoStopEventId":"e-57"}},"mediaQueries":["main","medium","small","tiny"],"target":{"id":"6320b80e48e94f429adce430|4f5d1306-37ca-f739-5223-e97ac188bfed","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"6320b80e48e94f429adce430|4f5d1306-37ca-f739-5223-e97ac188bfed","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":12,"scrollOffsetUnit":"%","delay":100,"direction":"BOTTOM","effectIn":true},"createdOn":1639429656690},"e-58":{"id":"e-58","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"SLIDE_EFFECT","instant":false,"config":{"actionListId":"slideInBottom","autoStopEventId":"e-59"}},"mediaQueries":["main","medium","small","tiny"],"target":{"id":"6320b80e48e94f429adce430|358ba3ed-4fdc-a0d5-71c7-b855ffa9f3c1","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"6320b80e48e94f429adce430|358ba3ed-4fdc-a0d5-71c7-b855ffa9f3c1","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":12,"scrollOffsetUnit":"%","delay":200,"direction":"BOTTOM","effectIn":true},"createdOn":1639429690961},"e-60":{"id":"e-60","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"SLIDE_EFFECT","instant":false,"config":{"actionListId":"slideInBottom","autoStopEventId":"e-61"}},"mediaQueries":["main","medium","small","tiny"],"target":{"id":"6320b80e48e94f429adce430|e249fe10-aeaa-b226-3efd-c605ae04b76a","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"6320b80e48e94f429adce430|e249fe10-aeaa-b226-3efd-c605ae04b76a","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":12,"scrollOffsetUnit":"%","delay":100,"direction":"BOTTOM","effectIn":true},"createdOn":1639429704478},"e-62":{"id":"e-62","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"SLIDE_EFFECT","instant":false,"config":{"actionListId":"slideInBottom","autoStopEventId":"e-63"}},"mediaQueries":["main","medium","small","tiny"],"target":{"id":"6320b80e48e94f429adce430|3e7da343-46c0-a239-b51a-8d27693c3ed7","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"6320b80e48e94f429adce430|3e7da343-46c0-a239-b51a-8d27693c3ed7","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":12,"scrollOffsetUnit":"%","delay":200,"direction":"BOTTOM","effectIn":true},"createdOn":1639429877310},"e-64":{"id":"e-64","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"SLIDE_EFFECT","instant":false,"config":{"actionListId":"slideInBottom","autoStopEventId":"e-65"}},"mediaQueries":["main","medium","small","tiny"],"target":{"id":"6320b80e48e94f429adce430|3eb49d8d-7ba8-cb71-da2d-dd30e7a90922","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"6320b80e48e94f429adce430|3eb49d8d-7ba8-cb71-da2d-dd30e7a90922","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":20,"direction":"BOTTOM","effectIn":true},"createdOn":1639609702654},"e-66":{"id":"e-66","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"SLIDE_EFFECT","instant":false,"config":{"actionListId":"slideInBottom","autoStopEventId":"e-67"}},"mediaQueries":["main"],"target":{"id":"6320b80e48e94f429adce430|055f8d34-cb02-71f1-466f-d4a57e596309","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"6320b80e48e94f429adce430|055f8d34-cb02-71f1-466f-d4a57e596309","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":20,"direction":"BOTTOM","effectIn":true},"createdOn":1639609724460},"e-68":{"id":"e-68","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"SLIDE_EFFECT","instant":false,"config":{"actionListId":"slideInBottom","autoStopEventId":"e-69"}},"mediaQueries":["main"],"target":{"id":"6320b80e48e94f429adce430|9a974fa6-0788-6bf9-1f7f-7c68db6117fc","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"6320b80e48e94f429adce430|9a974fa6-0788-6bf9-1f7f-7c68db6117fc","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":10,"direction":"BOTTOM","effectIn":true},"createdOn":1639609765365},"e-70":{"id":"e-70","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"SLIDE_EFFECT","instant":false,"config":{"actionListId":"slideInBottom","autoStopEventId":"e-71"}},"mediaQueries":["main"],"target":{"id":"6320b80e48e94f429adce430|8f64a26b-34cc-580f-c2f5-b7038143c6af","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"6320b80e48e94f429adce430|8f64a26b-34cc-580f-c2f5-b7038143c6af","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":10,"scrollOffsetUnit":"%","delay":50,"direction":"BOTTOM","effectIn":true},"createdOn":1639609829188},"e-72":{"id":"e-72","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"SLIDE_EFFECT","instant":false,"config":{"actionListId":"slideInBottom","autoStopEventId":"e-73"}},"mediaQueries":["main"],"target":{"id":"6320b80e48e94f429adce430|03bae5bb-eae9-d7f9-0021-797da239eb4f","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"6320b80e48e94f429adce430|03bae5bb-eae9-d7f9-0021-797da239eb4f","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":10,"scrollOffsetUnit":"%","delay":50,"direction":"BOTTOM","effectIn":true},"createdOn":1639609892433}
21490,"e-74":{"id":"e-74","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"SLIDE_EFFECT","instant":false,"config":{"actionListId":"slideInBottom","autoStopEventId":"e-75"}},"mediaQueries":["main"],"target":{"id":"6320b80e48e94f429adce430|ffbdab46-09a7-e922-6ca9-5aef5051c338","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"6320b80e48e94f429adce430|ffbdab46-09a7-e922-6ca9-5aef5051c338","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":10,"scrollOffsetUnit":"%","delay":50,"direction":"BOTTOM","effectIn":true},"createdOn":1639609906494},"e-78":{"id":"e-78","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"SLIDE_EFFECT","instant":false,"config":{"actionListId":"slideInBottom","autoStopEventId":"e-79"}},"mediaQueries":["main"],"target":{"id":"6320b80e48e94f429adce430|f6be6e95-df48-9ba9-7338-7589b1f8f8a7","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"6320b80e48e94f429adce430|f6be6e95-df48-9ba9-7338-7589b1f8f8a7","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":12,"scrollOffsetUnit":"%","delay":0,"direction":"BOTTOM","effectIn":true},"createdOn":1639610232811},"e-140":{"id":"e-140","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"SLIDE_EFFECT","instant":false,"config":{"actionListId":"slideInBottom","autoStopEventId":"e-141"}},"mediaQueries":["main"],"target":{"id":"6320b80e48e94f429adce430|89eef08e-a287-72a5-ea0a-edeb7a062a3e","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"6320b80e48e94f429adce430|89eef08e-a287-72a5-ea0a-edeb7a062a3e","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":12,"scrollOffsetUnit":"%","delay":0,"direction":"BOTTOM","effectIn":true},"createdOn":1657542671305},"e-142":{"id":"e-142","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"SLIDE_EFFECT","instant":false,"config":{"actionListId":"slideInBottom","autoStopEventId":"e-143"}},"mediaQueries":["main"],"target":{"id":"6320b80e48e94f429adce430|d59d158e-a75e-1ef1-a542-23d40c6bbb5c","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"6320b80e48e94f429adce430|d59d158e-a75e-1ef1-a542-23d40c6bbb5c","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":12,"scrollOffsetUnit":"%","delay":0,"direction":"BOTTOM","effectIn":true},"createdOn":1658351917476},"e-146":{"id":"e-146","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"SLIDE_EFFECT","instant":false,"config":{"actionListId":"slideInBottom","autoStopEventId":"e-147"}},"mediaQueries":["main"],"target":{"id":"6320b80e48e94f429adce430|d62ce09f-5b7e-5990-9fb3-1d98222eacb5","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"6320b80e48e94f429adce430|d62ce09f-5b7e-5990-9fb3-1d98222eacb5","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":12,"scrollOffsetUnit":"%","delay":0,"direction":"BOTTOM","effectIn":true},"createdOn":1658352155198},"e-148":{"id":"e-148","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"SLIDE_EFFECT","instant":false,"config":{"actionListId":"slideInBottom","autoStopEventId":"e-149"}},"mediaQueries":["main"],"target":{"id":"6320b80e48e94f429adce430|e8f3e73e-6ca3-9293-65d8-4fadd4a575b5","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"6320b80e48e94f429adce430|e8f3e73e-6ca3-9293-65d8-4fadd4a575b5","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":10,"scrollOffsetUnit":"%","delay":50,"direction":"BOTTOM","effectIn":true},"createdOn":1658491179001},"e-150":{"id":"e-150","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"SLIDE_EFFECT","instant":false,"config":{"actionListId":"slideInBottom","autoStopEventId":"e-151"}},"mediaQueries":["main"],"target":{"id":"6320b80e48e94f429adce430|b0330a18-aa02-8e40-0312-da322f5eebb8","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"6320b80e48e94f429adce430|b0330a18-aa02-8e40-0312-da322f5eebb8","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":10,"scrollOffsetUnit":"%","delay":50,"direction":"BOTTOM","effectIn":true},"createdOn":1658491203849},"e-152":{"id":"e-152","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"SLIDE_EFFECT","instant":false,"config":{"actionListId":"slideInBottom","autoStopEventId":"e-153"}},"mediaQueries":["main"],"target":{"id":"6320b80e48e94f429adce430|4fefcef1-45a2-2194-6b4b-cd1f524d5e19","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"6320b80e48e94f429adce430|4fefcef1-45a2-2194-6b4b-cd1f524d5e19","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":10,"scrollOffsetUnit":"%","delay":50,"direction":"BOTTOM","effectIn":true},"createdOn":1658491221083},"e-183":{"id":"e-183","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"SLIDE_EFFECT","instant":false,"config":{"actionListId":"slideInBottom","autoStopEventId":"e-184"}},"mediaQueries":["main"],"target":{"id":"632835ddbe4d18637ed5c61b|0220734d-4561-29a5-95bb-9953a383b352","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"632835ddbe4d18637ed5c61b|0220734d-4561-29a5-95bb-9953a383b352","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":10,"direction":"BOTTOM","effectIn":true},"createdOn":1663583671989},"e-187":{"id":"e-187","name":"","animationType":"preset","eventTypeId":"SCROLLING_IN_VIEW","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-15","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"id":"632835ddbe4d18637ed5c61b|37d7079e-5738-83e3-cfca-f6f0297cced7","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"632835ddbe4d18637ed5c61b|37d7079e-5738-83e3-cfca-f6f0297cced7","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":[{"continuousParameterGroupId":"a-15-p","smoothing":95,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1663584361553},"e-188":{"id":"e-188","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"SLIDE_EFFECT","instant":false,"config":{"actionListId":"slideInBottom","autoStopEventId":"e-189"}},"mediaQueries":["main"],"target":{"id":"632835ddbe4d18637ed5c61b|37d7079e-5738-83e3-cfca-f6f0297ccedd","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"632835ddbe4d18637ed5c61b|37d7079e-5738-83e3-cfca-f6f0297ccedd","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":10,"direction":"BOTTOM","effectIn":true},"createdOn":1663584361553},"e-190":{"id":"e-190","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"SLIDE_EFFECT","instant":false,"config":{"actionListId":"slideInBottom","autoStopEventId":"e-191"}},"mediaQueries":["main"],"target":{"id":"632835ddbe4d18637ed5c61b|8dad4932-299c-db3b-08cb-54c36623c573","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"632835ddbe4d18637ed5c61b|8dad4932-299c-db3b-08cb-54c36623c573","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":10,"direction":"BOTTOM","effectIn":true},"createdOn":1663585234357},"e-192":{"id":"e-192","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"SLIDE_EFFECT","instant":false,"config":{"actionListId":"slideInBottom","autoStopEventId":"e-193"}},"mediaQueries":["main"],"target":{"id":"632835ddbe4d18637ed5c61b|9b0e5b41-51c3-8e1a-4c65-6ba8ef3bb2f1","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"632835ddbe4d18637ed5c61b|9b0e5b41-51c3-8e1a-4c65-6ba8ef3bb2f1","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":10,"direction":"BOTTOM","effectIn":true},"createdOn":1663585303188},"e-194":{"id":"e-194","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"SLIDE_EFFECT","instant":false,"config":{"actionListId":"slideInBottom","autoStopEventId":"e-195"}},"mediaQueries":["main"],"target":{"id":"632835ddbe4d18637ed5c61b|92a0458d-d662-0716-af41-16186cd0b575","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"632835ddbe4d18637ed5c61b|92a0458d-d662-0716-af41-16186cd0b575","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":10,"direction":"BOTTOM","effectIn":true},"createdOn":1663585319172},"e-196":{"id":"e-196","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"SLIDE_EFFECT","instant":false,"config":{"actionListId":"slideInBottom","autoStopEventId":"e-197"}},"mediaQueries":["main"],"target":{"id":"632835ddbe4d18637ed5c61b|6266c5ac-430b-a8ea-b583-36a421b0d6fe","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"632835ddbe4d18637ed5c61b|6266c5ac-430b-a8ea-b583-36a421b0d6fe","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":10,"direction":"BOTTOM","effectIn":true},"createdOn":1663585320145},"e-198":{"id":"e-198","name":"","animationType":"preset","eventTypeId":"SCROLLING_IN_VIEW","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-15","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"id":"632835ddbe4d18637ed5c61b|6fe7827d-8b5a-5895-fb17-5e1eb337be97","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"632835ddbe4d18637ed5c61b|6fe7827d-8b5a-5895-fb17-5e1eb337be97","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":[{"continuousParameterGroupId":"a-15-p","smoothing":95,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1663585504119},"e-199":{"id":"e-199","name":"","animationType":"preset","eventTypeId":"SCROLLING_IN_VIEW","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-15","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"id":"632835ddbe4d18637ed5c61b|7d9f4871-d2f9-5fd4-1a59-1ee9fe9ec0fb","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"632835ddbe4d18637ed5c61b|7d9f4871-d2f9-5fd4-1a59-1ee9fe9ec0fb","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":[{"continuousParameterGroupId":"a-15-p","smoothing":95,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1663586736489},"e-202":{"id":"e-202","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"SLIDE_EFFECT","instant":false,"config":{"actionListId":"slideInBottom","autoStopEventId":"e-203"}},"mediaQueries":["main"],"target":{"id":"632835ddbe4d18637ed5c61b|ce820acf-1d22-43bc-9a2d-de12e28ea8c4","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"632835ddbe4d18637ed5c61b|ce820acf-1d22-43bc-9a2d-de12e28ea8c4","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":10,"direction":"BOTTOM","effectIn":true},"createdOn":1663587948511},"e-204":{"id":"e-204","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"SLIDE_EFFECT","instant":false,"config":{"actionListId":"slideInBottom","autoStopEventId":"e-205"}},"mediaQueries":["main"],"target":{"id":"632835ddbe4d18637ed5c61b|f1342cee-50f8-a30f-b2cb-d70f61215d81","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"632835ddbe4d18637ed5c61b|f1342cee-50f8-a30f-b2cb-d70f61215d81","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":10,"direction":"BOTTOM","effectIn":true},"createdOn":1663588007243}
21490,"e-206":{"id":"e-206","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"SLIDE_EFFECT","instant":false,"config":{"actionListId":"slideInBottom","autoStopEventId":"e-207"}},"mediaQueries":["main"],"target":{"id":"632835ddbe4d18637ed5c61b|5b1d77a7-0e1f-e5dc-b5ea-79a46753d25c","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"632835ddbe4d18637ed5c61b|5b1d77a7-0e1f-e5dc-b5ea-79a46753d25c","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":10,"direction":"BOTTOM","effectIn":true},"createdOn":1663588009896},"e-208":{"id":"e-208","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"SLIDE_EFFECT","instant":false,"config":{"actionListId":"slideInBottom","autoStopEventId":"e-209"}},"mediaQueries":["main"],"target":{"id":"632835ddbe4d18637ed5c61b|3eb1453b-464e-627e-d924-8cb0936d2f0e","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"632835ddbe4d18637ed5c61b|3eb1453b-464e-627e-d924-8cb0936d2f0e","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":10,"direction":"BOTTOM","effectIn":true},"createdOn":1663588012299},"e-210":{"id":"e-210","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"SLIDE_EFFECT","instant":false,"config":{"actionListId":"slideInBottom","autoStopEventId":"e-211"}},"mediaQueries":["main"],"target":{"id":"632835ddbe4d18637ed5c61b|1f85d77d-717e-ea7c-22ec-aae96fb4bb6c","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"632835ddbe4d18637ed5c61b|1f85d77d-717e-ea7c-22ec-aae96fb4bb6c","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":10,"direction":"BOTTOM","effectIn":true},"createdOn":1663605907303},"e-237":{"id":"e-237","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"SLIDE_EFFECT","instant":false,"config":{"actionListId":"slideInBottom","autoStopEventId":"e-238"}},"mediaQueries":["main"],"target":{"id":"632835ddbe4d18637ed5c61b|7def0b09-516b-3c4d-a820-5450b83cc665","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"632835ddbe4d18637ed5c61b|7def0b09-516b-3c4d-a820-5450b83cc665","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":10,"direction":"BOTTOM","effectIn":true},"createdOn":1663615780887},"e-239":{"id":"e-239","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"SLIDE_EFFECT","instant":false,"config":{"actionListId":"slideInBottom","autoStopEventId":"e-240"}},"mediaQueries":["main"],"target":{"id":"632835ddbe4d18637ed5c61b|ad49f1bc-d780-ab13-bdb1-a1f8c2ff5fab","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"632835ddbe4d18637ed5c61b|ad49f1bc-d780-ab13-bdb1-a1f8c2ff5fab","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":10,"direction":"BOTTOM","effectIn":true},"createdOn":1663695282689},"e-241":{"id":"e-241","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"SLIDE_EFFECT","instant":false,"config":{"actionListId":"slideInBottom","autoStopEventId":"e-242"}},"mediaQueries":["main"],"target":{"id":"632835ddbe4d18637ed5c61b|25b5d729-e107-43a7-eb4d-e02467ff64ac","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"632835ddbe4d18637ed5c61b|25b5d729-e107-43a7-eb4d-e02467ff64ac","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":10,"direction":"BOTTOM","effectIn":true},"createdOn":1663695672952},"e-243":{"id":"e-243","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"SLIDE_EFFECT","instant":false,"config":{"actionListId":"slideInBottom","autoStopEventId":"e-244"}},"mediaQueries":["main"],"target":{"id":"632835ddbe4d18637ed5c61b|087f64e0-10ed-aeee-432d-7e18ea8e32af","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"632835ddbe4d18637ed5c61b|087f64e0-10ed-aeee-432d-7e18ea8e32af","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":10,"direction":"BOTTOM","effectIn":true},"createdOn":1663695674261},"e-245":{"id":"e-245","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"SLIDE_EFFECT","instant":false,"config":{"actionListId":"slideInBottom","autoStopEventId":"e-246"}},"mediaQueries":["main"],"target":{"id":"632835ddbe4d18637ed5c61b|7697
214905f44-2969-2dd5-b5f8-33e5afd9847a","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"632835ddbe4d18637ed5c61b|76975f44-2969-2dd5-b5f8-33e5afd9847a","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":10,"direction":"BOTTOM","effectIn":true},"createdOn":1663695675064},"e-247":{"id":"e-247","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"SLIDE_EFFECT","instant":false,"config":{"actionListId":"slideInBottom","autoStopEventId":"e-248"}},"mediaQueries":["main"],"target":{"id":"632835ddbe4d18637ed5c61b|8283371e-af6a-87f1-b9f2-f9eaa7c90b5b","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"632835ddbe4d18637ed5c61b|8283371e-af6a-87f1-b9f2-f9eaa7c90b5b","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":10,"direction":"BOTTOM","effectIn":true},"createdOn":1663696008958},"e-249":{"id":"e-249","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"SLIDE_EFFECT","instant":false,"config":{"actionListId":"slideInBottom","autoStopEventId":"e-250"}},"mediaQueries":["main"],"target":{"id":"632835ddbe4d18637ed5c61b|b16f66d8-0fe9-09e0-c217-565b80eb2a38","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"632835ddbe4d18637ed5c61b|b16f66d8-0fe9-09e0-c217-565b80eb2a38","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":10,"direction":"BOTTOM","effectIn":true},"createdOn":1663697248534},"e-257":{"id":"e-257","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"SLIDE_EFFECT","instant":false,"config":{"actionListId":"slideInBottom","autoStopEventId":"e-258"}},"mediaQueries":["main"],"target":{"id":"632835ddbe4d18637ed5c61b|cd307170-dbd1-052b-d764-2e021390a71e","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"632835ddbe4d18637ed5c61b|cd307170-dbd1-052b-d764-2e021390a71e","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":10,"direction":"BOTTOM","effectIn":true},"createdOn":1663697315865},"e-259":{"id":"e-259","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"SLIDE_EFFECT","instant":false,"config":{"actionListId":"slideInBottom","autoStopEventId":"e-260"}},"mediaQueries":["main"],"target":{"id":"632835ddbe4d18637ed5c61b|72566177-1e61-09b1-d2d6-f1f9f4941a8c","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"632835ddbe4d18637ed5c61b|72566177-1e61-09b1-d2d6-f1f9f4941a8c","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":10,"direction":"BOTTOM","effectIn":true},"createdOn":1663697328947},"e-261":{"id":"e-261","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"SLIDE_EFFECT","instant":false,"config":{"actionListId":"slideInBottom","autoStopEventId":"e-262"}},"mediaQueries":["main"],"target":{"id":"632835ddbe4d18637ed5c61b|34acea05-bb49-a7b2-aa88-fe462d72999f","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"632835ddbe4d18637ed5c61b|34acea05-bb49-a7b2-aa88-fe462d72999f","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":10,"direction":"BOTTOM","effectIn":true},"createdOn":1663697341768},"e-263":{"id":"e-263","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"SLIDE_EFFECT","instant":false,"config":{"actionListId":"slideInBottom","autoStopEventId":"e-264"}},"mediaQueries":["main"],"target":{"id":"632835ddbe4d18637ed5c61b|2adb2560-3af3-5ed4-3ced-9ac30634809c","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"632835ddbe4d18637ed5c61b|2adb2560-3af3-5ed4-3ced-9ac30634809c","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":10,"direction":"BOTTOM","effectIn":true},"createdOn":1663700693319}}
21490,"actionLists":{"a-2":{"id":"a-2","title":"Numbers Wrapper Animation","actionItemGroups":[{"actionItems":[{"id":"a-2-n","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"","duration":500,"target":{"useEventTarget":"CHILDREN","selector":".white-line","selectorGuids":["e829b93f-ace3-f935-c5e1-1427467babae"]},"yValue":120,"xUnit":"PX","yUnit":"%","zUnit":"PX"}},{"id":"a-2-n-2","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"","duration":500,"target":{"useEventTarget":"CHILDREN","selector":".numbers-holder","selectorGuids":["2530bc85-3f8c-6e54-46eb-ed3f1588210b"]},"yValue":120,"xUnit":"PX","yUnit":"%","zUnit":"PX"}}]},{"actionItems":[{"id":"a-2-n-3","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"outExpo","duration":1000,"target":{"useEventTarget":"CHILDREN","selector":".white-line","selectorGuids":["e829b93f-ace3-f935-c5e1-1427467babae"]},"yValue":0,"xUnit":"PX","yUnit":"%","zUnit":"PX"}},{"id":"a-2-n-4","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"outExpo","duration":1000,"target":{"useEventTarget":"CHILDREN","selector":".numbers-holder","selectorGuids":["2530bc85-3f8c-6e54-46eb-ed3f1588210b"]},"yValue":0,"xUnit":"PX","yUnit":"%","zUnit":"PX"}}]}],"useFirstGroupAsInitialState":true,"createdOn":1638797987995},"a-3":{"id":"a-3","title":"Phone Screen Grow","actionItemGroups":[{"actionItems":[{"id":"a-3-n","actionTypeId":"TRANSFORM_SCALE","config":{"delay":0,"easing":"","duration":500,"target":{"useEventTarget":true,"id":"6320b80e48e94f429adce430|87149cb4-f3aa-6678-3d9f-21ec7c2125bd"},"xValue":1,"yValue":1,"locked":true}}]},{"actionItems":[{"id":"a-3-n-2","actionTypeId":"TRANSFORM_SCALE","config":{"delay":0,"easing":"outExpo","duration":800,"target":{"useEventTarget":true,"id":"6320b80e48e94f429adce430|87149cb4-f3aa-6678-3d9f-21ec7c2125bd"},"xValue":1.1,"yValue":1.1,"locked":true}}]},{"actionItems":[{"id":"a-3-n-3","actionTypeId":"TRANSFORM_SCALE","config":{"delay":20000,"easing":"outExpo","duration":0,"target":{"useEventTarget":true,"id":"6320b80e48e94f429adce430|87149cb4-f3aa-6678-3d9f-21ec7c2125bd"},"xValue":1,"yValue":1,"locked":true}}]}],"useFirstGroupAsInitialState":true,"createdOn":1638800586421},"a-4":{"id":"a-4","title":"Phone Screen Shrink","actionItemGroups":[{"actionItems":[{"id":"a-4-n","actionTypeId":"TRANSFORM_SCALE","config":{"delay":0,"easing":"outExpo","duration":1000,"target":{"useEventTarget":true,"id":"6320b80e48e94f429adce430|87149cb4-f3aa-6678-3d9f-21ec7c2125bd"},"xValue":1,"yValue":1,"locked":true}}]}],"useFirstGroupAsInitialState":false,"createdOn":1638800709192},"a-7":{"id":"a-7","title":"Nav Links Hover In","actionItemGroups":[{"actionItems":[{"id":"a-7-n-6","actionTypeId":"GENERAL_DISPLAY","config":{"delay":0,"easing":"","duration":0,"target":{"useEventTarget":"CHILDREN","selector":".linear-background-absolute","selectorGuids":["8242f9db-0f76-ce67-7a58-b39567f3bb4f"]},"value":"none"}},{"id":"a-7-n-8","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"","duration":500,"target":{"useEventTarget":"CHILDREN","selector":".linear-background-absolute","selectorGuids":["8242f9db-0f76-ce67-7a58-b39567f3bb4f"]},"xValue":101,"xUnit":"px","yUnit":"PX","zUnit":"PX"}}]},{"actionItems":[{"id":"a-7-n-3","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"outExpo","duration":0,"target":{"useEventTarget":"CHILDREN","selector":".linear-background-absolute","selectorGuids":["8242f9db-0f76-ce67-7a58-b39567f3bb4f"]},"xValue":101,"xUnit":"%","yUnit":"PX","zUnit":"PX"}},{"id":"a-7-n-7","actionTypeId":"GENERAL_DISPLAY","config":{"delay":0,"easing":"","duration":0,"target":{"useEventTarget":"CHILDREN","selector":".linear-background-absolute","selectorGuids":["8242f9db-0f76-ce67-7a58-b39567f3bb4f"]},"value":"block"}}]},{"actionItems":[{"id":"a-7-n-4","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"outExpo","duration":1500,"target":{"useEventTarget":"CHILDREN","selector":".linear-background-absolute","selectorGuids":["8242f9db-0f76-ce67-7a58-b39567f3bb4f"]},"xValue":0,"xUnit":"%","yUnit":"PX","zUnit":"PX"}}]}],"useFirstGroupAsInitialState":true,"createdOn":1639132183267},"a-8":{"id":"a-8","title":"Nav Link Hover Out","actionItemGroups":[{"actionItems":[{"id":"a-8-n","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"outExpo","duration":1500,"target":{"useEventTarget":"CHILDREN","selector":".linear-background-absolute","selectorGuids":["8242f9db-0f76-ce67-7a58-b39567f3bb4f"]},"xValue":101,"xUnit":"%","yUnit":"PX","zUnit":"PX"}}]},{"actionItems":[{"id":"a-8-n-2","actionTypeId":"GENERAL_DISPLAY","config":{"delay":0,"easing":"","duration":0,"target":{"useEventTarget":"CHILDREN","selector":".linear-background-absolute","selectorGuids":["8242f9db-0f76-ce67-7a58-b39567f3bb4f"]},"value":"none"}}]}],"useFirstGroupAsInitialState":false,"createdOn":1639132685731},"a-9":{"id":"a-9","title":"Home Hero Animation","actionItemGroups":[{"actionItems":[{"id":"a-9-n","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"","duration":0,"target":{"id":"6320b80e48e94f429adce430|29a
214905da61-c493-1b53-9116-a7df0297bff7"},"value":0,"unit":""}},{"id":"a-9-n-29","actionTypeId":"TRANSFORM_SCALE","config":{"delay":0,"easing":"","duration":500,"target":{"id":"6320b80e48e94f429adce430|0db1074c-fe09-5f07-227c-3d184842901d"},"xValue":0,"locked":false}},{"id":"a-9-n-21","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"","duration":500,"target":{"id":"6320b80e48e94f429adce430|9866a8bf-564f-1ded-acb4-166e6cb0ea97"},"yValue":80,"xUnit":"PX","yUnit":"px","zUnit":"PX"}},{"id":"a-9-n-20","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"","duration":500,"target":{"id":"6320b80e48e94f429adce430|74d09aeb-f8b7-b198-3650-5f5a44c7449c"},"yValue":80,"xUnit":"PX","yUnit":"px","zUnit":"PX"}},{"id":"a-9-n-19","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"","duration":500,"target":{"id":"6320b80e48e94f429adce430|3fb391ea-0ace-84bd-b75e-44e72aac694d"},"yValue":80,"xUnit":"PX","yUnit":"px","zUnit":"PX"}},{"id":"a-9-n-18","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"","duration":500,"target":{"id":"6320b80e48e94f429adce430|6b818461-0438-357e-741a-3b27cd647097"},"yValue":80,"xUnit":"PX","yUnit":"px","zUnit":"PX"}},{"id":"a-9-n-17","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"","duration":500,"target":{"id":"6320b80e48e94f429adce430|10228e45-aed1-0cce-8aac-304f05b392b9"},"yValue":80,"xUnit":"PX","yUnit":"px","zUnit":"PX"}},{"id":"a-9-n-16","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"","duration":500,"target":{"id":"6320b80e48e94f429adce430|044c260a-0305-b160-0dce-f5b2b3502bf9"},"yValue":80,"xUnit":"PX","yUnit":"px","zUnit":"PX"}},{"id":"a-9-n-15","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"","duration":500,"target":{"id":"6320b80e48e94f429adce430|29a5da61-c493-1b53-9116-a7df0297bff7"},"yValue":80,"xUnit":"PX","yUnit":"px","zUnit":"PX"}},{"id":"a-9-n-7","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"","duration":0,"target":{"id":"6320b80e48e94f429adce430|044c260a-0305-b160-0dce-f5b2b3502bf9"},"value":0,"unit":""}},{"id":"a-9-n-6","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"","duration":0,"target":{"id":"6320b80e48e94f429adce430|10228e45-aed1-0cce-8aac-304f05b392b9"},"value":0,"unit":""}},{"id":"a-9-n-5","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"","duration":0,"target":{"id":"6320b80e48e94f429adce430|6b818461-0438-357e-741a-3b27cd647097"},"value":0,"unit":""}},{"id":"a-9-n-4","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"","duration":0,"target":{"id":"6320b80e48e94f429adce430|3fb391ea-0ace-84bd-b75e-44e72aac694d"},"value":0,"unit":""}},{"id":"a-9-n-3","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"","duration":0,"target":{"id":"6320b80e48e94f429adce430|74d09aeb-f8b7-b198-3650-5f5a44c7449c"},"value":0,"unit":""}},{"id":"a-9-n-2","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"","duration":0,"target":{"id":"6320b80e48e94f429adce430|9866a8bf-564f-1ded-acb4-166e6cb0ea97"},"value":0,"unit":""}}]},{"actionItems":[{"id":"a-9-n-30","actionTypeId":"TRANSFORM_SCALE","config":{"delay":0,"easing":"outExpo","duration":1000,"target":{"id":"6320b80e48e94f429adce430|0db1074c-fe09-5f07-227c-3d184842901d"},"xValue":1,"locked":false}},{"id":"a-9-n-28","actionTypeId":"TRANSFORM_MOVE","config":{"delay":200,"easing":"outExpo","duration":1000,"target":{"id":"6320b80e48e94f429adce430|29a5da61-c493-1b53-9116-a7df0297bff7"},"yValue":0,"xUnit":"PX","yUnit":"px","zUnit":"PX"}},{"id":"a-9-n-8","actionTypeId":"STYLE_OPACITY","config":{"delay":200,"easing":"outExpo","duration":1000,"target":{"id":"6320b80e48e94f429adce430|29a5da61-c493-1b53-9116-a7df0297bff7"},"value":1,"unit":""}},{"id":"a-9-n-14","actionTypeId":"STYLE_OPACITY","config":{"delay":400,"easing":"outExpo","duration":1000,"target":{"id":"6320b80e48e94f429adce430|9866a8bf-564f-1ded-acb4-166e6cb0ea97"},"value":1,"unit":""}},{"id":"a-9-n-22","actionTypeId":"TRANSFORM_MOVE","config":{"delay":400,"easing":"outExpo","duration":1000,"target":{"id":"6320b80e48e94f429adce430|9866a8bf-564f-1ded-acb4-166e6cb0ea97"},"yValue":0,"xUnit":"PX","yUnit":"px","zUnit":"PX"}},{"id":"a-9-n-13","actionTypeId":"STYLE_OPACITY","config":{"delay":600,"easing":"outExpo","duration":1000,"target":{"id":"6320b80e48e94f429adce430|74d09aeb-f8b7-b198-3650-5f5a44c7449c"},"value":1,"unit":""}},{"id":"a-9-n-23","actionTypeId":"TRANSFORM_MOVE","config":{"delay":600,"easing":"outExpo","duration":1000,"target":{"id":"6320b80e48e94f429adce430|74d09aeb-f8b7-b198-3650-5f5a44c7449c"},"yValue":0,"xUnit":"PX","yUnit":"px","zUnit":"PX"}},{"id":"a-9-n-12","actionTypeId":"STYLE_OPACITY","config":{"delay":800,"easing":"outExpo","duration":1000,"target":{"id":"6320b80e48e94f429adce430|3fb391ea-0ace-84bd-b75e-44e72aac694d"},"value":1,"unit":""}},{"id":"a-9-n-24","actionTypeId":"TRANSFORM_MOVE","config":{"delay":800,"easing":"outExpo","duration":1000,"target":{"id":"6320b80e48e94f429adce430|3fb391ea-0ace-84bd-b75e-44e72aac694d"},"yValue":0,"xUnit":"PX","yUnit":"px","zUnit":"PX"}},{"id":"a-9-n-25","actionTypeId":"TRANSFORM_MOVE","config":{"delay":1000,"easing":"outExpo","duration":1000,"target":{"id":"6320b80e48e94f429adce430|6b818461-0438-357e-741a-3b27cd647097"},"yValue":0,"xUnit":"PX","yUnit":"px","zUnit":"PX"}},{"id":"a-9-n-11","actionTypeId":"STYLE_OPACITY","config":{"delay":1000,"easing":"outExpo","duration":1000,"target":{"id":"6320b80e48e94f429adce430|6b818461-0438-357e-741a-3b27cd647097"},"value":1,"unit":""}},{"id":"a-9-n-9","actionTypeId":"STYLE_OPACITY","config":{"delay":1200,"easing":"outExpo","duration":1000,"target":{"id":"6320b80e48e94f429adce430|044c260a-0305-b160-0dce-f5b2b3502bf9"},"value":1,"unit":""}},{"id":"a-9-n-27","actionTypeId":"TRANSFORM_MOVE","config":{"delay":1200,"easing":"outExpo","duration":1000,"target":{"id":"6320b80e48e94f429adce430|044c260a-0305-b160-0dce-f5b2b3502bf9"},"yValue":0,"xUnit":"PX","yUnit":"px","zUnit":"PX"}},{"id":"a-9-n-26","actionTypeId":"TRANSFORM_MOVE","config":{"delay":1200,"easing":"outExpo","duration":1000,"target":{"id":"6320b80e48e94f429adce430|10228e45-aed1-0cce-8aac-304f05b392b9"},"yValue":0,"xUnit":"PX","yUnit":"px","zUnit":"PX"}},{"id":"a-9-n-10","actionTypeId":"STYLE_OPACITY","config":{"delay":1200,"easing":"outExpo","duration":1000,"target":{"id":"6320b80e48e94f429adce430|10228e45-aed1-0cce-8aac-304f05b392b9"},"value":1,"unit":""}}]}],"useFirstGroupAsInitialState":true,"createdOn":1639424034958},"a-10":{"id":"a-10","title":"Spring Icon Moving Animation","continuousParameterGroups":[{"id":"a-10-p","type":"MOUSE_X","parameterLabel":"Mouse X","continuousActionGroups":[{"keyframe":0,"actionItems":[{"id":"a-10-n","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"","duration":500,"target":{"id":"6320b80e48e94f429adce430|d8e90cdf-95ad-5265-adc2-fb76bffe4228"},"xValue":-40,"xUnit":"px","yUnit":"PX","zUnit":"PX"}},{"id":"a-10-n-3","actionTypeId":"TRANSFORM_ROTATE","config":{"delay":0,"easing":"","duration":500,"target":{"id":"6320b80e48e94f429adce430|d8e90cdf-95ad-5265-adc2-fb76bffe4228"},"zValue":20,"xUnit":"DEG","yUnit":"DEG","zUnit":"deg"}},{"id":"a-10-n-5","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"","duration":500,"target":{"id":"6320b80e48e94f429adce430|3eb49d8d-7ba8-cb71-da2d-dd30e7a90919"},"xValue":-16,"xUnit":"px","yUnit":"PX","zUnit":"PX"}},{"id":"a-10-n-7","actionTypeId":"TRANSFORM_ROTATE","config":{"delay":0,"easing":"","duration":500,"target":{"id":"6320b80e48e94f429adce430|3eb49d8d-7ba8-cb71-da2d-dd30e7a90919"},"zValue":64,"xUnit":"DEG","yUnit":"DEG","zUnit":"deg"}}]},{"keyframe":100,"actionItems":[{"id":"a-10-n-2","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"","duration":500,"target":{"id":"6320b80e48e94f429adce430|d8e90cdf-95ad-5265-adc2-fb76bffe4228"},"xValue":48,"xUnit":"px","yUnit":"PX","zUnit":"PX"}},{"id":"a-10-n-4","actionTypeId":"TRANSFORM_ROTATE","config":{"delay":0,"easing":"","duration":500,"target":{"id":"6320b80e48e94f429adce430|d8e90cdf-95ad-5265-adc2-fb76bffe4228"},"zValue":-26,"xUnit":"DEG","yUnit":"DEG","zUnit":"deg"}},{"id":"a-10-n-6","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"","duration":500,"target":{"id":"6320b80e48e94f429adce430|3eb49d8d-7ba8-cb71-da2d-dd30e7a90919"},"xValue":81,"xUnit":"px","yUnit":"PX","zUnit":"PX"}},{"id":"a-10-n-8","actionTypeId":"TRANSFORM_ROTATE","config":{"delay":0,"easing":"","duration":500,"target":{"id":"6320b80e48e94f429adce430|3eb49d8d-7ba8-cb71-da2d-dd30e7a90919"},"zValue":-41,"xUnit":"DEG","yUnit":"DEG","zUnit":"deg"}}]}]},{"id":"a-10-p-2","type":"MOUSE_Y","parameterLabel":"Mouse Y","continuousActionGroups":[]}],"createdOn":1639425662707},"a-11":{"id":"a-11","title":"Section One Image Scroll Animation","actionItemGroups":[{"actionItems":[{"id":"a-11-n","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"","duration":500,"target":{"useEventTarget":"CHILDREN","id":"6320b80e48e94f429adce430|16b257e3-1dce-f4d0-58b2-0a291ea5a7f5"},"value":0,"unit":""}},{"id":"a-11-n-4","actionTypeId":"TRANSFORM_SCALE","config":{"delay":0,"easing":"","duration":500,"target":{"useEventTarget":"CHILDREN","id":"6320b80e48e94f429adce430|80ce88e1-a26d-89e6-651e-0807f93417f4"},"xValue":1,"locked":false}},{"id":"a-11-n-3","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"","duration":500,"target":{"useEventTarget":"CHILDREN","id":"6320b80e48e94f429adce430|d8e90cdf-95ad-5265-adc2-fb76bffe4228"},"value":0,"unit":""}},{"id":"a-11-n-2","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"","duration":500,"target":{"useEventTarget":"CHILDREN","id":"6320b80e48e94f429adce430|184457c6-2999-4535-a7fc-4b89027f5cba"},"value":0,"unit":""}}]},{"actionItems":[{"id":"a-11-n-6","actionTypeId":"STYLE_OPACITY","config":{"delay":200,"easing":"outExpo","duration":1000,"target":{"useEventTarget":"CHILDREN","id":"6320b80e48e94f429adce430|16b257e3-1dce-f4d0-58b2-0a291ea5a7f5"},"value":1,"unit":""}},{"id":"a-11-n-8","actionTypeId":"STYLE_OPACITY","config":{"delay":400,"easing":"outExpo","duration":1000,"target":{"useEventTarget":"CHILDREN","id":"6320b80e48e94f429adce430|184457c6-2999-4535-a7fc-4b89027f5cba"},"value":1,"unit":""}},{"id":"a-11-n-7","actionTypeId":"STYLE_OPACITY","config":{"delay":600,"easing":"outExpo","duration":1000,"target":{"useEventTarget":"CHILDREN","id":"6320b80e48e94f429adce430|d8e90cdf-95ad-5265-adc2-fb76bffe4228"},"value":1,"unit":""}},{"id":"a-11-n-5","actionTypeId":"TRANSFORM_SCALE","config":{"delay":1000,"easing":"outExpo","duration":1000,"target":{"useEventTarget":"CHILDREN","id":"6320b80e48e94f429adce430|80ce88e1-a26d-89e6-651e-0807f93417f4"},"xValue":0,"locked":false}}]}],"useFirstGroupAsInitialState":true,"createdOn":1639427199763},"a-12":{"id":"a-12","title":"Section Two Scroll Animation","actionItemGroups":[{"actionItems":[{"id":"a-12-n","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"","duration":500,"target":{"useEventTarget":"CHILDREN","id":"6320b80e48e94f429adce430|3eb49d8d-7ba8-cb71-da2d-dd30e7a90919"},"value":0,"unit":""}},{"id":"a-12-n-3","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"","duration":500,"target":{"useEventTarget":"CHILDREN","id":"6320b80e48e94f429adce430|3eb49d8d-7ba8-cb71-da2d-dd30e7a90918"},"value":0,"unit":""}},{"id":"a-12-n-2","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"","duration":500,"target":{"useEventTarget":"CHILDREN","id":"6320b80e48e94f429adce430|3eb49d8d-7ba8-cb71-da2d-dd30e7a9091b"},"value":0,"unit":""}},{"id":"a-12-n-4","actionTypeId":"TRANSFORM_SCALE","config":{"delay":0,"easing":"","duration":500,"target":{"useEventTarget":"CHILDREN","id":"6320b80e48e94f429adce430|2b4f8f4b-5bb4-510c-f40a-130b8c49d110"},"xValue":1,"locked":false}}]},{"actionItems":[{"id":"a-12-n-7","actionTypeId":"STYLE_OPACITY","config":{"delay":200,"easing":"outExpo","duration":1000,"target":{"useEventTarget":"CHILDREN","id":"6320b80e48e94f429adce430|3eb49d8d-7ba8-cb71-da2d-dd30e7a9091b"},"value":1,"unit":""}},{"id":"a-12-n-6","actionTypeId":"STYLE_OPACITY","config":{"delay":400,"easing":"outExpo","duration":1000,"target":{"useEventTarget":"CHILDREN","id":"6320b80e48e94f429adce430|3eb49d8d-7ba8-cb71-da2d-dd30e7a90918"},"value":1,"unit":""}},{"id":"a-12-n-5","actionTypeId":"STYLE_OPACITY","config":{"delay":600,"easing":"outExpo","duration":1000,"target":{"useEventTarget":"CHILDREN","id":"6320b80e48e94f429adce430|3eb49d8d-7ba8-cb71-da2d-dd30e7a90919"},"value":1,"unit":""}},{"id":"a-12-n-8","actionTypeId":"TRANSFORM_SCALE","config":{"delay":1000,"easing":"","duration":500,"target":{"useEventTarget":"CHILDREN","id":"6320b80e48e94f429adce430|2b4f8f4b-5bb4-510c-f40a-130b8c49d110"},"xValue":0,"locked":false}}]}],"useFirstGroupAsInitialState":true,"createdOn":1639427806422},"a-13":{"id":"a-13","title":"CTA Image Scroll Animation","actionItemGroups":[{"actionItems":[{"id":"a-13-n","actionTypeId":"TRANSFORM_SCALE","config":{"delay":0,"easing":"","duration":500,"target":{"useEventTarget":"CHILDREN","selector":".cta-image-cover","selectorGuids":["b10f405d-2250-52b4-c8e8-a08f718d2747"]},"xValue":1,"locked":false}}]},{"actionItems":[{"id":"a-13-n-2","actionTypeId":"TRANSFORM_SCALE","config":{"delay":0,"easing":"outExpo","duration":3000,"target":{"useEventTarget":"CHILDREN","selector":".cta-image-cover","selectorGuids":["b10f405d-2250-52b4-c8e8-a08f718d2747"]},"xValue":0,"locked":false}}]}],"useFirstGroupAsInitialState":true,"createdOn":1639429044692},"a-14":{"id":"a-14","title":"Section One Parallax Effect","continuousParameterGroups":[{"id":"a-14-p","type":"SCROLL_PROGRESS","parameterLabel":"Scroll","continuousActionGroups":[{"keyframe":0,"actionItems":[{"id":"a-14-n","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"","duration":500,"target":{"useEventTarget":"CHILDREN","id":"6320b80e48e94f429adce430|184457c6-2999-4535-a7fc-4b89027f5cba"},"yValue":100,"xUnit":"PX","yUnit":"px","zUnit":"PX"}},{"id":"a-14-n-3","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"","duration":500,"target":{"useEventTarget":"CHILDREN","id":"6320b80e48e94f429adce430|16b257e3-1dce-f4d0-58b2-0a291ea5a7f4"},"yValue":-30,"xUnit":"PX","yUnit":"px","zUnit":"PX"}}]},{"keyframe":100,"actionItems":[{"id":"a-14-n-2","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"","duration":500,"target":{"useEventTarget":"CHILDREN","id":"6320b80e48e94f429adce430|184457c6-2999-4535-a7fc-4b89027f5cba"},"yValue":-120,"xUnit":"PX","yUnit":"px","zUnit":"PX"}},{"id":"a-14-n-4","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"","duration":500,"target":{"useEventTarget":"CHILDREN","id":"6320b80e48e94f429adce430|16b257e3-1dce-f4d0-58b2-0a291ea5a7f4"},"yValue":60,"xUnit":"PX","yUnit":"px","zUnit":"PX"}}]}]}],"createdOn":1639429165107},"a-15":{"id":"a-15","title":"Section Two Parallax Effect","continuousParameterGroups":[{"id":"a-15-p","type":"SCROLL_PROGRESS","parameterLabel":"Scroll","continuousActionGroups":[{"keyframe":0,"actionItems":[{"id":"a-15-n-5","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"","duration":500,"target":{"id":"6320b80e48e94f429adce430|3eb49d8d-7ba8-cb71-da2d-dd30e7a90918"},"yValue":100,"xUnit":"PX","yUnit":"px","zUnit":"PX"}},{"id":"a-15-n-6","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"","duration":500,"target":{"useEventTarget":"CHILDREN","id":"6320b80e48e94f429adce430|3eb49d8d-7ba8-cb71-da2d-dd30e7a9091a"},"yValue":-30,"xUnit":"PX","yUnit":"px","zUnit":"PX"}}]},{"keyframe":100,"actionItems":[{"id":"a-15-n-7","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"","duration":500,"target":{"id":"6320b80e48e94f429adce430|3eb49d8d-7ba8-cb71-da2d-dd30e7a90918"},"yValue":-130,"xUnit":"PX","yUnit":"px","zUnit":"PX"}},{"id":"a-15-n-8","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"","duration":500,"target":{"useEventTarget":"CHILDREN","id":"6320b80e48e94f429adce430|3eb49d8d-7ba8-cb71-da2d-dd30e7a9091a"},"yValue":60,"xUnit":"PX","yUnit":"px","zUnit":"PX"}}]}]}],"createdOn":1639429165107},"slideInBottom":{"id":"slideInBottom","useFirstGroupAsInitialState":true,"actionItemGroups":[{"actionItems":[{"actionTypeId":"STYLE_OPACITY","config":{"delay":0,"duration":0,"target":{"id":"N/A","appliesTo":"TRIGGER_ELEMENT","useEventTarget":true},"value":0}}]},{"actionItems":[{"actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"duration":0,"target":{"id":"N/A","appliesTo":"TRIGGER_ELEMENT","useEventTarget":true},"xValue":0
21490,"yValue":100,"xUnit":"PX","yUnit":"PX","zUnit":"PX"}}]},{"actionItems":[{"actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"outQuart","duration":1000,"target":{"id":"N/A","appliesTo":"TRIGGER_ELEMENT","useEventTarget":true},"xValue":0,"yValue":0,"xUnit":"PX","yUnit":"PX","zUnit":"PX"}},{"actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"outQuart","duration":1000,"target":{"id":"N/A","appliesTo":"TRIGGER_ELEMENT","useEventTarget":true},"value":1}}]}]}},"site":{"mediaQueries":[{"key":"main","min":992,"max":10000},{"key":"medium","min":768,"max":991},{"key":"small","min":480,"max":767},{"key":"tiny","min":0,"max":479}]}}
21491);

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.