PageSourceSearch

https://www.abstractnow.ai/assets/Landing/js/webflow.js

js abstractnow.ai collected 2026-10-05 14:11:07 UTC 555,510 bytes, 18,775 lines download raw bytes

vendor: 5,035 bytes, lines 1-163
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 = 100);
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) {
109
110/**
111 * Checks if `value` is classified as an `Array` object.
112 *
113 * @static
114 * @memberOf _
115 * @since 0.1.0
116 * @category Lang
117 * @param {*} value The value to check.
118 * @returns {boolean} Returns `true` if `value` is an array, else `false`.
119 * @example
120 *
121 * _.isArray([1, 2, 3]);
122 * // => true
123 *
124 * _.isArray(document.body.children);
125 * // => false
126 *
127 * _.isArray('abc');
128 * // => false
129 *
130 * _.isArray(_.noop);
131 * // => false
132 */
133var isArray = Array.isArray;
134
135module.exports = isArray;
136
137
138/***/ }),
139/* 2 */
140/***/ (function(module, exports, __webpack_require__) {
141
142"use strict";
143 // @wf-will-never-add-flow-to-this-file
144
145/* eslint-disable */
146
147/**
148 * Webflow: Core site library
149 */
150
151var Webflow = {};
152var modules = {};
153var primary = [];
154var secondary = window.Webflow || [];
155var $ = window.jQuery;
156var $win = $(window);
157var $doc = $(document);
158var isFunction = $.isFunction;
159
160var _ = Webflow._ = __webpack_require__(102);
161
162var tram = Webflow.tram = __webpack_require__(55) && $.tram;
163var domready = false;
164var destroyed = false;
165tram.config.hideBackface = false;
166tram.config.keepInherited = true;
167/**
168 * Webflow.define - Define a named module
169 * @param  {string} name
170 * @param  {function} factory
171 * @param  {object} options
172 * @return {object}
173 */
174
175Webflow.define = function (name, factory, options) {
176  if (modules[name]) {
177    unbindModule(modules[name]);
178  }
179
180  var instance = modules[name] = factory($, _, options) || {};
181  bindModule(instance);
182  return instance;
183};
184/**
185 * Webflow.require - Require a named module
186 * @param  {string} name
187 * @return {object}
188 */
189
190
191Webflow.require = function (name) {
192  return modules[name];
193};
194
195function bindModule(module) {
196  // If running in Webflow app, subscribe to design/preview events
197  if (Webflow.env()) {
198    isFunction(module.design) && $win.on('__wf_design', module.design);
199    isFunction(module.preview) && $win.on('__wf_preview', module.preview);
200  } // Subscribe to front-end destroy event
201
202
203  isFunction(module.destroy) && $win.on('__wf_destroy', module.destroy); // Look for ready method on module
204
205  if (module.ready && isFunction(module.ready)) {
206    addReady(module);
207  }
208}
209
210function addReady(module) {
211  // If domready has already happened, run ready method
212  if (domready) {
213    module.ready();
214    return;
215  } // Otherwise add ready method to the primary queue (only once)
216
217
218  if (_.contains(primary, module.ready)) {
219    return;
220  }
221
222  primary.push(module.ready);
223}
224
225function unbindModule(module) {
226  // Unsubscribe module from window events
227  isFunction(module.design) && $win.off('__wf_design', module.design);
228  isFunction(module.preview) && $win.off('__wf_preview', module.preview);
229  isFunction(module.destroy) && $win.off('__wf_destroy', module.destroy); // Remove ready method from primary queue
230
231  if (module.ready && isFunction(module.ready)) {
232    removeReady(module);
233  }
234}
235
236function removeReady(module) {
237  primary = _.filter(primary, function (readyFn) {
238    return readyFn !== module.ready;
239  });
240}
241/**
242 * Webflow.push - Add a ready handler into secondary queue
243 * @param {function} ready  Callback to invoke on domready
244 */
245
246
247Webflow.push = function (ready) {
248  // If domready has already happened, invoke handler
249  if (domready) {
250    isFunction(ready) && ready();
251    return;
252  } // Otherwise push into secondary queue
253
254
255  secondary.push(ready);
256};
257/**
258 * Webflow.env - Get the state of the Webflow app
259 * @param {string} mode [optional]
260 * @return {boolean}
261 */
262
263
264Webflow.env = function (mode) {
265  var designFlag = window.__wf_design;
266  var inApp = typeof designFlag !== 'undefined';
267
268  if (!mode) {
269    return inApp;
270  }
271
272  if (mode === 'design') {
273    return inApp && designFlag;
274  }
275
276  if (mode === 'preview') {
277    return inApp && !designFlag;
278  }
279
280  if (mode === 'slug') {
281    return inApp && window.__wf_slug;
282  }
283
284  if (mode === 'editor') {
285    return window.WebflowEditor;
286  }
287
288  if (mode === 'test') {
289    return  false || window.__wf_test;
290  }
291
292  if (mode === 'frame') {
293    return window !== window.top;
294  }
295}; // Feature detects + browser sniffs  ಠ_ಠ
296
297
298var userAgent = navigator.userAgent.toLowerCase();
299var touch = Webflow.env.touch = 'ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch;
300var chrome = Webflow.env.chrome = /chrome/.test(userAgent) && /Google/.test(navigator.vendor) && parseInt(userAgent.match(/chrome\/(\d+)\./)[1], 10);
301var ios = Webflow.env.ios = /(ipod|iphone|ipad)/.test(userAgent);
302Webflow.env.safari = /safari/.test(userAgent) && !chrome && !ios; // Maintain current touch target to prevent late clicks on touch devices
303
304var touchTarget; // Listen for both events to support touch/mouse hybrid devices
305
306touch && $doc.on('touchstart mousedown', function (evt) {
307  touchTarget = evt.target;
308});
309/**
310 * Webflow.validClick - validate click target against current touch target
311 * @param  {HTMLElement} clickTarget  Element being clicked
312 * @return {Boolean}  True if click target is valid (always true on non-touch)
313 */
314
315Webflow.validClick = touch ? function (clickTarget) {
316  return clickTarget === touchTarget || $.contains(clickTarget, touchTarget);
317} : function () {
318  return true;
319};
320/**
321 * Webflow.resize, Webflow.scroll - throttled event proxies
322 */
323
324var resizeEvents = 'resize.webflow orientationchange.webflow load.webflow';
325var scrollEvents = 'scroll.webflow ' + resizeEvents;
326Webflow.resize = eventProxy($win, resizeEvents);
327Webflow.scroll = eventProxy($win, scrollEvents);
328Webflow.redraw = eventProxy(); // Create a proxy instance for throttled events
329
330function eventProxy(target, types) {
331  // Set up throttled method (using custom frame-based _.throttle)
332  var handlers = [];
333  var proxy = {};
334  proxy.up = _.throttle(function (evt) {
335    _.each(handlers, function (h) {
336      h(evt);
337    });
338  }); // Bind events to target
339
340  if (target && types) {
341    target.on(types, proxy.up);
342  }
343  /**
344   * Add an event handler
345   * @param  {function} handler
346   */
347
348
349  proxy.on = function (handler) {
350    if (typeof handler !== 'function') {
351      return;
352    }
353
354    if (_.contains(handlers, handler)) {
355      return;
356    }
357
358    handlers.push(handler);
359  };
360  /**
361   * Remove an event handler
362   * @param  {function} handler
363   */
364
365
366  proxy.off = function (handler) {
367    // If no arguments supplied, clear all handlers
368    if (!arguments.length) {
369      handlers = [];
370      return;
371    } // Otherwise, remove handler from the list
372
373
374    handlers = _.filter(handlers, function (h) {
375      return h !== handler;
376    });
377  };
378
379  return proxy;
380} // Webflow.location - Wrap window.location in api
381
382
383Webflow.location = function (url) {
384  window.location = url;
385};
386
387if (Webflow.env()) {
388  // Ignore redirects inside a Webflow design/edit environment
389  Webflow.location = function () {};
390} // Webflow.ready - Call primary and secondary handlers
391
392
393Webflow.ready = function () {
394  domready = true; // Restore modules after destroy
395
396  if (destroyed) {
397    restoreModules(); // Otherwise run primary ready methods
398  } else {
399    _.each(primary, callReady);
400  } // Run secondary ready methods
401
402
403  _.each(secondary, callReady); // Trigger resize
404
405
406  Webflow.resize.up();
407};
408
409function callReady(readyFn) {
410  isFunction(readyFn) && readyFn();
411}
412
413function restoreModules() {
414  destroyed = false;
415
416  _.each(modules, bindModule);
417}
418/**
419 * Webflow.load - Add a window load handler that will run even if load event has already happened
420 * @param  {function} handler
421 */
422
423
424var deferLoad;
425
426Webflow.load = function (handler) {
427  deferLoad.then(handler);
428};
429
430function bindLoad() {
431  // Reject any previous deferred (to support destroy)
432  if (deferLoad) {
433    deferLoad.reject();
434    $win.off('load', deferLoad.resolve);
435  } // Create deferred and bind window load event
436
437
438  deferLoad = new $.Deferred();
439  $win.on('load', deferLoad.resolve);
440} // Webflow.destroy - Trigger a destroy event for all modules
441
442
443Webflow.destroy = function (options) {
444  options = options || {};
445  destroyed = true;
446  $win.triggerHandler('__wf_destroy'); // Allow domready reset for tests
447
448  if (options.domready != null) {
449    domready = options.domready;
450  } // Unbind modules
451
452
453  _.each(modules, unbindModule); // Clear any proxy event handlers
454
455
456  Webflow.resize.off();
457  Webflow.scroll.off();
458  Webflow.redraw.off(); // Clear any queued ready methods
459
460  primary = [];
461  secondary = []; // If load event has not yet fired, replace the deferred
462
463  if (deferLoad.state() === 'pending') {
464    bindLoad();
465  }
466}; // Listen for domready
467
468
469$(Webflow.ready); // Listen for window.onload and resolve deferred
470
471bindLoad(); // Export commonjs module
472
473module.exports = window.Webflow = Webflow;
474
475/***/ }),
476/* 3 */
477/***/ (function(module, exports, __webpack_require__) {
478
479"use strict";
480
481
482var _interopRequireWildcard = __webpack_require__(16);
483
484Object.defineProperty(exports, "__esModule", {
485  value: true
486});
487exports.IX2VanillaUtils = exports.IX2VanillaPlugins = exports.IX2ElementsReducer = exports.IX2EngineConstants = exports.IX2EngineItemTypes = exports.IX2EngineEventTypes = exports.IX2EngineActionTypes = exports.IX2EasingUtils = exports.IX2Easings = exp
vendor: 4,896 bytes, lines 487-685
487orts.IX2BrowserSupport = void 0;
488
489var IX2BrowserSupport = _interopRequireWildcard(__webpack_require__(32));
490
491exports.IX2BrowserSupport = IX2BrowserSupport;
492
493var IX2Easings = _interopRequireWildcard(__webpack_require__(85));
494
495exports.IX2Easings = IX2Easings;
496
497var IX2EasingUtils = _interopRequireWildcard(__webpack_require__(86));
498
499exports.IX2EasingUtils = IX2EasingUtils;
500
501var IX2EngineActionTypes = _interopRequireWildcard(__webpack_require__(87));
502
503exports.IX2EngineActionTypes = IX2EngineActionTypes;
504
505var IX2EngineEventTypes = _interopRequireWildcard(__webpack_require__(88));
506
507exports.IX2EngineEventTypes = IX2EngineEventTypes;
508
509var IX2EngineItemTypes = _interopRequireWildcard(__webpack_require__(49));
510
511exports.IX2EngineItemTypes = IX2EngineItemTypes;
512
513var IX2EngineConstants = _interopRequireWildcard(__webpack_require__(50));
514
515exports.IX2EngineConstants = IX2EngineConstants;
516
517var IX2ElementsReducer = _interopRequireWildcard(__webpack_require__(185));
518
519exports.IX2ElementsReducer = IX2ElementsReducer;
520
521var IX2VanillaPlugins = _interopRequireWildcard(__webpack_require__(89));
522
523exports.IX2VanillaPlugins = IX2VanillaPlugins;
524
525var IX2VanillaUtils = _interopRequireWildcard(__webpack_require__(187));
526
527exports.IX2VanillaUtils = IX2VanillaUtils;
528
529/***/ }),
530/* 4 */
531/***/ (function(module, exports, __webpack_require__) {
532
533var freeGlobal = __webpack_require__(67);
534
535/** Detect free variable `self`. */
536var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
537
538/** Used as a reference to the global object. */
539var root = freeGlobal || freeSelf || Function('return this')();
540
541module.exports = root;
542
543
544/***/ }),
545/* 5 */
546/***/ (function(module, exports) {
547
548/**
549 * Checks if `value` is the
550 * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
551 * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
552 *
553 * @static
554 * @memberOf _
555 * @since 0.1.0
556 * @category Lang
557 * @param {*} value The value to check.
558 * @returns {boolean} Returns `true` if `value` is an object, else `false`.
559 * @example
560 *
561 * _.isObject({});
562 * // => true
563 *
564 * _.isObject([1, 2, 3]);
565 * // => true
566 *
567 * _.isObject(_.noop);
568 * // => true
569 *
570 * _.isObject(null);
571 * // => false
572 */
573function isObject(value) {
574  var type = typeof value;
575  return value != null && (type == 'object' || type == 'function');
576}
577
578module.exports = isObject;
579
580
581/***/ }),
582/* 6 */
583/***/ (function(module, exports, __webpack_require__) {
584
585var baseMatches = __webpack_require__(119),
586    baseMatchesProperty = __webpack_require__(173),
587    identity = __webpack_require__(46),
588    isArray = __webpack_require__(1),
589    property = __webpack_require__(180);
590
591/**
592 * The base implementation of `_.iteratee`.
593 *
594 * @private
595 * @param {*} [value=_.identity] The value to convert to an iteratee.
596 * @returns {Function} Returns the iteratee.
597 */
598function baseIteratee(value) {
599  // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.
600  // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.
601  if (typeof value == 'function') {
602    return value;
603  }
604  if (value == null) {
605    return identity;
606  }
607  if (typeof value == 'object') {
608    return isArray(value)
609      ? baseMatchesProperty(value[0], value[1])
610      : baseMatches(value);
611  }
612  return property(value);
613}
614
615module.exports = baseIteratee;
616
617
618/***/ }),
619/* 7 */
620/***/ (function(module, exports, __webpack_require__) {
621
622var baseIsNative = __webpack_require__(131),
623    getValue = __webpack_require__(136);
624
625/**
626 * Gets the native function at `key` of `object`.
627 *
628 * @private
629 * @param {Object} object The object to query.
630 * @param {string} key The key of the method to get.
631 * @returns {*} Returns the function if it's native, else `undefined`.
632 */
633function getNative(object, key) {
634  var value = getValue(object, key);
635  return baseIsNative(value) ? value : undefined;
636}
637
638module.exports = getNative;
639
640
641/***/ }),
642/* 8 */
643/***/ (function(module, exports) {
644
645/**
646 * Checks if `value` is object-like. A value is object-like if it's not `null`
647 * and has a `typeof` result of "object".
648 *
649 * @static
650 * @memberOf _
651 * @since 4.0.0
652 * @category Lang
653 * @param {*} value The value to check.
654 * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
655 * @example
656 *
657 * _.isObjectLike({});
658 * // => true
659 *
660 * _.isObjectLike([1, 2, 3]);
661 * // => true
662 *
663 * _.isObjectLike(_.noop);
664 * // => false
665 *
666 * _.isObjectLike(null);
667 * // => false
668 */
669function isObjectLike(value) {
670  return value != null && typeof value == 'object';
671}
672
673module.exports = isObjectLike;
674
675
676/***/ }),
677/* 9 */
678/***/ (function(module, exports, __webpack_require__) {
679
680var Symbol = __webpack_require__(11),
681    getRawTag = __webpack_require__(132),
682    objectToString = __webpack_require__(133);
683
684/** `Object#toString` result references. */
685var nullTag = '[object Null]',
686    undefinedTag = '[object Undefined]';
687
688/** Built-in value references. */
689var symToStringTag = Symbol ? Symbol.toStringTag : undefined;
690
691/**
692 * The base implementation of `getTag` without fallbacks for buggy environments.
693 *
694 * @private
695 * @param {*} value The value to query.
696 * @returns {string} Returns the `toStringTag`.
697 */
698function baseGetTag(value) {
699  if (value == null) {
700    return value === undefined ? undefinedTag : nullTag;
701  }
702  return (symToStringTag && symToStringTag in Object(value))
703    ? getRawTag(value)
704    : objectToString(value);
705}
706
707module.exports = baseGetTag;
708
709
710/***/ }),
711/* 10 */
712/***/ (function(module, exports, __webpack_require__) {
713
714var isFunction = __webpack_require__(66),
715    isLength = __webpack_require__(40);
716
717/**
718 * Checks if `value` is array-like. A value is considered array-like if it's
719 * not a function and has a `value.length` that's an integer greater than or
720 * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
721 *
722 * @static
723 * @memberOf _
724 * @since 4.0.0
725 * @category Lang
726 * @param {*} value The value to check.
727 * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
728 * @example
729 *
730 * _.isArrayLike([1, 2, 3]);
731 * // => true
732 *
733 * _.isArrayLike(document.body.children);
734 * // => true
735 *
736 * _.isArrayLike('abc');
737 * // => true
738 *
739 * _.isArrayLike(_.noop);
740 * // => false
741 */
742function isArrayLike(value) {
743  return value != null && isLength(value.length) && !isFunction(value);
744}
745
746module.exports = isArrayLike;
747
748
749/***/ }),
750/* 11 */
751/***/ (function(module, exports, __webpack_require__) {
752
753var root = __webpack_require__(4);
754
755/** Built-in value references. */
756var Symbol = root.Symbol;
757
758module.exports = Symbol;
759
760
761/***/ }),
762/* 12 */
763/***/ (function(module, exports, __webpack_require__) {
764
765var isSymbol = __webpack_require__(25);
766
767/** Used as references for various `Number` constants. */
768var INFINITY = 1 / 0;
769
770/**
771 * Converts `value` to a string key if it's not a string or symbol.
772 *
773 * @private
774 * @param {*} value The value to inspect.
775 * @returns {string|symbol} Returns the key.
776 */
777function toKey(value) {
778  if (typeof value == 'string' || isSymbol(value)) {
779    return value;
780  }
781  var result = (value + '');
782  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
783}
784
785module.exports = toKey;
786
787
788/***/ }),
789/* 13 */
790/***/ (function(module, exports, __webpack_require__) {
791
792"use strict";
793
794
795Object.defineProperty(exports, "__esModule", {
796  value: true
797});
798
799var _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; };
800
801exports.clone = clone;
802exports.addLast = addLast;
803exports.addFirst = addFirst;
804exports.removeLast = removeLast;
805exports.removeFirst = removeFirst;
806exports.insert = insert;
807exports.removeAt = removeAt;
808exports.replaceAt = replaceAt;
809exports.getIn = getIn;
810exports.set = set;
811exports.setIn = setIn;
812exports.update = update;
813exports.updateIn = updateIn;
814exports.merge = merge;
815exports.mergeDeep = mergeDeep;
816exports.mergeIn = mergeIn;
817exports.omit = omit;
818exports.addDefaults = addDefaults;
819
820
821/*!
822 * Timm
823 *
824 * Immutability helpers with fast reads and acceptable writes.
825 *
826 * @copyright Guillermo Grau Panea 2016
827 * @license MIT
828 */
829
830var INVALID_ARGS = 'INVALID_ARGS';
831
832// ===============================================
833// ### Helpers
834// ===============================================
835
836
837function throwStr(msg) {
838  throw new Error(msg);
839}
840
841function getKeysAndSymbols(obj) {
842  var keys = Object.keys(obj);
843  if (Object.getOwnPropertySymbols) {
844    return keys.concat(Object.getOwnPropertySymbols(obj));
845  }
846  return keys;
847}
848
849var hasOwnProperty = {}.hasOwnProperty;
850
851function clone(obj) {
852  if (Array.isArray(obj)) return obj.slice();
853  var keys = getKeysAndSymbols(obj);
854  var out = {};
855  for (var i = 0; i < keys.length; i++) {
856    var key = keys[i];
857    out[key] = obj[key];
858  }
859  return out;
860}
861
862function doMerge(fAddDefaults, fDeep, first) {
863  var out = first;
864  !(out != null) && throwStr( false ? undefined : INVALID_ARGS);
865  var fChanged = false;
866
867  for (var _len = arguments.length, rest = Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {
868    rest[_key - 3] = arguments[_key];
869  }
870
871  for (var idx = 0; idx < rest.length; idx++) {
872    var obj = rest[idx];
873    if (obj == null) continue;
874    var keys = getKeysAndSymbols(obj);
875    if (!keys.length) continue;
876    for (var j = 0; j <= keys.length; j++) {
877      var key = keys[j];
878      if (fAddDefaults && out[key] !== undefined) continue;
879      var nextVal = obj[key];
880      if (fDeep && isObject(out[key]) && isObject(nextVal)) {
881        nextVal = doMerge(fAddDefaults, fDeep, out[key], nextVal);
882      }
883      if (nextVal === undefined || nextVal === out[key]) continue;
884      if (!fChanged) {
885        fChanged = true;
886        out = clone(out);
887      }
888      out[key] = nextVal;
889    }
890  }
891  return out;
892}
893
894function isObject(o) {
895  var type = typeof o === 'undefined' ? 'undefined' : _typeof(o);
896  return o != null && (type === 'object' || type === 'function');
897}
898
899// _deepFreeze = (obj) ->
900//   Object.freeze obj
901//   for key in Object.getOwnPropertyNames obj
902//     val = obj[key]
903//     if isObject(val) and not Object.isFrozen val
904//       _deepFreeze val
905//   obj
906
907// ===============================================
908// -- ### Arrays
909// ===============================================
910
911// -- #### addLast()
912// -- Returns a new array with an appended item or items.
913// --
914// -- Usage: `addLast<T>(array: Array<T>, val: Array<T>|T): Array<T>`
915// --
916// -- ```js
917// -- arr = ['a', 'b']
918// -- arr2 = addLast(arr, 'c')
919// -- // ['a', 'b', 'c']
920// -- arr2 === arr
921// -- // false
922// -- arr3 = addLast(arr, ['c', 'd'])
923// -- // ['a', 'b', 'c', 'd']
924// -- ```
925// `array.concat(val)` also handles the scalar case,
926// but is apparently very slow
927function addLast(array, val) {
928  if (Array.isArray(val)) return array.concat(val);
929  return array.concat([val]);
930}
931
932// -- #### addFirst()
933// -- Returns a new array with a prepended item or items.
934// --
935// -- Usage: `addFirst<T>(array: Array<T>, val: Array<T>|T): Array<T>`
936// --
937// -- ```js
938// -- arr = ['a', 'b']
939// -- arr2 = addFirst(arr, 'c')
940// -- // ['c', 'a', 'b']
941// -- arr2 === arr
942// -- // false
943// -- arr3 = addFirst(arr, ['c', 'd'])
944// -- // ['c', 'd', 'a', 'b']
945// -- ```
946function addFirst(array, val) {
947  if (Array.isArray(val)) return val.concat(array);
948  return [val].concat(array);
949}
950
951// -- #### removeLast()
952// -- Returns a new array removing the last item.
953// --
954// -- Usage: `removeLast<T>(array: Array<T>): Array<T>`
955// --
956// -- ```js
957// -- arr = ['a', 'b']
958// -- arr2 = removeLast(arr)
959// -- // ['a']
960// -- arr2 === arr
961// -- // false
962// --
963// -- // The same array is returned if there are no changes:
964// -- arr3 = []
965// -- removeLast(arr3) === arr3
966// -- // true
967// -- ```
968function removeLast(array) {
969  if (!array.length) return array;
970  return array.slice(0, array.length - 1);
971}
972
973// -- #### removeFirst()
974// -- Returns a new array removing the first item.
975// --
976// -- Usage: `removeFirst<T>(array: Array<T>): Array<T>`
977// --
978// -- ```js
979// -- arr = ['a', 'b']
980// -- arr2 = removeFirst(arr)
981// -- // ['b']
982// -- arr2 === arr
983// -- // false
984// --
985// -- // The same array is returned if there are no changes:
986// -- arr3 = []
987// -- removeFirst(arr3) === arr3
988// -- // true
989// -- ```
990function removeFirst(array) {
991  if (!array.length) return array;
992  return array.slice(1);
993}
994
995// -- #### insert()
996// -- Returns a new array obtained by inserting an item or items
997// -- at a specified index.
998// --
999// -- Usage: `insert<T>(array: Array<T>, idx: number, val: Array<T>|T): Array<T>`
1000// --
1001// -- ```js
1002// -- arr = ['a', 'b', 'c']
1003// -- arr2 = insert(arr, 1, 'd')
1004// -- // ['a', 'd', 'b', 'c']
1005// -- arr2 === arr
1006// -- // false
1007// -- insert(arr, 1, ['d', 'e'])
1008// -- // ['a', 'd', 'e', 'b', 'c']
1009// -- ```
1010function insert(array, idx, val) {
1011  return array.slice(0, idx).concat(Array.isArray(val) ? val : [val]).concat(array.slice(idx));
1012}
1013
1014// -- #### removeAt()
1015// -- Returns a new array obtained by removing an item at
1016// -- a specified index.
1017// --
1018// -- Usage: `removeAt<T>(array: Array<T>, idx: number): Array<T>`
1019// --
1020// -- ```js
1021// -- arr = ['a', 'b', 'c']
1022// -- arr2 = removeAt(arr, 1)
1023// -- // ['a', 'c']
1024// -- arr2 === arr
1025// -- // false
1026// --
1027// -- // The same array is returned if there are no changes:
1028// -- removeAt(arr, 4) === arr
1029// -- // true
1030// -- ```
1031function removeAt(array, idx) {
1032  if (idx >= array.length || idx < 0) return array;
1033  return array.slice(0, idx).concat(array.slice(idx + 1));
1034}
1035
1036// -- #### replaceAt()
1037// -- Returns a new array obtained by replacing an item at
1038// -- a specified index. If the provided item is the same as
1039// -- (*referentially equal to*) the previous item at that position,
1040// -- the original array is returned.
1041// --
1042// -- Usage: `replaceAt<T>(array: Array<T>, idx: number, newItem: T): Array<T>`
1043// --
1044// -- ```js
1045// -- arr = ['a', 'b', 'c']
1046// -- arr2 = replaceAt(arr, 1, 'd')
1047// -- // ['a', 'd', 'c']
1048// -- arr2 === arr
1049// -- // false
1050// --
1051// -- // The same object is returned if there are no changes:
1052// -- replaceAt(arr, 1, 'b') === arr
1053// -- // true
1054// -- ```
1055function replaceAt(array, idx, newItem) {
1056  if (array[idx] === newItem) return array;
1057  var len = array.length;
1058  var result = Array(len);
1059  for (var i = 0; i < len; i++) {
1060    result[i] = array[i];
1061  }
1062  result[idx] = newItem;
1063  return result;
1064}
1065
1066// ===============================================
1067// -- ### Collections (objects and arrays)
1068// ===============================================
1069// -- The following types are used throughout this section
1070// -- ```js
1071// -- type ArrayOrObject = Array<any>|Object;
1072// -- type Key = number|string;
1073// -- ```
1074
1075// -- #### getIn()
1076// -- Returns a value from an object at a given path. Works with
1077// -- nested arrays and objects. If the path does not exist, it returns
1078// -- `undefined`.
1079// --
1080// -- Usage: `getIn(obj: ?ArrayOrObject, path: Array<Key>): any`
1081// --
1082// -- ```js
1083// -- obj = { a: 1, b: 2, d: { d1: 3, d2: 4 }, e: ['a', 'b', 'c'] }
1084// -- getIn(obj, ['d', 'd1'])
1085// -- // 3
1086// -- getIn(obj, ['e', 1])
1087// -- // 'b'
1088// -- ```
1089function getIn(obj, path) {
1090  !Array.isArray(path) && throwStr( false ? undefined : INVALID_ARGS);
1091  if (obj == null) return undefined;
1092  var ptr = obj;
1093  for (var i = 0; i < path.length; i++) {
1094    var key = path[i];
1095    ptr = ptr != null ? ptr[key] : undefined;
1096    if (ptr === undefined) return ptr;
1097  }
1098  return ptr;
1099}
1100
1101// -- #### set()
1102// -- Returns a new object with a modified attribute.
1103// -- If the provided value is the same as (*referentially equal to*)
1104// -- the previous value, the original object is returned.
1105// --
1106// -- Usage: `set<T>(obj: ?T, key: Key, val: any): T`
1107// --
1108// -- ```js
1109// -- obj = { a: 1, b: 2, c: 3 }
1110// -- obj2 = set(obj, 'b', 5)
1111// -- // { a: 1, b: 5, c: 3 }
1112// -- obj2 === obj
1113// -- // false
1114// --
1115// -- // The same object is returned if there are no changes:
1116// -- set(obj, 'b', 2) === obj
1117// -- // true
1118// -- ```
1119function set(obj, key, val) {
1120  var fallback = typeof key === 'number' ? [] : {};
1121  var finalObj = obj == null ? fallback : obj;
1122  if (finalObj[key] === val) return finalObj;
1123  var obj2 = clone(finalObj);
1124  obj2[key] = val;
1125  return obj2;
1126}
1127
1128// -- #### setIn()
1129// -- Returns a new object with a modified **nested** attribute.
1130// --
1131// -- Notes:
1132// --
1133// -- * If the provided value is the same as (*referentially equal to*)
1134// -- the previous value, the original object is returned.
1135// -- * If the path does not exist, it will be created before setting
1136// -- the new value.
1137// --
1138// -- Usage: `setIn<T: ArrayOrObject>(obj: T, path: Array<Key>, val: any): T`
1139// --
1140// -- ```js
1141// -- obj = { a: 1, b: 2, d: { d1: 3, d2: 4 }, e: { e1: 'foo', e2: 'bar' } }
1142// -- obj2 = setIn(obj, ['d', 'd1'], 4)
1143// -- // { a: 1, b: 2, d: { d1: 4, d2: 4 }, e: { e1: 'foo', e2: 'bar' } }
1144// -- obj2 === obj
1145// -- // false
1146// -- obj2.d === obj.d
1147// -- // false
1148// -- obj2.e === obj.e
1149// -- // true
1150// --
1151// -- // The same object is returned if there are no changes:
1152// -- obj3 = setIn(obj, ['d', 'd1'], 3)
1153// -- // { a: 1, b: 2, d: { d1: 3, d2: 4 }, e: { e1: 'foo', e2: 'bar' } }
1154// -- obj3 === obj
1155// -- // true
1156// -- obj3.d === obj.d
1157// -- // true
1158// -- obj3.e === obj.e
1159// -- // true
1160// --
1161// -- // ... unknown paths create intermediate keys. Numeric segments are treated as array indices:
1162// -- setIn({ a: 3 }, ['unknown', 0, 'path'], 4)
1163// -- // { a: 3, unknown: [{ path: 4 }] }
1164// -- ```
1165function doSetIn(obj, path, val, idx) {
1166  var newValue = void 0;
1167  var key = path[idx];
1168  if (idx === path.length - 1) {
1169    newValue = val;
1170  } else {
1171    var nestedObj = isObject(obj) && isObject(obj[key]) ? obj[key] : typeof path[idx + 1] === 'number' ? [] : {};
1172    newValue = doSetIn(nestedObj, path, val, idx + 1);
1173  }
1174  return set(obj, key, newValue);
1175}
1176
1177function setIn(obj, path, val) {
1178  if (!path.length) return val;
1179  return doSetIn(obj, path, val, 0);
1180}
1181
1182// -- #### update()
1183// -- Returns a new object with a modified attribute,
1184// -- calculated via a user-provided callback based on the current value.
1185// -- If the calculated value is the same as (*referentially equal to*)
1186// -- the previous value, the original object is returned.
1187// --
1188// -- Usage: `update<T: ArrayOrObject>(obj: T, key: Key,
1189// -- fnUpdate: (prevValue: any) => any): T`
1190// --
1191// -- ```js
1192// -- obj = { a: 1, b: 2, c: 3 }
1193// -- obj2 = update(obj, 'b', (val) => val + 1)
1194// -- // { a: 1, b: 3, c: 3 }
1195// -- obj2 === obj
1196// -- // false
1197// --
1198// -- // The same object is returned if there are no changes:
1199// -- update(obj, 'b', (val) => val) === obj
1200// -- // true
1201// -- ```
1202function update(obj, key, fnUpdate) {
1203  var prevVal = obj == null ? undefined : obj[key];
1204  var nextVal = fnUpdate(prevVal);
1205  return set(obj, key, nextVal);
1206}
1207
1208// -- #### updateIn()
1209// -- Returns a new object with a modified **nested** attribute,
1210// -- calculated via a user-provided callback based on the current value.
1211// -- If the calculated value is the same as (*referentially equal to*)
1212// -- the previous value, the original object is returned.
1213// --
1214// -- Usage: `updateIn<T: ArrayOrObject>(obj: T, path: Array<Key>,
1215// -- fnUpdate: (prevValue: any) => any): T`
1216// --
1217// -- ```js
1218// -- obj = { a: 1, d: { d1: 3, d2: 4 } }
1219// -- obj2 = updateIn(obj, ['d', 'd1'], (val) => val + 1)
1220// -- // { a: 1, d: { d1: 4, d2: 4 } }
1221// -- obj2 === obj
1222// -- // false
1223// --
1224// -- // The same object is returned if there are no changes:
1225// -- obj3 = updateIn(obj, ['d', 'd1'], (val) => val)
1226// -- // { a: 1, d: { d1: 3, d2: 4 } }
1227// -- obj3 === obj
1228// -- // true
1229// -- ```
1230function updateIn(obj, path, fnUpdate) {
1231  var prevVal = getIn(obj, path);
1232  var nextVal = fnUpdate(prevVal);
1233  return setIn(obj, path, nextVal);
1234}
1235
1236// -- #### merge()
1237// -- Returns a new object built as follows: the overlapping keys from the
1238// -- second one overwrite the corresponding entries from the first one.
1239// -- Similar to `Object.assign()`, but immutable.
1240// --
1241// -- Usage:
1242// --
1243// -- * `merge(obj1: Object, obj2: ?Object): Object`
1244// -- * `merge(obj1: Object, ...objects: Array<?Object>): Object`
1245// --
1246// -- The unmodified `obj1` is returned if `obj2` does not *provide something
1247// -- new to* `obj1`, i.e. if either of the following
1248// -- conditions are true:
1249// --
1250// -- * `obj2` is `null` or `undefined`
1251// -- * `obj2` is an object, but it is empty
1252// -- * All attributes of `obj2` are `undefined`
1253// -- * All attributes of `obj2` are referentially equal to the
1254// --   corresponding attributes of `obj1`
1255// --
1256// -- Note that `undefined` attributes in `obj2` do not modify the
1257// -- corresponding attributes in `obj1`.
1258// --
1259// -- ```js
1260// -- obj1 = { a: 1, b: 2, c: 3 }
1261// -- obj2 = { c: 4, d: 5 }
1262// -- obj3 = merge(obj1, obj2)
1263// -- // { a: 1, b: 2, c: 4, d: 5 }
1264// -- obj3 === obj1
1265// -- // false
1266// --
1267// -- // The same object is returned if there are no changes:
1268// -- merge(obj1, { c: 3 }) === obj1
1269// -- // true
1270// -- ```
1271function merge(a, b, c, d, e, f) {
1272  for (var _len2 = arguments.length, rest = Array(_len2 > 6 ? _len2 - 6 : 0), _key2 = 6; _key2 < _len2; _key2++) {
1273    rest[_key2 - 6] = arguments[_key2];
1274  }
1275
1276  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);
1277}
1278
1279// -- #### mergeDeep()
1280// -- Returns a new object built as follows: the overlapping keys from the
1281// -- second one overwrite the corresponding entries from the first one.
1282// -- If both the first and second entries are objects they are merged recursively.
1283// -- Similar to `Object.assign()`, but immutable, and deeply merging.
1284// --
1285// -- Usage:
1286// --
1287// -- * `mergeDeep(obj1: Object, obj2: ?Object): Object`
1288// -- * `mergeDeep(obj1: Object, ...objects: Array<?Object>): Object`
1289// --
1290// -- The unmodified `obj1` is returned if `obj2` does not *provide something
1291// -- new to* `obj1`, i.e. if either of the following
1292// -- conditions are true:
1293// --
1294// -- * `obj2` is `null` or `undefined`
1295// -- * `obj2` is an object, but it is empty
1296// -- * All attributes of `obj2` are `undefined`
1297// -- * All attributes of `obj2` are referentially equal to the
1298// --   corresponding attributes of `obj1`
1299// --
1300// -- Note that `undefined` attributes in `obj2` do not modify the
1301// -- corresponding attributes in `obj1`.
1302// --
1303// -- ```js
1304// -- obj1 = { a: 1, b: 2, c: { a: 1 } }
1305// -- obj2 = { b: 3, c: { b: 2 } }
1306// -- obj3 = mergeDeep(obj1, obj2)
1307// -- // { a: 1, b: 3, c: { a: 1, b: 2 }  }
1308// -- obj3 === obj1
1309// -- // false
1310// --
1311// -- // The same object is returned if there are no changes:
1312// -- mergeDeep(obj1, { c: { a: 1 } }) === obj1
1313// -- // true
1314// -- ```
1315function mergeDeep(a, b, c, d, e, f) {
1316  for (var _len3 = arguments.length, rest = Array(_len3 > 6 ? _len3 - 6 : 0), _key3 = 6; _key3 < _len3; _key3++) {
1317    rest[_key3 - 6] = arguments[_key3];
1318  }
1319
1320  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);
1321}
1322
1323// -- #### mergeIn()
1324// -- Similar to `merge()`, but merging the value at a given nested path.
1325// -- Note that the returned type is the same as that of the first argument.
1326// --
1327// -- Usage:
1328// --
1329// -- * `mergeIn<T: ArrayOrObject>(obj1: T, path: Array<Key>, obj2: ?Object): T`
1330// -- * `mergeIn<T: ArrayOrObject>(obj1: T, path: Array<Key>,
1331// -- ...objects: Array<?Object>): T`
1332// --
1333// -- ```js
1334// -- obj1 = { a: 1, d: { b: { d1: 3, d2: 4 } } }
1335// -- obj2 = { d3: 5 }
1336// -- obj3 = mergeIn(obj1, ['d', 'b'], obj2)
1337// -- // { a: 1, d: { b: { d1: 3, d2: 4, d3: 5 } } }
1338// -- obj3 === obj1
1339// -- // false
1340// --
1341// -- // The same object is returned if there are no changes:
1342// -- mergeIn(obj1, ['d', 'b'], { d2: 4 }) === obj1
1343// -- // true
1344// -- ```
1345function mergeIn(a, path, b, c, d, e, f) {
1346  var prevVal = getIn(a, path);
1347  if (prevVal == null) prevVal = {};
1348  var nextVal = void 0;
1349
1350  for (var _len4 = arguments.length, rest = Array(_len4 > 7 ? _len4 - 7 : 0), _key4 = 7; _key4 < _len4; _key4++) {
1351    rest[_key4 - 7] = arguments[_key4];
1352  }
1353
1354  if (rest.length) {
1355    nextVal = doMerge.call.apply(doMerge, [null, false, false, prevVal, b, c, d, e, f].concat(rest));
1356  } else {
1357    nextVal = doMerge(false, false, prevVal, b, c, d, e, f);
1358  }
1359  return setIn(a, path, nextVal);
1360}
1361
1362// -- #### omit()
1363// -- Returns an object excluding one or several attributes.
1364// --
1365// -- Usage: `omit(obj: Object, attrs: Array<string>|string): Object`
1366//
1367// -- ```js
1368// -- obj = { a: 1, b: 2, c: 3, d: 4 }
1369// -- omit(obj, 'a')
1370// -- // { b: 2, c: 3, d: 4 }
1371// -- omit(obj, ['b', 'c'])
1372// -- // { a: 1, d: 4 }
1373// --
1374// -- // The same object is returned if there are no changes:
1375// -- omit(obj, 'z') === obj1
1376// -- // true
1377// -- ```
1378function omit(obj, attrs) {
1379  var omitList = Array.isArray(attrs) ? attrs : [attrs];
1380  var fDoSomething = false;
1381  for (var i = 0; i < omitList.length; i++) {
1382    if (hasOwnProperty.call(obj, omitList[i])) {
1383      fDoSomething = true;
1384      break;
1385    }
1386  }
1387  if (!fDoSomething) return obj;
1388  var out = {};
1389  var keys = getKeysAndSymbols(obj);
1390  for (var _i = 0; _i < keys.length; _i++) {
1391    var key = keys[_i];
1392    if (omitList.indexOf(key) >= 0) continue;
1393    out[key] = obj[key];
1394  }
1395  return out;
1396}
1397
1398// -- #### addDefaults()
1399// -- Returns a new object built as follows: `undefined` keys in the first one
1400// -- are filled in with the corresponding values from the second one
1401// -- (even if they are `null`).
1402// --
1403// -- Usage:
1404// --
1405// -- * `addDefaults(obj: Object, defaults: Object): Object`
1406// -- * `addDefaults(obj: Object, ...defaultObjects: Array<?Object>): Object`
1407// --
1408// -- ```js
1409// -- obj1 = { a: 1, b: 2, c: 3 }
1410// -- obj2 = { c: 4, d: 5, e: null }
1411// -- obj3 = addDefaults(obj1, obj2)
1412// -- // { a: 1, b: 2, c: 3, d: 5, e: null }
1413// -- obj3 === obj1
1414// -- // false
1415// --
1416// -- // The same object is returned if there are no changes:
1417// -- addDefaults(obj1, { c: 4 }) === obj1
1418// -- // true
1419// -- ```
1420function addDefaults(a, b, c, d, e, f) {
1421  for (var _len5 = arguments.length, rest = Array(_len5 > 6 ? _len5 - 6 : 0), _key5 = 6; _key5 < _len5; _key5++) {
1422    rest[_key5 - 6] = arguments[_key5];
1423  }
1424
1425  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);
1426}
1427
1428// ===============================================
1429// ### Public API
1430// ===============================================
1431var timm = {
1432  clone: clone,
1433  addLast: addLast,
1434  addFirst: addFirst,
1435  removeLast: removeLast,
1436  removeFirst: removeFirst,
1437  insert: insert,
1438  removeAt: removeAt,
1439  replaceAt: replaceAt,
1440
1441  getIn: getIn,
1442  // eslint-disable-next-line object-shorthand
1443  set: set, // so that flow doesn't complain
1444  setIn: setIn,
1445  update: update,
1446  updateIn: updateIn,
1447  merge: merge,
1448  mergeDeep: mergeDeep,
1449  mergeIn: mergeIn,
1450  omit: omit,
1451  addDefaults: addDefaults
1452};
1453
1454exports.default = timm;
1455
1456
1457/***/ }),
1458/* 14 */
1459/***/ (function(module, exports) {
1460
1461function _defineProperty(obj, key, value) {
1462  if (key in obj) {
1463    Object.defineProperty(obj, key, {
1464      value: value,
1465      enumerable: true,
1466      configurable: true,
1467      writable: true
1468    });
1469  } else {
1470    obj[key] = value;
1471  }
1472
1473  return obj;
1474}
1475
1476module.exports = _defineProperty;
1477
1478/***/ }),
1479/* 15 */
1480/***/ (function(module, exports) {
1481
1482function _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); }
1483
1484function _typeof(obj) {
1485  if (typeof Symbol === "function" && _typeof2(Symbol.iterator) === "symbol") {
1486    module.exports = _typeof = function _typeof(obj) {
1487      return _typeof2(obj);
1488    };
1489  } else {
1490    module.exports = _typeof = function _typeof(obj) {
1491      return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : _typeof2(obj);
1492    };
1493  }
1494
1495  return _typeof(obj);
1496}
1497
1498module.exports = _typeof;
1499
1500/***/ }),
1501/* 16 */
1502/***/ (function(module, exports) {
1503
1504function _interopRequireWildcard(obj) {
1505  if (obj && obj.__esModule) {
1506    return obj;
1507  } else {
1508    var newObj = {};
1509
1510    if (obj != null) {
1511      for (var key in obj) {
1512        if (Object.prototype.hasOwnProperty.call(obj, key)) {
1513          var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
1514
1515          if (desc.get || desc.set) {
1516            Object.defineProperty(newObj, key, desc);
1517          } else {
1518            newObj[key] = obj[key];
1519          }
1520        }
1521      }
1522    }
1523
1524    newObj["default"] = obj;
1525    return newObj;
1526  }
1527}
1528
1529module.exports = _interopRequireWildcard;
1530
1531/***/ }),
1532/* 17 */
1533/***/ (function(module, exports, __webpack_require__) {
1534
1535var listCacheClear = __webpack_require__(121),
1536    listCacheDelete = __webpack_require__(122),
1537    listCacheGet = __webpack_require__(123),
1538    listCacheHas = __webpack_require__(124),
1539    listCacheSet = __webpack_require__(125);
1540
1541/**
1542 * Creates an list cache object.
1543 *
1544 * @private
1545 * @constructor
1546 * @param {Array} [entries] The key-value pairs to cache.
1547 */
1548function ListCache(entries) {
1549  var index = -1,
1550      length = entries == null ? 0 : entries.length;
1551
1552  this.clear();
1553  while (++index < length) {
1554    var entry = entries[index];
1555    this.set(entry[0], entry[1]);
1556  }
1557}
1558
1559// Add methods to `ListCache`.
1560ListCache.prototype.clear = listCacheClear;
1561ListCache.prototype['delete'] = listCacheDelete;
1562ListCache.prototype.get = listCacheGet;
1563ListCache.prototype.has = listCacheHas;
1564ListCache.prototype.set = listCacheSet;
1565
1566module.exports = ListCache;
1567
1568
1569/***/ }),
1570/* 18 */
1571/***/ (function(module, exports, __webpack_require__) {
1572
1573var eq = __webpack_require__(33);
1574
1575/**
1576 * Gets the index at which the `key` is found in `array` of key-value pairs.
1577 *
1578 * @private
1579 * @param {Array} array The array to inspect.
1580 * @param {*} key The key to search for.
1581 * @returns {number} Returns the index of the matched value, else `-1`.
1582 */
1583function assocIndexOf(array, key) {
1584  var length = array.length;
1585  while (length--) {
1586    if (eq(array[length][0], key)) {
1587      return length;
1588    }
1589  }
1590  return -1;
1591}
1592
1593module.exports = assocIndexOf;
1594
1595
1596/***/ }),
1597/* 19 */
1598/***/ (function(module, exports, __webpack_require__) {
1599
1600var getNative = __webpack_require__(7);
1601
1602/* Built-in method references that are verified to be native. */
1603var nativeCreate = getNative(Object, 'create');
1604
1605module.exports = nativeCreate;
1606
1607
1608/***/ }),
1609/* 20 */
1610/***/ (function(module, exports, __webpack_require__) {
1611
1612var isKeyable = __webpack_require__(145);
1613
1614/**
1615 * Gets the data for `map`.
1616 *
1617 * @private
1618 * @param {Object} map The map to query.
1619 * @param {string} key The reference key.
1620 * @returns {*} Returns the map data.
1621 */
1622function getMapData(map, key) {
1623  var data = map.__data__;
1624  return isKeyable(key)
1625    ? data[typeof key == 'string' ? 'string' : 'hash']
1626    : data.map;
1627}
1628
1629module.exports = getMapData;
1630
1631
1632/***/ }),
1633/* 21 */
1634/***/ (function(module, exports, __webpack_require__) {
1635
1636var arrayLikeKeys = __webpack_require__(74),
1637    baseKeys = __webpack_require__(41),
1638    isArrayLike = __webpack_require__(10);
1639
1640/**
1641 * Creates an array of the own enumerable property names of `object`.
1642 *
1643 * **Note:** Non-object values are coerced to objects. See the
1644 * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
1645 * for more details.
1646 *
1647 * @static
1648 * @since 0.1.0
1649 * @memberOf _
1650 * @category Object
1651 * @param {Object} object The object to query.
1652 * @returns {Array} Returns the array of property names.
1653 * @example
1654 *
1655 * function Foo() {
1656 *   this.a = 1;
1657 *   this.b = 2;
1658 * }
1659 *
1660 * Foo.prototype.c = 3;
1661 *
1662 * _.keys(new Foo);
1663 * // => ['a', 'b'] (iteration order is not guaranteed)
1664 *
1665 * _.keys('hi');
1666 * // => ['0', '1']
1667 */
1668function keys(object) {
1669  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
1670}
1671
1672module.exports = keys;
1673
1674
1675/***/ }),
1676/* 22 */
1677/***/ (function(module, exports, __webpack_require__) {
1678
1679var baseIsArguments = __webpack_require__(163),
1680    isObjectLike = __webpack_require__(8);
1681
1682/** Used for built-in method references. */
1683var objectProto = Object.prototype;
1684
1685/** Used to check objects for own properties. */
1686var hasOwnProperty = objectProto.hasOwnProperty;
1687
1688/** Built-in value references. */
1689var propertyIsEnumerable = objectProto.propertyIsEnumerable;
1690
1691/**
1692 * Checks if `value` is likely an `arguments` object.
1693 *
1694 * @static
1695 * @memberOf _
1696 * @since 0.1.0
1697 * @category Lang
1698 * @param {*} value The value to check.
1699 * @returns {boolean} Returns `true` if `value` is an `arguments` object,
1700 *  else `false`.
1701 * @example
1702 *
1703 * _.isArguments(function() { return arguments; }());
1704 * // => true
1705 *
1706 * _.isArguments([1, 2, 3]);
1707 * // => false
1708 */
1709var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {
1710  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&
1711    !propertyIsEnumerable.call(value, 'callee');
1712};
1713
1714module.exports = isArguments;
1715
1716
1717/***/ }),
1718/* 23 */
1719/***/ (function(module, exports, __webpack_require__) {
1720
1721var baseGet = __webpack_require__(44);
1722
1723/**
1724 * Gets the value at `path` of `object`. If the resolved value is
1725 * `undefined`, the `defaultValue` is returned in its place.
1726 *
1727 * @static
1728 * @memberOf _
1729 * @since 3.7.0
1730 * @category Object
1731 * @param {Object} object The object to query.
1732 * @param {Array|string} path The path of the property to get.
1733 * @param {*} [defaultValue] The value returned for `undefined` resolved values.
1734 * @returns {*} Returns the resolved value.
1735 * @example
1736 *
1737 * var object = { 'a': [{ 'b': { 'c': 3 } }] };
1738 *
1739 * _.get(object, 'a[0].b.c');
1740 * // => 3
1741 *
1742 * _.get(object, ['a', '0', 'b', 'c']);
1743 * // => 3
1744 *
1745 * _.get(object, 'a.b.c', 'default');
1746 * // => 'default'
1747 */
1748function get(object, path, defaultValue) {
1749  var result = object == null ? undefined : baseGet(object, path);
1750  return result === undefined ? defaultValue : result;
1751}
1752
1753module.exports = get;
1754
1755
1756/***/ }),
1757/* 24 */
1758/***/ (function(module, exports, __webpack_require__) {
1759
1760var isArray = __webpack_require__(1),
1761    isKey = __webpack_require__(45),
1762    stringToPath = __webpack_require__(174),
1763    toString = __webpack_require__(80);
1764
1765/**
1766 * Casts `value` to a path array if it's not one.
1767 *
1768 * @private
1769 * @param {*} value The value to inspect.
1770 * @param {Object} [object] The object to query keys on.
1771 * @returns {Array} Returns the cast property path array.
vendor: 1,732 bytes, lines 1772-1849
1772 */
1773function castPath(value, object) {
1774  if (isArray(value)) {
1775    return value;
1776  }
1777  return isKey(value, object) ? [value] : stringToPath(toString(value));
1778}
1779
1780module.exports = castPath;
1781
1782
1783/***/ }),
1784/* 25 */
1785/***/ (function(module, exports, __webpack_require__) {
1786
1787var baseGetTag = __webpack_require__(9),
1788    isObjectLike = __webpack_require__(8);
1789
1790/** `Object#toString` result references. */
1791var symbolTag = '[object Symbol]';
1792
1793/**
1794 * Checks if `value` is classified as a `Symbol` primitive or object.
1795 *
1796 * @static
1797 * @memberOf _
1798 * @since 4.0.0
1799 * @category Lang
1800 * @param {*} value The value to check.
1801 * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
1802 * @example
1803 *
1804 * _.isSymbol(Symbol.iterator);
1805 * // => true
1806 *
1807 * _.isSymbol('abc');
1808 * // => false
1809 */
1810function isSymbol(value) {
1811  return typeof value == 'symbol' ||
1812    (isObjectLike(value) && baseGetTag(value) == symbolTag);
1813}
1814
1815module.exports = isSymbol;
1816
1817
1818/***/ }),
1819/* 26 */
1820/***/ (function(module, exports, __webpack_require__) {
1821
1822var defineProperty = __webpack_require__(14);
1823
1824function _objectSpread(target) {
1825  for (var i = 1; i < arguments.length; i++) {
1826    var source = arguments[i] != null ? arguments[i] : {};
1827    var ownKeys = Object.keys(source);
1828
1829    if (typeof Object.getOwnPropertySymbols === 'function') {
1830      ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {
1831        return Object.getOwnPropertyDescriptor(source, sym).enumerable;
1832      }));
1833    }
1834
1835    ownKeys.forEach(function (key) {
1836      defineProperty(target, key, source[key]);
1837    });
1838  }
1839
1840  return target;
1841}
1842
1843module.exports = _objectSpread;
1844
1845/***/ }),
1846/* 27 */
1847/***/ (function(module, exports, __webpack_require__) {
1848
1849"use strict";
1850// @wf-will-never-add-flow-to-this-file
1851
1852/* eslint-disable */
1853
1854/**
1855 * Webflow: IX Event triggers for other modules
1856 */
1857
1858
1859var $ = window.jQuery;
1860var api = {};
1861var eventQueue = [];
1862var namespace = '.w-ix';
1863var eventTriggers = {
1864  reset: function reset(i, el) {
1865    el.__wf_intro = null;
1866  },
1867  intro: function intro(i, el) {
1868    if (el.__wf_intro) {
1869      return;
1870    }
1871
1872    el.__wf_intro = true;
1873    $(el).triggerHandler(api.types.INTRO);
1874  },
1875  outro: function outro(i, el) {
1876    if (!el.__wf_intro) {
1877      return;
1878    }
1879
1880    el.__wf_intro = null;
1881    $(el).triggerHandler(api.types.OUTRO);
1882  }
1883};
1884api.triggers = {};
1885api.types = {
1886  INTRO: 'w-ix-intro' + namespace,
1887  OUTRO: 'w-ix-outro' + namespace
1888}; // Trigger any events in queue + restore trigger methods
1889
1890api.init = function () {
1891  var count = eventQueue.length;
1892
1893  for (var i = 0; i < count; i++) {
1894    var memo = eventQueue[i];
1895    memo[0](0, memo[1]);
1896  }
1897
1898  eventQueue = [];
1899  $.extend(api.triggers, eventTriggers);
1900}; // Replace all triggers with async wrapper to queue events until init
1901
1902
1903api.async = function () {
1904  for (var key in eventTriggers) {
1905    var func = eventTriggers[key];
1906
1907    if (!eventTriggers.hasOwnProperty(key)) {
1908      continue;
1909    } // Replace trigger method with async wrapper
1910
1911
1912    api.triggers[key] = function (i, el) {
1913      eventQueue.push([func, el]);
1914    };
1915  }
1916}; // Default triggers to async queue
1917
1918
1919api.async();
1920module.exports = api;
1921
1922/***/ }),
1923/* 28 */
1924/***/ (function(module, exports, __webpack_require__) {
1925
1926"use strict";
1927// @wf-will-never-add-flow-to-this-file
1928
1929/* eslint-disable */
1930
1931
1932var IXEvents = __webpack_require__(27);
1933
1934function dispatchCustomEvent(element, eventName) {
1935  var event = document.createEvent('CustomEvent');
1936  event.initCustomEvent(eventName, true, true, null);
1937  element.dispatchEvent(event);
1938}
1939/**
1940 * Webflow: IX Event triggers for other modules
1941 */
1942
1943
1944var $ = window.jQuery;
1945var api = {};
1946var namespace = '.w-ix';
1947var eventTriggers = {
1948  reset: function reset(i, el) {
1949    IXEvents.triggers.reset(i, el);
1950  },
1951  intro: function intro(i, el) {
1952    IXEvents.triggers.intro(i, el);
1953    dispatchCustomEvent(el, 'COMPONENT_ACTIVE');
1954  },
1955  outro: function outro(i, el) {
1956    IXEvents.triggers.outro(i, el);
1957    dispatchCustomEvent(el, 'COMPONENT_INACTIVE');
1958  }
1959};
1960api.triggers = {};
1961api.types = {
1962  INTRO: 'w-ix-intro' + namespace,
1963  OUTRO: 'w-ix-outro' + namespace
1964};
1965$.extend(api.triggers, eventTriggers);
1966module.exports = api;
1967
1968/***/ }),
1969/* 29 */
1970/***/ (function(module, __webpack_exports__, __webpack_require__) {
1971
1972"use strict";
1973__webpack_require__.r(__webpack_exports__);
1974/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ActionTypes", function() { return ActionTypes; });
1975/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return createStore; });
1976/* harmony import */ var lodash_es_isPlainObject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(57);
1977/* harmony import */ var symbol_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(114);
1978
1979
1980
1981/**
1982 * These are private action types reserved by Redux.
1983 * For any unknown actions, you must return the current state.
1984 * If the current state is undefined, you must return the initial state.
1985 * Do not reference these action types directly in your code.
1986 */
1987var ActionTypes = {
1988  INIT: '@@redux/INIT'
1989};
1990
1991/**
1992 * Creates a Redux store that holds the state tree.
1993 * The only way to change the data in the store is to call `dispatch()` on it.
1994 *
1995 * There should only be a single store in your app. To specify how different
1996 * parts of the state tree respond to actions, you may combine several reducers
1997 * into a single reducer function by using `combineReducers`.
1998 *
1999 * @param {Function} reducer A function that returns the next state tree, given
2000 * the current state tree and the action to handle.
2001 *
2002 * @param {any} [preloadedState] The initial state. You may optionally specify it
2003 * to hydrate the state from the server in universal apps, or to restore a
2004 * previously serialized user session.
2005 * If you use `combineReducers` to produce the root reducer function, this must be
2006 * an object with the same shape as `combineReducers` keys.
2007 *
2008 * @param {Function} enhancer The store enhancer. You may optionally specify it
2009 * to enhance the store with third-party capabilities such as middleware,
2010 * time travel, persistence, etc. The only store enhancer that ships with Redux
2011 * is `applyMiddleware()`.
2012 *
2013 * @returns {Store} A Redux store that lets you read the state, dispatch actions
2014 * and subscribe to changes.
2015 */
2016function createStore(reducer, preloadedState, enhancer) {
2017  var _ref2;
2018
2019  if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {
2020    enhancer = preloadedState;
2021    preloadedState = undefined;
2022  }
2023
2024  if (typeof enhancer !== 'undefined') {
2025    if (typeof enhancer !== 'function') {
2026      throw new Error('Expected the enhancer to be a function.');
2027    }
2028
2029    return enhancer(createStore)(reducer, preloadedState);
2030  }
2031
2032  if (typeof reducer !== 'function') {
2033    throw new Error('Expected the reducer to be a function.');
2034  }
2035
2036  var currentReducer = reducer;
2037  var currentState = preloadedState;
2038  var currentListeners = [];
2039  var nextListeners = currentListeners;
2040  var isDispatching = false;
2041
2042  function ensureCanMutateNextListeners() {
2043    if (nextListeners === currentListeners) {
2044      nextListeners = currentListeners.slice();
2045    }
2046  }
2047
2048  /**
2049   * Reads the state tree managed by the store.
2050   *
2051   * @returns {any} The current state tree of your application.
2052   */
2053  function getState() {
2054    return currentState;
2055  }
2056
2057  /**
2058   * Adds a change listener. It will be called any time an action is dispatched,
2059   * and some part of the state tree may potentially have changed. You may then
2060   * call `getState()` to read the current state tree inside the callback.
2061   *
2062   * You may call `dispatch()` from a change listener, with the following
2063   * caveats:
2064   *
2065   * 1. The subscriptions are snapshotted just before every `dispatch()` call.
2066   * If you subscribe or unsubscribe while the listeners are being invoked, this
2067   * will not have any effect on the `dispatch()` that is currently in progress.
2068   * However, the next `dispatch()` call, whether nested or not, will use a more
2069   * recent snapshot of the subscription list.
2070   *
2071   * 2. The listener should not expect to see all state changes, as the state
2072   * might have been updated multiple times during a nested `dispatch()` before
2073   * the listener is called. It is, however, guaranteed that all subscribers
2074   * registered before the `dispatch()` started will be called with the latest
2075   * state by the time it exits.
2076   *
2077   * @param {Function} listener A callback to be invoked on every dispatch.
2078   * @returns {Function} A function to remove this change listener.
2079   */
2080  function subscribe(listener) {
2081    if (typeof listener !== 'function') {
2082      throw new Error('Expected listener to be a function.');
2083    }
2084
2085    var isSubscribed = true;
2086
2087    ensureCanMutateNextListeners();
2088    nextListeners.push(listener);
2089
2090    return function unsubscribe() {
2091      if (!isSubscribed) {
2092        return;
2093      }
2094
2095      isSubscribed = false;
2096
2097      ensureCanMutateNextListeners();
2098      var index = nextListeners.indexOf(listener);
2099      nextListeners.splice(index, 1);
2100    };
2101  }
2102
2103  /**
2104   * Dispatches an action. It is the only way to trigger a state change.
2105   *
2106   * The `reducer` function, used to create the store, will be called with the
2107   * current state tree and the given `action`. Its return value will
2108   * be considered the **next** state of the tree, and the change listeners
2109   * will be notified.
2110   *
2111   * The base implementation only supports plain object actions. If you want to
2112   * dispatch a Promise, an Observable, a thunk, or something else, you need to
2113   * wrap your store creating function into the corresponding middleware. For
2114   * example, see the documentation for the `redux-thunk` package. Even the
2115   * middleware will eventually dispatch plain object actions using this method.
2116   *
2117   * @param {Object} action A plain object representing “what changed”. It is
2118   * a good idea to keep actions serializable so you can record and replay user
2119   * sessions, or use the time travelling `redux-devtools`. An action must have
2120   * a `type` property which may not be `undefined`. It is a good idea to use
2121   * string constants for action types.
2122   *
2123   * @returns {Object} For convenience, the same action object you dispatched.
2124   *
2125   * Note that, if you use a custom middleware, it may wrap `dispatch()` to
2126   * return something else (for example, a Promise you can await).
2127   */
2128  function dispatch(action) {
2129    if (!Object(lodash_es_isPlainObject__WEBPACK_IMPORTED_MODULE_0__["default"])(action)) {
2130      throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');
2131    }
2132
2133    if (typeof action.type === 'undefined') {
2134      throw new Error('Actions may not have an undefined "type" property. ' + 'Have you misspelled a constant?');
2135    }
2136
2137    if (isDispatching) {
2138      throw new Error('Reducers may not dispatch actions.');
2139    }
2140
2141    try {
2142      isDispatching = true;
2143      currentState = currentReducer(currentState, action);
2144    } finally {
2145      isDispatching = false;
2146    }
2147
2148    var listeners = currentListeners = nextListeners;
2149    for (var i = 0; i < listeners.length; i++) {
2150      listeners[i]();
2151    }
2152
2153    return action;
2154  }
2155
2156  /**
2157   * Replaces the reducer currently used by the store to calculate the state.
2158   *
2159   * You might need this if your app implements code splitting and you want to
2160   * load some of the reducers dynamically. You might also need this if you
2161   * implement a hot reloading mechanism for Redux.
2162   *
2163   * @param {Function} nextReducer The reducer for the store to use instead.
2164   * @returns {void}
2165   */
2166  function replaceReducer(nextReducer) {
2167    if (typeof nextReducer !== 'function') {
2168      throw new Error('Expected the nextReducer to be a function.');
2169    }
2170
2171    currentReducer = nextReducer;
2172    dispatch({ type: ActionTypes.INIT });
2173  }
2174
2175  /**
2176   * Interoperability point for observable/reactive libraries.
2177   * @returns {observable} A minimal observable of state changes.
2178   * For more information, see the observable proposal:
2179   * https://github.com/zenparsing/es-observable
2180   */
2181  function observable() {
2182    var _ref;
2183
2184    var outerSubscribe = subscribe;
2185    return _ref = {
2186      /**
2187       * The minimal observable subscription method.
2188       * @param {Object} observer Any object that can be used as an observer.
2189       * The observer object should have a `next` method.
2190       * @returns {subscription} An object with an `unsubscribe` method that can
2191       * be used to unsubscribe the observable from the store, and prevent further
2192       * emission of values from the observable.
2193       */
2194      subscribe: function subscribe(observer) {
2195        if (typeof observer !== 'object') {
2196          throw new TypeError('Expected the observer to be an object.');
2197        }
2198
2199        function observeState() {
2200          if (observer.next) {
2201            observer.next(getState());
2202          }
2203        }
2204
2205        observeState();
2206        var unsubscribe = outerSubscribe(observeState);
2207        return { unsubscribe: unsubscribe };
2208      }
2209    }, _ref[symbol_observable__WEBPACK_IMPORTED_MODULE_1__["default"]] = function () {
2210      return this;
2211    }, _ref;
2212  }
2213
2214  // When a store is created, an "INIT" action is dispatched so that every
2215  // reducer returns their initial state. This effectively populates
2216  // the initial state tree.
2217  dispatch({ type: ActionTypes.INIT });
2218
2219  return _ref2 = {
2220    dispatch: dispatch,
2221    subscribe: subscribe,
2222    getState: getState,
2223    replaceReducer: replaceReducer
2224  }, _ref2[symbol_observable__WEBPACK_IMPORTED_MODULE_1__["default"]] = observable, _ref2;
2225}
2226
2227/***/ }),
2228/* 30 */
2229/***/ (function(module, exports) {
2230
2231var g;
2232
2233// This works in non-strict mode
2234g = (function() {
2235	return this;
2236})();
2237
2238try {
2239	// This works if eval is allowed (see CSP)
2240	g = g || new Function("return this")();
2241} catch (e) {
2242	// This works if the window reference is available
2243	if (typeof window === "object") g = window;
2244}
2245
2246// g can still be undefined, but nothing to do about it...
2247// We return undefined, instead of nothing here, so it's
2248// easier to handle this case. if(!global) { ...}
2249
2250module.exports = g;
2251
2252
2253/***/ }),
2254/* 31 */
2255/***/ (function(module, __webpack_exports__, __webpack_require__) {
2256
2257"use strict";
2258__webpack_require__.r(__webpack_exports__);
2259/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return compose; });
2260/**
2261 * Composes single-argument functions from right to left. The rightmost
2262 * function can take multiple arguments as it provides the signature for
2263 * the resulting composite function.
2264 *
2265 * @param {...Function} funcs The functions to compose.
2266 * @returns {Function} A function obtained by composing the argument functions
2267 * from right to left. For example, compose(f, g, h) is identical to doing
2268 * (...args) => f(g(h(...args))).
2269 */
2270
2271function compose() {
2272  for (var _len = arguments.length, funcs = Array(_len), _key = 0; _key < _len; _key++) {
2273    funcs[_key] = arguments[_key];
2274  }
2275
2276  if (funcs.length === 0) {
2277    return function (arg) {
2278      return arg;
2279    };
2280  }
2281
2282  if (funcs.length === 1) {
2283    return funcs[0];
2284  }
2285
2286  var last = funcs[funcs.length - 1];
2287  var rest = funcs.slice(0, -1);
2288  return function () {
2289    return rest.reduceRight(function (composed, f) {
2290      return f(composed);
2291    }, last.apply(undefined, arguments));
2292  };
2293}
2294
2295/***/ }),
2296/* 32 */
2297/***/ (function(module, exports, __webpack_require__) {
2298
2299"use strict";
2300
2301
2302var _interopRequireDefault = __webpack_require__(0);
2303
2304Object.defineProperty(exports, "__esModule", {
2305  value: true
2306});
2307exports.TRANSFORM_STYLE_PREFIXED = exports.TRANSFORM_PREFIXED = exports.FLEX_PREFIXED = exports.ELEMENT_MATCHES = exports.withBrowser = exports.IS_BROWSER_ENV = void 0;
2308
2309var _find = _interopRequireDefault(__webpack_require__(63));
2310/* eslint-env browser */
2311
2312
2313var IS_BROWSER_ENV = typeof window !== 'undefined';
2314exports.IS_BROWSER_ENV = IS_BROWSER_ENV;
2315
2316var withBrowser = function withBrowser(fn, fallback) {
2317  if (IS_BROWSER_ENV) {
2318    return fn();
2319  }
2320
2321  return fallback;
2322};
2323
2324exports.withBrowser = withBrowser;
2325var ELEMENT_MATCHES = withBrowser(function () {
2326  return (0, _find["default"])(['matches', 'matchesSelector', 'mozMatchesSelector', 'msMatchesSelector', 'oMatchesSelector', 'webkitMatchesSelector'], function (key) {
2327    return key in Element.prototype;
2328  });
2329});
2330exports.ELEMENT_MATCHES = ELEMENT_MATCHES;
2331var FLEX_PREFIXED = withBrowser(function () {
2332  var el = document.createElement('i');
2333  var values = ['flex', '-webkit-flex', '-ms-flexbox', '-moz-box', '-webkit-box'];
2334  var none = '';
2335
2336  try {
2337    var length = values.length;
2338
2339    for (var i = 0; i < length; i++) {
2340      var value = values[i];
2341      el.style.display = value;
2342
2343      if (el.style.display === value) {
2344        return value;
2345      }
2346    }
2347
2348    return none;
2349  } catch (err) {
2350    return none;
2351  }
2352}, 'flex');
2353exports.FLEX_PREFIXED = FLEX_PREFIXED;
2354var TRANSFORM_PREFIXED = withBrowser(function () {
2355  var el = document.createElement('i');
2356
2357  if (el.style.transform == null) {
2358    var prefixes = ['Webkit', 'Moz', 'ms'];
2359    var suffix = 'Transform';
2360    var length = prefixes.length;
2361
2362    for (var i = 0; i < length; i++) {
2363      var prop = prefixes[i] + suffix;
2364
2365      if (el.style[prop] !== undefined) {
2366        return prop;
2367      }
2368    }
2369  }
2370
2371  return 'transform';
2372}, 'transform');
2373exports.TRANSFORM_PREFIXED = TRANSFORM_PREFIXED;
2374var TRANSFORM_PREFIX = TRANSFORM_PREFIXED.split('transform')[0];
2375var TRANSFORM_STYLE_PREFIXED = TRANSFORM_PREFIX ? TRANSFORM_PREFIX + 'TransformStyle' : 'transformStyle';
2376exports.TRANSFORM_STYLE_PREFIXED = TRANSFORM_STYLE_PREFIXED;
2377
2378/***/ }),
2379/* 33 */
2380/***/ (function(module, exports) {
2381
2382/**
2383 * Performs a
2384 * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
2385 * comparison between two values to determine if they are equivalent.
2386 *
2387 * @static
2388 * @memberOf _
2389 * @since 4.0.0
2390 * @category Lang
2391 * @param {*} value The value to compare.
2392 * @param {*} other The other value to compare.
2393 * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
2394 * @example
2395 *
2396 * var object = { 'a': 1 };
2397 * var other = { 'a': 1 };
2398 *
2399 * _.eq(object, object);
2400 * // => true
2401 *
2402 * _.eq(object, other);
2403 * // => false
2404 *
2405 * _.eq('a', 'a');
2406 * // => true
2407 *
2408 * _.eq('a', Object('a'));
2409 * // => false
2410 *
2411 * _.eq(NaN, NaN);
2412 * // => true
2413 */
2414function eq(value, other) {
2415  return value === other || (value !== value && other !== other);
2416}
2417
2418module.exports = eq;
2419
2420
2421/***/ }),
2422/* 34 */
2423/***/ (function(module, exports, __webpack_require__) {
2424
2425var getNative = __webpack_require__(7),
2426    root = __webpack_require__(4);
2427
2428/* Built-in method references that are verified to be native. */
2429var Map = getNative(root, 'Map');
2430
2431module.exports = Map;
2432
2433
2434/***/ }),
2435/* 35 */
2436/***/ (function(module, exports, __webpack_require__) {
2437
2438var mapCacheClear = __webpack_require__(137),
2439    mapCacheDelete = __webpack_require__(144),
2440    mapCacheGet = __webpack_require__(146),
2441    mapCacheHas = __webpack_require__(147),
2442    mapCacheSet = __webpack_require__(148);
2443
2444/**
2445 * Creates a map cache object to store key-value pairs.
2446 *
2447 * @private
2448 * @constructor
2449 * @param {Array} [entries] The key-value pairs to cache.
2450 */
2451function MapCache(entries) {
2452  var index = -1,
2453      length = entries == null ? 0 : entries.length;
2454
2455  this.clear();
2456  while (++index < length) {
2457    var entry = entries[index];
2458    this.set(entry[0], entry[1]);
2459  }
2460}
2461
2462// Add methods to `MapCache`.
2463MapCache.prototype.clear = mapCacheClear;
2464MapCache.prototype['delete'] = mapCacheDelete;
2465MapCache.prototype.get = mapCacheGet;
2466MapCache.prototype.has = mapCacheHas;
2467MapCache.prototype.set = mapCacheSet;
2468
2469module.exports = MapCache;
2470
2471
2472/***/ }),
2473/* 36 */
vendor: 7,132 bytes, lines 2474-2753
2474/***/ (function(module, exports) {
2475
2476/**
2477 * Appends the elements of `values` to `array`.
2478 *
2479 * @private
2480 * @param {Array} array The array to modify.
2481 * @param {Array} values The values to append.
2482 * @returns {Array} Returns `array`.
2483 */
2484function arrayPush(array, values) {
2485  var index = -1,
2486      length = values.length,
2487      offset = array.length;
2488
2489  while (++index < length) {
2490    array[offset + index] = values[index];
2491  }
2492  return array;
2493}
2494
2495module.exports = arrayPush;
2496
2497
2498/***/ }),
2499/* 37 */
2500/***/ (function(module, exports, __webpack_require__) {
2501
2502/* WEBPACK VAR INJECTION */(function(module) {var root = __webpack_require__(4),
2503    stubFalse = __webpack_require__(164);
2504
2505/** Detect free variable `exports`. */
2506var freeExports =  true && exports && !exports.nodeType && exports;
2507
2508/** Detect free variable `module`. */
2509var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
2510
2511/** Detect the popular CommonJS extension `module.exports`. */
2512var moduleExports = freeModule && freeModule.exports === freeExports;
2513
2514/** Built-in value references. */
2515var Buffer = moduleExports ? root.Buffer : undefined;
2516
2517/* Built-in method references for those with the same name as other `lodash` methods. */
2518var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;
2519
2520/**
2521 * Checks if `value` is a buffer.
2522 *
2523 * @static
2524 * @memberOf _
2525 * @since 4.3.0
2526 * @category Lang
2527 * @param {*} value The value to check.
2528 * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.
2529 * @example
2530 *
2531 * _.isBuffer(new Buffer(2));
2532 * // => true
2533 *
2534 * _.isBuffer(new Uint8Array(2));
2535 * // => false
2536 */
2537var isBuffer = nativeIsBuffer || stubFalse;
2538
2539module.exports = isBuffer;
2540
2541/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(75)(module)))
2542
2543/***/ }),
2544/* 38 */
2545/***/ (function(module, exports) {
2546
2547/** Used as references for various `Number` constants. */
2548var MAX_SAFE_INTEGER = 9007199254740991;
2549
2550/** Used to detect unsigned integer values. */
2551var reIsUint = /^(?:0|[1-9]\d*)$/;
2552
2553/**
2554 * Checks if `value` is a valid array-like index.
2555 *
2556 * @private
2557 * @param {*} value The value to check.
2558 * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
2559 * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
2560 */
2561function isIndex(value, length) {
2562  var type = typeof value;
2563  length = length == null ? MAX_SAFE_INTEGER : length;
2564
2565  return !!length &&
2566    (type == 'number' ||
2567      (type != 'symbol' && reIsUint.test(value))) &&
2568        (value > -1 && value % 1 == 0 && value < length);
2569}
2570
2571module.exports = isIndex;
2572
2573
2574/***/ }),
2575/* 39 */
2576/***/ (function(module, exports, __webpack_require__) {
2577
2578var baseIsTypedArray = __webpack_require__(165),
2579    baseUnary = __webpack_require__(166),
2580    nodeUtil = __webpack_require__(167);
2581
2582/* Node.js helper references. */
2583var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
2584
2585/**
2586 * Checks if `value` is classified as a typed array.
2587 *
2588 * @static
2589 * @memberOf _
2590 * @since 3.0.0
2591 * @category Lang
2592 * @param {*} value The value to check.
2593 * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
2594 * @example
2595 *
2596 * _.isTypedArray(new Uint8Array);
2597 * // => true
2598 *
2599 * _.isTypedArray([]);
2600 * // => false
2601 */
2602var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
2603
2604module.exports = isTypedArray;
2605
2606
2607/***/ }),
2608/* 40 */
2609/***/ (function(module, exports) {
2610
2611/** Used as references for various `Number` constants. */
2612var MAX_SAFE_INTEGER = 9007199254740991;
2613
2614/**
2615 * Checks if `value` is a valid array-like length.
2616 *
2617 * **Note:** This method is loosely based on
2618 * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
2619 *
2620 * @static
2621 * @memberOf _
2622 * @since 4.0.0
2623 * @category Lang
2624 * @param {*} value The value to check.
2625 * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
2626 * @example
2627 *
2628 * _.isLength(3);
2629 * // => true
2630 *
2631 * _.isLength(Number.MIN_VALUE);
2632 * // => false
2633 *
2634 * _.isLength(Infinity);
2635 * // => false
2636 *
2637 * _.isLength('3');
2638 * // => false
2639 */
2640function isLength(value) {
2641  return typeof value == 'number' &&
2642    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
2643}
2644
2645module.exports = isLength;
2646
2647
2648/***/ }),
2649/* 41 */
2650/***/ (function(module, exports, __webpack_require__) {
2651
2652var isPrototype = __webpack_require__(42),
2653    nativeKeys = __webpack_require__(168);
2654
2655/** Used for built-in method references. */
2656var objectProto = Object.prototype;
2657
2658/** Used to check objects for own properties. */
2659var hasOwnProperty = objectProto.hasOwnProperty;
2660
2661/**
2662 * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
2663 *
2664 * @private
2665 * @param {Object} object The object to query.
2666 * @returns {Array} Returns the array of property names.
2667 */
2668function baseKeys(object) {
2669  if (!isPrototype(object)) {
2670    return nativeKeys(object);
2671  }
2672  var result = [];
2673  for (var key in Object(object)) {
2674    if (hasOwnProperty.call(object, key) && key != 'constructor') {
2675      result.push(key);
2676    }
2677  }
2678  return result;
2679}
2680
2681module.exports = baseKeys;
2682
2683
2684/***/ }),
2685/* 42 */
2686/***/ (function(module, exports) {
2687
2688/** Used for built-in method references. */
2689var objectProto = Object.prototype;
2690
2691/**
2692 * Checks if `value` is likely a prototype object.
2693 *
2694 * @private
2695 * @param {*} value The value to check.
2696 * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
2697 */
2698function isPrototype(value) {
2699  var Ctor = value && value.constructor,
2700      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;
2701
2702  return value === proto;
2703}
2704
2705module.exports = isPrototype;
2706
2707
2708/***/ }),
2709/* 43 */
2710/***/ (function(module, exports, __webpack_require__) {
2711
2712var DataView = __webpack_require__(169),
2713    Map = __webpack_require__(34),
2714    Promise = __webpack_require__(170),
2715    Set = __webpack_require__(171),
2716    WeakMap = __webpack_require__(77),
2717    baseGetTag = __webpack_require__(9),
2718    toSource = __webpack_require__(68);
2719
2720/** `Object#toString` result references. */
2721var mapTag = '[object Map]',
2722    objectTag = '[object Object]',
2723    promiseTag = '[object Promise]',
2724    setTag = '[object Set]',
2725    weakMapTag = '[object WeakMap]';
2726
2727var dataViewTag = '[object DataView]';
2728
2729/** Used to detect maps, sets, and weakmaps. */
2730var dataViewCtorString = toSource(DataView),
2731    mapCtorString = toSource(Map),
2732    promiseCtorString = toSource(Promise),
2733    setCtorString = toSource(Set),
2734    weakMapCtorString = toSource(WeakMap);
2735
2736/**
2737 * Gets the `toStringTag` of `value`.
2738 *
2739 * @private
2740 * @param {*} value The value to query.
2741 * @returns {string} Returns the `toStringTag`.
2742 */
2743var getTag = baseGetTag;
2744
2745// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.
2746if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||
2747    (Map && getTag(new Map) != mapTag) ||
2748    (Promise && getTag(Promise.resolve()) != promiseTag) ||
2749    (Set && getTag(new Set) != setTag) ||
2750    (WeakMap && getTag(new WeakMap) != weakMapTag)) {
2751  getTag = function(value) {
2752    var result = baseGetTag(value),
2753        Ctor = result == objectTag ? value.constructor : undefined,
vendor: 5,744 bytes, lines 2754-2988
2754        ctorString = Ctor ? toSource(Ctor) : '';
2755
2756    if (ctorString) {
2757      switch (ctorString) {
2758        case dataViewCtorString: return dataViewTag;
2759        case mapCtorString: return mapTag;
2760        case promiseCtorString: return promiseTag;
2761        case setCtorString: return setTag;
2762        case weakMapCtorString: return weakMapTag;
2763      }
2764    }
2765    return result;
2766  };
2767}
2768
2769module.exports = getTag;
2770
2771
2772/***/ }),
2773/* 44 */
2774/***/ (function(module, exports, __webpack_require__) {
2775
2776var castPath = __webpack_require__(24),
2777    toKey = __webpack_require__(12);
2778
2779/**
2780 * The base implementation of `_.get` without support for default values.
2781 *
2782 * @private
2783 * @param {Object} object The object to query.
2784 * @param {Array|string} path The path of the property to get.
2785 * @returns {*} Returns the resolved value.
2786 */
2787function baseGet(object, path) {
2788  path = castPath(path, object);
2789
2790  var index = 0,
2791      length = path.length;
2792
2793  while (object != null && index < length) {
2794    object = object[toKey(path[index++])];
2795  }
2796  return (index && index == length) ? object : undefined;
2797}
2798
2799module.exports = baseGet;
2800
2801
2802/***/ }),
2803/* 45 */
2804/***/ (function(module, exports, __webpack_require__) {
2805
2806var isArray = __webpack_require__(1),
2807    isSymbol = __webpack_require__(25);
2808
2809/** Used to match property names within property paths. */
2810var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
2811    reIsPlainProp = /^\w*$/;
2812
2813/**
2814 * Checks if `value` is a property name and not a property path.
2815 *
2816 * @private
2817 * @param {*} value The value to check.
2818 * @param {Object} [object] The object to query keys on.
2819 * @returns {boolean} Returns `true` if `value` is a property name, else `false`.
2820 */
2821function isKey(value, object) {
2822  if (isArray(value)) {
2823    return false;
2824  }
2825  var type = typeof value;
2826  if (type == 'number' || type == 'symbol' || type == 'boolean' ||
2827      value == null || isSymbol(value)) {
2828    return true;
2829  }
2830  return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||
2831    (object != null && value in Object(object));
2832}
2833
2834module.exports = isKey;
2835
2836
2837/***/ }),
2838/* 46 */
2839/***/ (function(module, exports) {
2840
2841/**
2842 * This method returns the first argument it receives.
2843 *
2844 * @static
2845 * @since 0.1.0
2846 * @memberOf _
2847 * @category Util
2848 * @param {*} value Any value.
2849 * @returns {*} Returns `value`.
2850 * @example
2851 *
2852 * var object = { 'a': 1 };
2853 *
2854 * console.log(_.identity(object) === object);
2855 * // => true
2856 */
2857function identity(value) {
2858  return value;
2859}
2860
2861module.exports = identity;
2862
2863
2864/***/ }),
2865/* 47 */
2866/***/ (function(module, exports, __webpack_require__) {
2867
2868var toFinite = __webpack_require__(183);
2869
2870/**
2871 * Converts `value` to an integer.
2872 *
2873 * **Note:** This method is loosely based on
2874 * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).
2875 *
2876 * @static
2877 * @memberOf _
2878 * @since 4.0.0
2879 * @category Lang
2880 * @param {*} value The value to convert.
2881 * @returns {number} Returns the converted integer.
2882 * @example
2883 *
2884 * _.toInteger(3.2);
2885 * // => 3
2886 *
2887 * _.toInteger(Number.MIN_VALUE);
2888 * // => 0
2889 *
2890 * _.toInteger(Infinity);
2891 * // => 1.7976931348623157e+308
2892 *
2893 * _.toInteger('3.2');
2894 * // => 3
2895 */
2896function toInteger(value) {
2897  var result = toFinite(value),
2898      remainder = result % 1;
2899
2900  return result === result ? (remainder ? result - remainder : result) : 0;
2901}
2902
2903module.exports = toInteger;
2904
2905
2906/***/ }),
2907/* 48 */
2908/***/ (function(module, exports, __webpack_require__) {
2909
2910var isObject = __webpack_require__(5),
2911    isSymbol = __webpack_require__(25);
2912
2913/** Used as references for various `Number` constants. */
2914var NAN = 0 / 0;
2915
2916/** Used to match leading and trailing whitespace. */
2917var reTrim = /^\s+|\s+$/g;
2918
2919/** Used to detect bad signed hexadecimal string values. */
2920var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
2921
2922/** Used to detect binary string values. */
2923var reIsBinary = /^0b[01]+$/i;
2924
2925/** Used to detect octal string values. */
2926var reIsOctal = /^0o[0-7]+$/i;
2927
2928/** Built-in method references without a dependency on `root`. */
2929var freeParseInt = parseInt;
2930
2931/**
2932 * Converts `value` to a number.
2933 *
2934 * @static
2935 * @memberOf _
2936 * @since 4.0.0
2937 * @category Lang
2938 * @param {*} value The value to process.
2939 * @returns {number} Returns the number.
2940 * @example
2941 *
2942 * _.toNumber(3.2);
2943 * // => 3.2
2944 *
2945 * _.toNumber(Number.MIN_VALUE);
2946 * // => 5e-324
2947 *
2948 * _.toNumber(Infinity);
2949 * // => Infinity
2950 *
2951 * _.toNumber('3.2');
2952 * // => 3.2
2953 */
2954function toNumber(value) {
2955  if (typeof value == 'number') {
2956    return value;
2957  }
2958  if (isSymbol(value)) {
2959    return NAN;
2960  }
2961  if (isObject(value)) {
2962    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;
2963    value = isObject(other) ? (other + '') : other;
2964  }
2965  if (typeof value != 'string') {
2966    return value === 0 ? value : +value;
2967  }
2968  value = value.replace(reTrim, '');
2969  var isBinary = reIsBinary.test(value);
2970  return (isBinary || reIsOctal.test(value))
2971    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)
2972    : (reIsBadHex.test(value) ? NAN : +value);
2973}
2974
2975module.exports = toNumber;
2976
2977
2978/***/ }),
2979/* 49 */
2980/***/ (function(module, exports, __webpack_require__) {
2981
2982"use strict";
2983
2984
2985Object.defineProperty(exports, "__esModule", {
2986  value: true
2987});
2988exports.PLUGIN_LOTTIE = exports.JELLO_EFFECT = exports.RUBBER_BAND_EFFECT = exports.FLIP_RIGHT_TO_LEFT_EFFECT = exports.FLIP_LEFT_TO_RIGHT_EFFECT = exports.BOUNCE_EFFECT = exports.BLINK_EFFECT = exports.DROP_EFFECT = exports.PULSE_EFFECT = exports.JIGGLE_EFFECT = exports.FLIP_EFFECT = exports.POP_EFFECT = exports.FLY_EFFECT = exports.SPIN_EFFECT = exports.SHRINK_BIG_EFFECT = exports.SHRINK_EFFECT = exports.GROW_BIG_EFFECT = exports.GROW_EFFECT = exports.BLUR_EFFECT = exports.SLIDE_EFFECT = exports.FADE_EFFECT = exports.OBJECT_VALUE = exports.GENERAL_LOOP = exports.GENERAL_STOP_ACTION = exp
2988orts.GENERAL_START_ACTION = exports.GENERAL_CONTINUOUS_ACTION = exports.GENERAL_DISPLAY = exports.GENERAL_COMBO_CLASS = exports.STYLE_TEXT_COLOR = exports.STYLE_BORDER = exports.STYLE_BACKGROUND_COLOR = exports.STYLE_FILTER = exports.STYLE_BOX_SHADOW = exports.STYLE_SIZE = exports.STYLE_OPACITY = exports.TRANSFORM_SKEW = exports.TRANSFORM_ROTATE = exports.TRANSFORM_SCALE = exports.TRANSFORM_MOVE = void 0;
2989var TRANSFORM_MOVE = 'TRANSFORM_MOVE';
2990exports.TRANSFORM_MOVE = TRANSFORM_MOVE;
2991var TRANSFORM_SCALE = 'TRANSFORM_SCALE';
2992exports.TRANSFORM_SCALE = TRANSFORM_SCALE;
2993var TRANSFORM_ROTATE = 'TRANSFORM_ROTATE';
2994exports.TRANSFORM_ROTATE = TRANSFORM_ROTATE;
2995var TRANSFORM_SKEW = 'TRANSFORM_SKEW';
2996exports.TRANSFORM_SKEW = TRANSFORM_SKEW;
2997var STYLE_OPACITY = 'STYLE_OPACITY';
2998exports.STYLE_OPACITY = STYLE_OPACITY;
2999var STYLE_SIZE = 'STYLE_SIZE';
3000exports.STYLE_SIZE = STYLE_SIZE;
3001var STYLE_BOX_SHADOW = 'STYLE_BOX_SHADOW';
3002exports.STYLE_BOX_SHADOW = STYLE_BOX_SHADOW;
3003var STYLE_FILTER = 'STYLE_FILTER';
3004exports.STYLE_FILTER = STYLE_FILTER;
3005var STYLE_BACKGROUND_COLOR = 'STYLE_BACKGROUND_COLOR';
3006exports.STYLE_BACKGROUND_COLOR = STYLE_BACKGROUND_COLOR;
3007var STYLE_BORDER = 'STYLE_BORDER';
3008exports.STYLE_BORDER = STYLE_BORDER;
3009var STYLE_TEXT_COLOR = 'STYLE_TEXT_COLOR';
3010exports.STYLE_TEXT_COLOR = STYLE_TEXT_COLOR;
3011var GENERAL_COMBO_CLASS = 'GENERAL_COMBO_CLASS';
3012exports.GENERAL_COMBO_CLASS = GENERAL_COMBO_CLASS;
3013var GENERAL_DISPLAY = 'GENERAL_DISPLAY';
3014exports.GENERAL_DISPLAY = GENERAL_DISPLAY;
3015var GENERAL_CONTINUOUS_ACTION = 'GENERAL_CONTINUOUS_ACTION';
3016exports.GENERAL_CONTINUOUS_ACTION = GENERAL_CONTINUOUS_ACTION;
3017var GENERAL_START_ACTION = 'GENERAL_START_ACTION';
3018exports.GENERAL_START_ACTION = GENERAL_START_ACTION;
3019var GENERAL_STOP_ACTION = 'GENERAL_STOP_ACTION';
3020exports.GENERAL_STOP_ACTION = GENERAL_STOP_ACTION;
3021var GENERAL_LOOP = 'GENERAL_LOOP';
3022exports.GENERAL_LOOP = GENERAL_LOOP;
3023var OBJECT_VALUE = 'OBJECT_VALUE';
3024exports.OBJECT_VALUE = OBJECT_VALUE;
3025var FADE_EFFECT = 'FADE_EFFECT';
3026exports.FADE_EFFECT = FADE_EFFECT;
3027var SLIDE_EFFECT = 'SLIDE_EFFECT';
3028exports.SLIDE_EFFECT = SLIDE_EFFECT;
3029var BLUR_EFFECT = 'BLUR_EFFECT';
3030exports.BLUR_EFFECT = BLUR_EFFECT;
3031var GROW_EFFECT = 'GROW_EFFECT';
3032exports.GROW_EFFECT = GROW_EFFECT;
3033var GROW_BIG_EFFECT = 'GROW_BIG_EFFECT';
3034exports.GROW_BIG_EFFECT = GROW_BIG_EFFECT;
3035var SHRINK_EFFECT = 'SHRINK_EFFECT';
3036exports.SHRINK_EFFECT = SHRINK_EFFECT;
3037var SHRINK_BIG_EFFECT = 'SHRINK_BIG_EFFECT';
3038exports.SHRINK_BIG_EFFECT = SHRINK_BIG_EFFECT;
3039var SPIN_EFFECT = 'SPIN_EFFECT';
3040exports.SPIN_EFFECT = SPIN_EFFECT;
3041var FLY_EFFECT = 'FLY_EFFECT';
3042exports.FLY_EFFECT = FLY_EFFECT;
3043var POP_EFFECT = 'POP_EFFECT';
3044exports.POP_EFFECT = POP_EFFECT;
3045var FLIP_EFFECT = 'FLIP_EFFECT';
3046exports.FLIP_EFFECT = FLIP_EFFECT;
3047var JIGGLE_EFFECT = 'JIGGLE_EFFECT';
3048exports.JIGGLE_EFFECT = JIGGLE_EFFECT;
3049var PULSE_EFFECT = 'PULSE_EFFECT';
3050exports.PULSE_EFFECT = PULSE_EFFECT;
3051var DROP_EFFECT = 'DROP_EFFECT';
3052exports.DROP_EFFECT = DROP_EFFECT;
3053var BLINK_EFFECT = 'BLINK_EFFECT';
3054exports.BLINK_EFFECT = BLINK_EFFECT;
3055var BOUNCE_EFFECT = 'BOUNCE_EFFECT';
3056exports.BOUNCE_EFFECT = BOUNCE_EFFECT;
3057var FLIP_LEFT_TO_RIGHT_EFFECT = 'FLIP_LEFT_TO_RIGHT_EFFECT';
3058exports.FLIP_LEFT_TO_RIGHT_EFFECT = FLIP_LEFT_TO_RIGHT_EFFECT;
3059var FLIP_RIGHT_TO_LEFT_EFFECT = 'FLIP_RIGHT_TO_LEFT_EFFECT';
3060exports.FLIP_RIGHT_TO_LEFT_EFFECT = FLIP_RIGHT_TO_LEFT_EFFECT;
3061var RUBBER_BAND_EFFECT = 'RUBBER_BAND_EFFECT';
3062exports.RUBBER_BAND_EFFECT = RUBBER_BAND_EFFECT;
3063var JELLO_EFFECT = 'JELLO_EFFECT';
3064exports.JELLO_EFFECT = JELLO_EFFECT;
3065var PLUGIN_LOTTIE = 'PLUGIN_LOTTIE';
3066exports.PLUGIN_LOTTIE = PLUGIN_LOTTIE;
3067
3068/***/ }),
3069/* 50 */
3070/***/ (function(module, exports, __webpack_require__) {
3071
3072"use strict";
3073
3074
3075Object.defineProperty(exports, "__esModule", {
3076  value: true
3077});
3078exports.RENDER_PLUGIN = exports.RENDER_STYLE = exports.RENDER_GENERAL = exports.RENDER_TRANSFORM = exp
3078orts.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.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;
3079var IX2_ID_DELIMITER = '|';
3080exports.IX2_ID_DELIMITER = IX2_ID_DELIMITER;
3081var WF_PAGE = 'data-wf-page';
3082exports.WF_PAGE = WF_PAGE;
3083var W_MOD_JS = 'w-mod-js';
3084exports.W_MOD_JS = W_MOD_JS;
3085var W_MOD_IX = 'w-mod-ix';
3086exports.W_MOD_IX = W_MOD_IX;
3087var BOUNDARY_SELECTOR = '.w-dyn-item';
3088exports.BOUNDARY_SELECTOR = BOUNDARY_SELECTOR;
3089var CONFIG_X_VALUE = 'xValue';
3090exports.CONFIG_X_VALUE = CONFIG_X_VALUE;
3091var CONFIG_Y_VALUE = 'yValue';
3092exports.CONFIG_Y_VALUE = CONFIG_Y_VALUE;
3093var CONFIG_Z_VALUE = 'zValue';
3094exports.CONFIG_Z_VALUE = CONFIG_Z_VALUE;
3095var CONFIG_VALUE = 'value';
3096exports.CONFIG_VALUE = CONFIG_VALUE;
3097var CONFIG_X_UNIT = 'xUnit';
3098exports.CONFIG_X_UNIT = CONFIG_X_UNIT;
3099var CONFIG_Y_UNIT = 'yUnit';
3100exports.CONFIG_Y_UNIT = CONFIG_Y_UNIT;
3101var CONFIG_Z_UNIT = 'zUnit';
3102exports.CONFIG_Z_UNIT = CONFIG_Z_UNIT;
3103var CONFIG_UNIT = 'unit';
3104exports.CONFIG_UNIT = CONFIG_UNIT;
3105var TRANSFORM = 'transform';
3106exports.TRANSFORM = TRANSFORM;
3107var TRANSLATE_X = 'translateX';
3108exports.TRANSLATE_X = TRANSLATE_X;
3109var TRANSLATE_Y = 'translateY';
3110exports.TRANSLATE_Y = TRANSLATE_Y;
3111var TRANSLATE_Z = 'translateZ';
3112exports.TRANSLATE_Z = TRANSLATE_Z;
3113var TRANSLATE_3D = 'translate3d';
3114exports.TRANSLATE_3D = TRANSLATE_3D;
3115var SCALE_X = 'scaleX';
3116exports.SCALE_X = SCALE_X;
3117var SCALE_Y = 'scaleY';
3118exports.SCALE_Y = SCALE_Y;
3119var SCALE_Z = 'scaleZ';
3120exports.SCALE_Z = SCALE_Z;
3121var SCALE_3D = 'scale3d';
3122exports.SCALE_3D = SCALE_3D;
3123var ROTATE_X = 'rotateX';
3124exports.ROTATE_X = ROTATE_X;
3125var ROTATE_Y = 'rotateY';
3126exports.ROTATE_Y = ROTATE_Y;
3127var ROTATE_Z = 'rotateZ';
3128exports.ROTATE_Z = ROTATE_Z;
3129var SKEW = 'skew';
3130exports.SKEW = SKEW;
3131var SKEW_X = 'skewX';
3132exports.SKEW_X = SKEW_X;
3133var SKEW_Y = 'skewY';
3134exports.SKEW_Y = SKEW_Y;
3135var OPACITY = 'opacity';
3136exports.OPACITY = OPACITY;
3137var FILTER = 'filter';
3138exports.FILTER = FILTER;
3139var WIDTH = 'width';
3140exports.WIDTH = WIDTH;
3141var HEIGHT = 'height';
3142exports.HEIGHT = HEIGHT;
3143var BACKGROUND_COLOR = 'backgroundColor';
3144exports.BACKGROUND_COLOR = BACKGROUND_COLOR;
3145var BACKGROUND = 'background';
3146exports.BACKGROUND = BACKGROUND;
3147var BORDER_COLOR = 'borderColor';
3148exports.BORDER_COLOR = BORDER_COLOR;
3149var COLOR = 'color';
3150exports.COLOR = COLOR;
3151var DISPLAY = 'display';
3152exports.DISPLAY = DISPLAY;
3153var FLEX = 'flex';
3154exports.FLEX = FLEX;
3155var WILL_CHANGE = 'willChange';
3156exports.WILL_CHANGE = WILL_CHANGE;
3157var AUTO = 'AUTO';
3158exports.AUTO = AUTO;
3159var COMMA_DELIMITER = ',';
3160exports.COMMA_DELIMITER = COMMA_DELIMITER;
3161var COLON_DELIMITER = ':';
3162exports.COLON_DELIMITER = COLON_DELIMITER;
3163var BAR_DELIMITER = '|';
3164exports.BAR_DELIMITER = BAR_DELIMITER;
3165var CHILDREN = 'CHILDREN';
3166exports.CHILDREN = CHILDREN;
3167var IMMEDIATE_CHILDREN = 'IMMEDIATE_CHILDREN';
3168exports.IMMEDIATE_CHILDREN = IMMEDIATE_CHILDREN;
3169var SIBLINGS = 'SIBLINGS';
3170exports.SIBLINGS = SIBLINGS;
3171var PARENT = 'PARENT';
3172exports.PARENT = PARENT;
3173var PRESERVE_3D = 'preserve-3d';
3174exports.PRESERVE_3D = PRESERVE_3D;
3175var HTML_ELEMENT = 'HTML_ELEMENT';
3176exports.HTML_ELEMENT = HTML_ELEMENT;
3177var PLAIN_OBJECT = 'PLAIN_OBJECT';
3178exports.PLAIN_OBJECT = PLAIN_OBJECT;
3179var ABSTRACT_NODE = 'ABSTRACT_NODE';
3180exports.ABSTRACT_NODE = ABSTRACT_NODE;
3181var RENDER_TRANSFORM = 'RENDER_TRANSFORM';
3182exports.RENDER_TRANSFORM = RENDER_TRANSFORM;
3183var RENDER_GENERAL = 'RENDER_GENERAL';
3184exports.RENDER_GENERAL = RENDER_GENERAL;
3185var RENDER_STYLE = 'RENDER_STYLE';
3186exports.RENDER_STYLE = RENDER_STYLE;
3187var RENDER_PLUGIN = 'RENDER_PLUGIN';
3188exports.RENDER_PLUGIN = RENDER_PLUGIN;
3189
3190/***/ }),
3191/* 51 */
3192/***/ (function(module, exports, __webpack_require__) {
3193
3194"use strict";
3195
3196
3197var _interopRequireDefault = __webpack_require__(0);
3198
3199Object.defineProperty(exports, "__esModule", {
3200  value: true
3201});
3202exports.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;
3203
3204var _objectSpread2 = _interopRequireDefault(__webpack_require__(26));
3205
3206var _shared = __webpack_require__(3);
3207
3208var _shared$IX2EngineActi = _shared.IX2EngineActionTypes,
3209    IX2_RAW_DATA_IMPORTED = _shared$IX2EngineActi.IX2_RAW_DATA_IMPORTED,
3210    IX2_SESSION_INITIALIZED = _shared$IX2EngineActi.IX2_SESSION_INITIALIZED,
3211    IX2_SESSION_STARTED = _shared$IX2EngineActi.IX2_SESSION_STARTED,
3212    IX2_SESSION_STOPPED = _shared$IX2EngineActi.IX2_SESSION_STOPPED,
3213    IX2_PREVIEW_REQUESTED = _shared$IX2EngineActi.IX2_PREVIEW_REQUESTED,
3214    IX2_PLAYBACK_REQUESTED = _shared$IX2EngineActi.IX2_PLAYBACK_REQUESTED,
3215    IX2_STOP_REQUESTED = _shared$IX2EngineActi.IX2_STOP_REQUESTED,
3216    IX2_CLEAR_REQUESTED = _shared$IX2EngineActi.IX2_CLEAR_REQUESTED,
3217    IX2_EVENT_LISTENER_ADDED = _shared$IX2EngineActi.IX2_EVENT_LISTENER_ADDED,
3218    IX2_TEST_FRAME_RENDERED = _shared$IX2EngineActi.IX2_TEST_FRAME_RENDERED,
3219    IX2_EVENT_STATE_CHANGED = _shared$IX2EngineActi.IX2_EVENT_STATE_CHANGED,
3220    IX2_ANIMATION_FRAME_CHANGED = _shared$IX2EngineActi.IX2_ANIMATION_FRAME_CHANGED,
3221    IX2_PARAMETER_CHANGED = _shared$IX2EngineActi.IX2_PARAMETER_CHANGED,
3222    IX2_INSTANCE_ADDED = _shared$IX2EngineActi.IX2_INSTANCE_ADDED,
3223    IX2_INSTANCE_STARTED = _shared$IX2EngineActi.IX2_INSTANCE_STARTED,
3224    IX2_INSTANCE_REMOVED = _shared$IX2EngineActi.IX2_INSTANCE_REMOVED,
3225    IX2_ELEMENT_STATE_CHANGED = _shared$IX2EngineActi.IX2_ELEMENT_STATE_CHANGED,
3226    IX2_ACTION_LIST_PLAYBACK_CHANGED = _shared$IX2EngineActi.IX2_ACTION_LIST_PLAYBACK_CHANGED,
3227    IX2_VIEWPORT_WIDTH_CHANGED = _shared$IX2EngineActi.IX2_VIEWPORT_WIDTH_CHANGED,
3228    IX2_MEDIA_QUERIES_DEFINED = _shared$IX2EngineActi.IX2_MEDIA_QUERIES_DEFINED;
3229var GENERAL_START_ACTION = _shared.IX2EngineItemTypes.GENERAL_START_ACTION;
3230var reifyState = _shared.IX2VanillaUtils.reifyState;
3231
3232var rawDataImported = function rawDataImported(rawData) {
3233  return {
3234    type: IX2_RAW_DATA_IMPORTED,
3235    payload: (0, _objectSpread2["default"])({}, reifyState(rawData))
3236  };
3237};
3238
3239exports.rawDataImported = rawDataImported;
3240
3241var sessionInitialized = function sessionInitialized(_ref) {
3242  var hasBoundaryNodes = _ref.hasBoundaryNodes;
3243  return {
3244    type: IX2_SESSION_INITIALIZED,
3245    payload: {
3246      hasBoundaryNodes: hasBoundaryNodes
3247    }
3248  };
3249};
3250
3251exports.sessionInitialized = sessionInitialized;
3252
3253var sessionStarted = function sessionStarted() {
3254  return {
3255    type: IX2_SESSION_STARTED,
3256    payload: {}
3257  };
3258};
3259
3260exports.sessionStarted = sessionStarted;
3261
3262var sessionStopped = function sessionStopped() {
3263  return {
3264    type: IX2_SESSION_STOPPED,
3265    payload: {}
3266  };
3267};
3268
3269exports.sessionStopped = sessionStopped;
3270
3271var previewRequested = function previewRequested(_ref2) {
3272  var rawData = _ref2.rawData;
3273  return {
3274    type: IX2_PREVIEW_REQUESTED,
3275    payload: {
3276      rawData: rawData
3277    }
3278  };
3279};
3280
3281exports.previewRequested = previewRequested;
3282
3283var playbackRequested = function playbackRequested(_ref3) {
3284  var _ref3$actionTypeId = _ref3.actionTypeId,
3285      actionTypeId = _ref3$actionTypeId === void 0 ? GENERAL_START_ACTION : _ref3$actionTypeId,
3286      actionListId = _ref3.actionListId,
3287      actionItemId = _ref3.actionItemId,
3288      eventId = _ref3.eventId,
3289      allowEvents = _ref3.allowEvents,
3290      immediate = _ref3.immediate,
3291      testManual = _ref3.testManual,
3292      verbose = _ref3.verbose,
3293      rawData = _ref3.rawData;
3294  return {
3295    type: IX2_PLAYBACK_REQUESTED,
3296    payload: {
3297      actionTypeId: actionTypeId,
3298      actionListId: actionListId,
3299      actionItemId: actionItemId,
3300      testManual: testManual,
3301      eventId: eventId,
3302      allowEvents: allowEvents,
3303      immediate: immediate,
3304      verbose: verbose,
3305      rawData: rawData
3306    }
3307  };
3308};
3309
3310exports.playbackRequested = playbackRequested;
3311
3312var stopRequested = function stopRequested(actionListId) {
3313  return {
3314    type: IX2_STOP_REQUESTED,
3315    payload: {
3316      actionListId: actionListId
3317    }
3318  };
3319};
3320
3321exports.stopRequested = stopRequested;
3322
3323var clearRequested = function clearRequested() {
3324  return {
3325    type: IX2_CLEAR_REQUESTED,
3326    payload: {}
3327  };
3328};
3329
3330exports.clearRequested = clearRequested;
3331
3332var eventListenerAdded = function eventListenerAdded(target, listenerParams) {
3333  return {
3334    type: IX2_EVENT_LISTENER_ADDED,
3335    payload: {
3336      target: target,
3337      listenerParams: listenerParams
3338    }
3339  };
3340};
3341
3342exports.eventListenerAdded = eventListenerAdded;
3343
3344var testFrameRendered = function testFrameRendered() {
3345  var step = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
3346  return {
3347    type: IX2_TEST_FRAME_RENDERED,
3348    payload: {
3349      step: step
3350    }
3351  };
3352};
3353
3354exports.testFrameRendered = testFrameRendered;
3355
3356var eventStateChanged = function eventStateChanged(stateKey, newState) {
3357  return {
3358    type: IX2_EVENT_STATE_CHANGED,
3359    payload: {
3360      stateKey: stateKey,
3361      newState: newState
3362    }
3363  };
3364};
3365
3366exports.eventStateChanged = eventStateChanged;
3367
3368var animationFrameChanged = function animationFrameChanged(now, parameters) {
3369  return {
3370    type: IX2_ANIMATION_FRAME_CHANGED,
3371    payload: {
3372      now: now,
3373      parameters: parameters
3374    }
3375  };
3376};
3377
3378exports.animationFrameChanged = animationFrameChanged;
3379
3380var parameterChanged = function parameterChanged(key, value) {
3381  return {
3382    type: IX2_PARAMETER_CHANGED,
3383    payload: {
3384      key: key,
3385      value: value
3386    }
3387  };
3388};
3389
3390exports.parameterChanged = parameterChanged;
3391
3392var instanceAdded = function instanceAdded(options) {
3393  return {
3394    type: IX2_INSTANCE_ADDED,
3395    payload: (0, _objectSpread2["default"])({}, options)
3396  };
3397};
3398
3399exports.instanceAdded = instanceAdded;
3400
3401var instanceStarted = function instanceStarted(instanceId, time) {
3402  return {
3403    type: IX2_INSTANCE_STARTED,
3404    payload: {
3405      instanceId: instanceId,
3406      time: time
3407    }
3408  };
3409};
3410
3411exports.instanceStarted = instanceStarted;
3412
3413var instanceRemoved = function instanceRemoved(instanceId) {
3414  return {
3415    type: IX2_INSTANCE_REMOVED,
3416    payload: {
3417      instanceId: instanceId
3418    }
3419  };
3420};
3421
3422exports.instanceRemoved = instanceRemoved;
3423
3424var elementStateChanged = function elementStateChanged(elementId, actionTypeId, current, actionItem) {
3425  return {
3426    type: IX2_ELEMENT_STATE_CHANGED,
3427    payload: {
3428      elementId: elementId,
3429      actionTypeId: actionTypeId,
3430      current: current,
3431      actionItem: actionItem
3432    }
3433  };
3434};
3435
3436exports.elementStateChanged = elementStateChanged;
3437
3438var actionListPlaybackChanged = function actionListPlaybackChanged(_ref4) {
3439  var actionListId = _ref4.actionListId,
3440      isPlaying = _ref4.isPlaying;
3441  return {
3442    type: IX2_ACTION_LIST_PLAYBACK_CHANGED,
3443    payload: {
3444      actionListId: actionListId,
3445      isPlaying: isPlaying
3446    }
3447  };
3448};
3449
3450exports.actionListPlaybackChanged = actionListPlaybackChanged;
3451
3452var viewportWidthChanged = function viewportWidthChanged(_ref5) {
3453  var width = _ref5.width,
3454      mediaQueries = _ref5.mediaQueries;
3455  return {
3456    type: IX2_VIEWPORT_WIDTH_CHANGED,
3457    payload: {
3458      width: width,
3459      mediaQueries: mediaQueries
3460    }
3461  };
3462};
3463
3464exports.viewportWidthChanged = viewportWidthChanged;
3465
3466var mediaQueriesDefined = function mediaQueriesDefined() {
3467  return {
3468    type: IX2_MEDIA_QUERIES_DEFINED,
3469    payload: {}
3470  };
3471};
3472
3473exports.mediaQueriesDefined = mediaQueriesDefined;
3474
3475/***/ }),
3476/* 52 */
3477/***/ (function(module, exports, __webpack_require__) {
3478
3479var baseCreate = __webpack_require__(97),
3480    baseLodash = __webpack_require__(53);
3481
3482/**
3483 * The base constructor for creating `lodash` wrapper objects.
3484 *
3485 * @private
3486 * @param {*} value The value to wrap.
3487 * @param {boolean} [chainAll] Enable explicit method chain sequences.
3488 */
3489function LodashWrapper(value, chainAll) {
3490  this.__wrapped__ = value;
3491  this.__actions__ = [];
3492  this.__chain__ = !!chainAll;
3493  this.__index__ = 0;
3494  this.__values__ = undefined;
3495}
3496
3497LodashWrapper.prototype = baseCreate(baseLodash.prototype);
3498LodashWrapper.prototype.constructor = LodashWrapper;
3499
3500module.exports = LodashWrapper;
3501
3502
3503/***/ }),
3504/* 53 */
3505/***/ (function(module, exports) {
3506
3507/**
3508 * The function whose prototype chain sequence wrappers inherit from.
3509 *
3510 * @private
3511 */
3512function baseLodash() {
3513  // No operation performed.
3514}
3515
3516module.exports = baseLodash;
3517
3518
3519/***/ }),
3520/* 54 */
3521/***/ (function(module, exports, __webpack_require__) {
3522
3523var baseCreate = __webpack_require__(97),
3524    baseLodash = __webpack_require__(53);
3525
3526/** Used as references for the maximum length and index of an array. */
3527var MAX_ARRAY_LENGTH = 4294967295;
3528
3529/**
3530 * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.
3531 *
3532 * @private
3533 * @constructor
3534 * @param {*} value The value to wrap.
3535 */
3536function LazyWrapper(value) {
3537  this.__wrapped__ = value;
3538  this.__actions__ = [];
3539  this.__dir__ = 1;
3540  this.__filtered__ = false;
3541  this.__iteratees__ = [];
3542  this.__takeCount__ = MAX_ARRAY_LENGTH;
3543  this.__views__ = [];
3544}
3545
3546// Ensure `LazyWrapper` is an instance of `baseLodash`.
3547LazyWrapper.prototype = baseCreate(baseLodash.prototype);
3548LazyWrapper.prototype.constructor = LazyWrapper;
3549
3550module.exports = LazyWrapper;
3551
3552
3553/***/ }),
3554/* 55 */
3555/***/ (function(module, exports, __webpack_require__) {
3556
3557"use strict";
3558 // @wf-will-never-add-flow-to-this-file
3559
3560/* eslint-disable */
3561
3562/*!
3563 * tram.js v0.8.2-global
3564 * Cross-browser CSS3 transitions in JavaScript
3565 * https://github.com/bkwld/tram
3566 * MIT License
3567 */
3568
3569/* prettier-ignore */
3570
3571var _interopRequireDefault = __webpack_require__(0);
3572
3573var _typeof2 = _interopRequireDefault(__webpack_require__(15));
3574
3575window.tram = function (a) {
3576  function b(a, b) {
3577    var c = new M.Bare();
3578    return c.init(a, b);
3579  }
3580
3581  function c(a) {
3582    return a.replace(/[A-Z]/g, function (a) {
3583      return "-" + a.toLowerCase();
3584    });
3585  }
3586
3587  function d(a) {
3588    var b = parseInt(a.slice(1), 16),
3589        c = b >> 16 & 255,
3590        d = b >> 8 & 255,
3591        e = 255 & b;
3592    return [c, d, e];
3593  }
3594
3595  function e(a, b, c) {
3596    return "#" + (1 << 24 | a << 16 | b << 8 | c).toString(16).slice(1);
3597  }
3598
3599  function f() {}
3600
3601  function g(a, b) {
3602    j("Type warning: Expected: [" + a + "] Got: [" + (0, _typeof2["default"])(b) + "] " + b);
3603  }
3604
3605  function h(a, b, c) {
3606    j("Units do not match [" + a + "]: " + b + ", " + c);
3607  }
3608
3609  function i(a, b, c) {
3610    if (void 0 !== b && (c = b), void 0 === a) return c;
3611    var d = c;
3612    return $.test(a) || !_.test(a) ? d = parseInt(a, 10) : _.test(a) && (d = 1e3 * parseFloat(a)), 0 > d && (d = 0), d === d ? d : c;
3613  }
3614
3615  function j(a) {
3616    U.debug && window && window.console.warn(a);
3617  }
3618
3619  function k(a) {
3620    for (var b = -1, c = a ? a.length : 0, d = []; ++b < c;) {
3621      var e = a[b];
3622      e && d.push(e);
3623    }
3624
3625    return d;
3626  }
3627
3628  var l = function (a, b, c) {
3629    function d(a) {
3630      return "object" == (0, _typeof2["default"])(a);
3631    }
3632
3633    function e(a) {
3634      return "function" == typeof a;
3635    }
3636
3637    function f() {}
3638
3639    function g(h, i) {
3640      function j() {
3641        var a = new k();
3642        return e(a.init) && a.init.apply(a, arguments), a;
3643      }
3644
3645      function k() {}
3646
3647      i === c && (i = h, h = Object), j.Bare = k;
3648      var l,
3649          m = f[a] = h[a],
3650          n = k[a] = j[a] = new f();
3651      return n.constructor = j, j.mixin = function (b) {
3652        return k[a] = j[a] = g(j, b)[a], j;
3653      }, j.open = function (a) {
3654        if (l = {}, e(a) ? l = a.call(j, n, m, j, h) : d(a) && (l = a), d(l)) for (var c in l) {
3655          b.call(l, c) && (n[c] = l[c]);
3656        }
3657        return e(n.init) || (n.init = h), j;
3658      }, j.open(i);
3659    }
3660
3661    return g;
3662  }("prototype", {}.hasOwnProperty),
3663      m = {
3664    ease: ["ease", function (a, b, c, d) {
3665      var e = (a /= d) * a,
3666          f = e * a;
3667      return b + c * (-2.75 * f * e + 11 * e * e + -15.5 * f + 8 * e + .25 * a);
3668    }],
3669    "ease-in": ["ease-in", function (a, b, c, d) {
3670      var e = (a /= d) * a,
3671          f = e * a;
3672      return b + c * (-1 * f * e + 3 * e * e + -3 * f + 2 * e);
3673    }],
3674    "ease-out": ["ease-out", function (a, b, c, d) {
3675      var e = (a /= d) * a,
3676          f = e * a;
3677      return b + c * (.3 * f * e + -1.6 * e * e + 2.2 * f + -1.8 * e + 1.9 * a);
3678    }],
3679    "ease-in-out": ["ease-in-out", function (a, b, c, d) {
3680      var e = (a /= d) * a,
3681          f = e * a;
3682      return b + c * (2 * f * e + -5 * e * e + 2 * f + 2 * e);
3683    }],
3684    linear: ["linear", function (a, b, c, d) {
3685      return c * a / d + b;
3686    }],
3687    "ease-in-quad": ["cubic-bezier(0.550, 0.085, 0.680, 0.530)", function (a, b, c, d) {
3688      return c * (a /= d) * a + b;
3689    }],
3690    "ease-out-quad": ["cubic-bezier(0.250, 0.460, 0.450, 0.940)", function (a, b, c, d) {
3691      return -c * (a /= d) * (a - 2) + b;
3692    }],
3693    "ease-in-out-quad": ["cubic-bezier(0.455, 0.030, 0.515, 0.955)", function (a, b, c, d) {
3694      return (a /= d / 2) < 1 ? c / 2 * a * a + b : -c / 2 * (--a * (a - 2) - 1) + b;
3695    }],
3696    "ease-in-cubic": ["cubic-bezier(0.550, 0.055, 0.675, 0.190)", function (a, b, c, d) {
3697      return c * (a /= d) * a * a + b;
3698    }],
3699    "ease-out-cubic": ["cubic-bezier(0.215, 0.610, 0.355, 1)", function (a, b, c, d) {
3700      return c * ((a = a / d - 1) * a * a + 1) + b;
3701    }],
3702    "ease-in-out-cubic": ["cubic-bezier(0.645, 0.045, 0.355, 1)", function (a, b, c, d) {
3703      return (a /= d / 2) < 1 ? c / 2 * a * a * a + b : c / 2 * ((a -= 2) * a * a + 2) + b;
3704    }],
3705    "ease-in-quart": ["cubic-bezier(0.895, 0.030, 0.685, 0.220)", function (a, b, c, d) {
3706      return c * (a /= d) * a * a * a + b;
3707    }],
3708    "ease-out-quart": ["cubic-bezier(0.165, 0.840, 0.440, 1)", function (a, b, c, d) {
3709      return -c * ((a = a / d - 1) * a * a * a - 1) + b;
3710    }],
3711    "ease-in-out-quart": ["cubic-bezier(0.770, 0, 0.175, 1)", function (a, b, c, d) {
3712      return (a /= d / 2) < 1 ? c / 2 * a * a * a * a + b : -c / 2 * ((a -= 2) * a * a * a - 2) + b;
3713    }],
3714    "ease-in-quint": ["cubic-bezier(0.755, 0.050, 0.855, 0.060)", function (a, b, c, d) {
3715      return c * (a /= d) * a * a * a * a + b;
3716    }],
3717    "ease-out-quint": ["cubic-bezier(0.230, 1, 0.320, 1)", function (a, b, c, d) {
3718      return c * ((a = a / d - 1) * a * a * a * a + 1) + b;
3719    }],
3720    "ease-in-out-quint": ["cubic-bezier(0.860, 0, 0.070, 1)", function (a, b, c, d) {
3721      return (a /= d / 2) < 1 ? c / 2 * a * a * a * a * a + b : c / 2 * ((a -= 2) * a * a * a * a + 2) + b;
3722    }],
3723    "ease-in-sine": ["cubic-bezier(0.470, 0, 0.745, 0.715)", function (a, b, c, d) {
3724      return -c * Math.cos(a / d * (Math.PI / 2)) + c + b;
3725    }],
3726    "ease-out-sine": ["cubic-bezier(0.390, 0.575, 0.565, 1)", function (a, b, c, d) {
3727      return c * Math.sin(a / d * (Math.PI / 2)) + b;
3728    }],
3729    "ease-in-out-sine": ["cubic-bezier(0.445, 0.050, 0.550, 0.950)", function (a, b, c, d) {
3730      return -c / 2 * (Math.cos(Math.PI * a / d) - 1) + b;
3731    }],
3732    "ease-in-expo": ["cubic-bezier(0.950, 0.050, 0.795, 0.035)", function (a, b, c, d) {
3733      return 0 === a ? b : c * Math.pow(2, 10 * (a / d - 1)) + b;
3734    }],
3735    "ease-out-expo": ["cubic-bezier(0.190, 1, 0.220, 1)", function (a, b, c, d) {
3736      return a === d ? b + c : c * (-Math.pow(2, -10 * a / d) + 1) + b;
3737    }],
3738    "ease-in-out-expo": ["cubic-bezier(1, 0, 0, 1)", function (a, b, c, d) {
3739      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;
3740    }],
3741    "ease-in-circ": ["cubic-bezier(0.600, 0.040, 0.980, 0.335)", function (a, b, c, d) {
3742      return -c * (Math.sqrt(1 - (a /= d) * a) - 1) + b;
3743    }],
3744    "ease-out-circ": ["cubic-bezier(0.075, 0.820, 0.165, 1)", function (a, b, c, d) {
3745      return c * Math.sqrt(1 - (a = a / d - 1) * a) + b;
3746    }],
3747    "ease-in-out-circ": ["cubic-bezier(0.785, 0.135, 0.150, 0.860)", function (a, b, c, d) {
3748      return (a /= d / 2) < 1 ? -c / 2 * (Math.sqrt(1 - a * a) - 1) + b : c / 2 * (Math.sqrt(1 - (a -= 2) * a) + 1) + b;
3749    }],
3750    "ease-in-back": ["cubic-bezier(0.600, -0.280, 0.735, 0.045)", function (a, b, c, d, e) {
3751      return void 0 === e && (e = 1.70158), c * (a /= d) * a * ((e + 1) * a - e) + b;
3752    }],
3753    "ease-out-back": ["cubic-bezier(0.175, 0.885, 0.320, 1.275)", function (a, b, c, d, e) {
3754      return void 0 === e && (e = 1.70158), c * ((a = a / d - 1) * a * ((e + 1) * a + e) + 1) + b;
3755    }],
3756    "ease-in-out-back": ["cubic-bezier(0.680, -0.550, 0.265, 1.550)", function (a, b, c, d, e) {
3757      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;
3758    }]
3759  },
3760      n = {
3761    "ease-in-back": "cubic-bezier(0.600, 0, 0.735, 0.045)",
3762    "ease-out-back": "cubic-bezier(0.175, 0.885, 0.320, 1)",
3763    "ease-in-out-back": "cubic-bezier(0.680, 0, 0.265, 1)"
3764  },
3765      o = document,
3766      p = window,
3767      q = "bkwld-tram",
3768      r = /[\-\.0-9]/g,
3769      s = /[A-Z]/,
3770      t = "number",
3771      u = /^(rgb|#)/,
3772      v = /(em|cm|mm|in|pt|pc|px)$/,
3773      w = /(em|cm|mm|in|pt|pc|px|%)$/,
3774      x = /(deg|rad|turn)$/,
3775      y = "unitless",
3776      z = /(all|none) 0s ease 0s/,
3777      A = /^(width|height)$/,
3778      B = " ",
3779      C = o.createElement("a"),
3780      D = ["Webkit", "Moz", "O", "ms"],
3781      E = ["-webkit-", "-moz-", "-o-", "-ms-"],
3782      F = function F(a) {
3783    if (a in C.style) return {
3784      dom: a,
3785      css: a
3786    };
3787    var b,
3788        c,
3789        d = "",
3790        e = a.split("-");
3791
3792    for (b = 0; b < e.length; b++) {
3793      d += e[b].charAt(0).toUpperCase() + e[b].slice(1);
3794    }
3795
3796    for (b = 0; b < D.length; b++) {
3797      if (c = D[b] + d, c in C.style) return {
3798        dom: c,
3799        css: E[b] + a
3800      };
3801    }
3802  },
3803      G = b.support = {
3804    bind: Function.prototype.bind,
3805    transform: F("transform"),
3806    transition: F("transition"),
3807    backface: F("backface-visibility"),
3808    timing: F("transition-timing-function")
3809  };
3810
3811  if (G.transition) {
3812    var H = G.timing.dom;
3813    if (C.style[H] = m["ease-in-back"][0], !C.style[H]) for (var I in n) {
3814      m[I][0] = n[I];
3815    }
3816  }
3817
3818  var J = b.frame = function () {
3819    var a = p.requestAnimationFrame || p.webkitRequestAnimationFrame || p.mozRequestAnimationFrame || p.oRequestAnimationFrame || p.msRequestAnimationFrame;
3820    return a && G.bind ? a.bind(p) : function (a) {
3821      p.setTimeout(a, 16);
3822    };
3823  }(),
3824      K = b.now = function () {
3825    var a = p.performance,
3826        b = a && (a.now || a.webkitNow || a.msNow || a.mozNow);
3827    return b && G.bind ? b.bind(a) : Date.now || function () {
3828      return +new Date();
3829    };
3830  }(),
3831      L = l(function (b) {
3832    function d(a, b) {
3833      var c = k(("" + a).split(B)),
3834          d = c[0];
3835      b = b || {};
3836      var e = Y[d];
3837      if (!e) return j("Unsupported property: " + d);
3838
3839      if (!b.weak || !this.props[d]) {
3840        var f = e[0],
3841            g = this.props[d];
3842        return g || (g = this.props[d] = new f.Bare()), g.init(this.$el, c, e, b), g;
3843      }
3844    }
3845
3846    function e(a, b, c) {
3847      if (a) {
3848        var e = (0, _typeof2["default"])(a);
3849        if (b || (this.timer && this.timer.destroy(), this.queue = [], this.active = !1), "number" == e && b) return this.timer = new S({
3850          duration: a,
3851          context: this,
3852          complete: h
3853        }), void (this.active = !0);
3854
3855        if ("string" == e && b) {
3856          switch (a) {
3857            case "hide":
3858              o.call(this);
3859              break;
3860
3861            case "stop":
3862              l.call(this);
3863              break;
3864
3865            case "redraw":
3866              p.call(this);
3867              break;
3868
3869            default:
3870              d.call(this, a, c && c[1]);
3871          }
3872
3873          return h.call(this);
3874        }
3875
3876        if ("function" == e) return void a.call(this, this);
3877
3878        if ("object" == e) {
3879          var f = 0;
3880          u.call(this, a, function (a, b) {
3881            a.span > f && (f = a.span), a.stop(), a.animate(b);
3882          }, function (a) {
3883            "wait" in a && (f = i(a.wait, 0));
3884          }), t.call(this), f > 0 && (this.timer = new S({
3885            duration: f,
3886            context: this
3887          }), this.active = !0, b && (this.timer.complete = h));
3888          var g = this,
3889              j = !1,
3890              k = {};
3891          J(function () {
3892            u.call(g, a, function (a) {
3893              a.active && (j = !0, k[a.name] = a.nextStyle);
3894            }), j && g.$el.css(k);
3895          });
3896        }
3897      }
3898    }
3899
3900    function f(a) {
3901      a = i(a, 0), this.active ? this.queue.push({
3902        options: a
3903      }) : (this.timer = new S({
3904        duration: a,
3905        context: this,
3906        complete: h
3907      }), this.active = !0);
3908    }
3909
3910    function g(a) {
3911      return this.active ? (this.queue.push({
3912        options: a,
3913        args: arguments
3914      }), void (this.timer.complete = h)) : j("No active transition timer. Use start() or wait() before then().");
3915    }
3916
3917    function h() {
3918      if (this.timer && this.timer.destroy(), this.active = !1, this.queue.length) {
3919        var a = this.queue.shift();
3920        e.call(this, a.options, !0, a.args);
3921      }
3922    }
3923
3924    function l(a) {
3925      this.timer && this.timer.destroy(), this.queue = [], this.active = !1;
3926      var b;
3927      "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);
3928    }
3929
3930    function m(a) {
3931      l.call(this, a), u.call(this, a, w, x);
3932    }
3933
3934    function n(a) {
3935      "string" != typeof a && (a = "block"), this.el.style.display = a;
3936    }
3937
3938    function o() {
3939      l.call(this), this.el.style.display = "none";
3940    }
3941
3942    function p() {
3943      this.el.offsetHeight;
3944    }
3945
3946    function r() {
3947      l.call(this), a.removeData(this.el, q), this.$el = this.el = null;
3948    }
3949
3950    function t() {
3951      var a,
3952          b,
3953          c = [];
3954      this.upstream && c.push(this.upstream);
3955
3956      for (a in this.props) {
3957        b = this.props[a], b.active && c.push(b.string);
3958      }
3959
3960      c = c.join(","), this.style !== c && (this.style = c, this.el.style[G.transition.dom] = c);
3961    }
3962
3963    function u(a, b, e) {
3964      var f,
3965          g,
3966          h,
3967          i,
3968          j = b !== v,
3969          k = {};
3970
3971      for (f in a) {
3972        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));
3973      }
3974
3975      for (f in k) {
3976        if (h = k[f], g = this.props[f], !g) {
3977          if (!j) continue;
3978          g = d.call(this, f);
3979        }
3980
3981        b.call(this, g, h);
3982      }
3983
3984      e && i && e.call(this, i);
3985    }
3986
3987    function v(a) {
3988      a.stop();
3989    }
3990
3991    function w(a, b) {
3992      a.set(b);
3993    }
3994
3995    function x(a) {
3996      this.$el.css(a);
3997    }
3998
3999    function y(a, c) {
4000      b[a] = function () {
4001        return this.children ? A.call(this, c, arguments) : (this.el && c.apply(this, arguments), this);
4002      };
4003    }
4004
4005    function A(a, b) {
4006      var c,
4007          d = this.children.length;
4008
4009      for (c = 0; d > c; c++) {
4010        a.apply(this.children[c], b);
4011      }
4012
4013      return this;
4014    }
4015
4016    b.init = function (b) {
4017      if (this.$el = a(b), this.el = this.$el[0], this.props = {}, this.queue = [], this.style = "", this.active = !1, U.keepInherited && !U.fallback) {
4018        var c = W(this.el, "transition");
4019        c && !z.test(c) && (this.upstream = c);
4020      }
4021
4022      G.backface && U.hideBackface && V(this.el, G.backface.css, "hidden");
4023    }, 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);
4024  }),
4025      M = l(L, function (b) {
4026    function c(b, c) {
4027      var d = a.data(b, q) || a.data(b, q, new L.Bare());
4028      return d.el || d.init(b), c ? d.start(c) : d;
4029    }
4030
4031    b.init = function (b, d) {
4032      var e = a(b);
4033      if (!e.length) return this;
4034      if (1 === e.length) return c(e[0], d);
4035      var f = [];
4036      return e.each(function (a, b) {
4037        f.push(c(b, d));
4038      }), this.children = f, this;
4039    };
4040  }),
4041      N = l(function (a) {
4042    function b() {
4043      var a = this.get();
4044      this.update("auto");
4045      var b = this.get();
4046      return this.update(a), b;
4047    }
4048
4049    function c(a, b, c) {
4050      return void 0 !== b && (c = b), a in m ? a : c;
4051    }
4052
4053    function d(a) {
4054      var b = /rgba?\((\d+),\s*(\d+),\s*(\d+)/.exec(a);
4055      return (b ? e(b[1], b[2], b[3]) : a).replace(/#(\w)(\w)(\w)$/, "#$1$1$2$2$3$3");
4056    }
4057
4058    var f = {
4059      duration: 500,
4060      ease: "ease",
4061      delay: 0
4062    };
4063    a.init = function (a, b, d, e) {
4064      this.$el = a, this.el = a[0];
4065      var g = b[0];
4066      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" : ""));
4067    }, a.set = function (a) {
4068      a = this.convert(a, this.type), this.update(a), this.redraw();
4069    }, a.transition = function (a) {
4070      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;
4071    }, a.fallback = function (a) {
4072      var c = this.el.style[this.name] || this.convert(this.get(), this.type);
4073      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({
4074        from: c,
4075        to: a,
4076        duration: this.duration,
4077        delay: this.delay,
4078        ease: this.ease,
4079        update: this.update,
4080        context: this
4081      });
4082    }, a.get = function () {
4083      return W(this.el, this.name);
4084    }, a.update = function (a) {
4085      V(this.el, this.name, a);
4086    }, a.stop = function () {
4087      (this.active || this.nextStyle) && (this.active = !1, this.nextStyle = null, V(this.el, this.name, this.get()));
4088      var a = this.tween;
4089      a && a.context && a.destroy();
4090    }, a.convert = function (a, b) {
4091      if ("auto" == a && this.auto) return a;
4092      var c,
4093          e = "number" == typeof a,
4094          f = "string" == typeof a;
4095
4096      switch (b) {
4097        case t:
4098          if (e) return a;
4099          if (f && "" === a.replace(r, "")) return +a;
4100          c = "number(unitless)";
4101          break;
4102
4103        case u:
4104          if (f) {
4105            if ("" === a && this.original) return this.original;
4106            if (b.test(a)) return "#" == a.charAt(0) && 7 == a.length ? a : d(a);
4107          }
4108
4109          c = "hex or rgb string";
4110          break;
4111
4112        case v:
4113          if (e) return a + this.unit;
4114          if (f && b.test(a)) return a;
4115          c = "number(px) or string(unit)";
4116          break;
4117
4118        case w:
4119          if (e) return a + this.unit;
4120          if (f && b.test(a)) return a;
4121          c = "number(px) or string(unit or %)";
4122          break;
4123
4124        case x:
4125          if (e) return a + this.angle;
4126          if (f && b.test(a)) return a;
4127          c = "number(deg) or string(angle)";
4128          break;
4129
4130        case y:
4131          if (e) return a;
4132          if (f && w.test(a)) return a;
4133          c = "number(unitless) or string(unit or %)";
4134      }
4135
4136      return g(c, a), a;
4137    }, a.redraw = function () {
4138      this.el.offsetHeight;
4139    };
4140  }),
4141      O = l(N, function (a, b) {
4142    a.init = function () {
4143      b.init.apply(this, arguments), this.original || (this.original = this.convert(this.get(), u));
4144    };
4145  }),
4146      P = l(N, function (a, b) {
4147    a.init = function () {
4148      b.init.apply(this, arguments), this.animate = this.fallback;
4149    }, a.get = function () {
4150      return this.$el[this.name]();
4151    }, a.update = function (a) {
4152      this.$el[this.name](a);
4153    };
4154  }),
4155      Q = l(N, function (a, b) {
4156    function c(a, b) {
4157      var c, d, e, f, g;
4158
4159      for (c in a) {
4160        f = Z[c], e = f[0], d = f[1] || c, g = this.convert(a[c], e), b.call(this, d, g, e);
4161      }
4162    }
4163
4164    a.init = function () {
4165      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()));
4166    }, a.set = function (a) {
4167      c.call(this, a, function (a, b) {
4168        this.current[a] = b;
4169      }), V(this.el, this.name, this.style(this.current)), this.redraw();
4170    }, a.transition = function (a) {
4171      var b = this.values(a);
4172      this.tween = new T({
4173        current: this.current,
4174        values: b,
4175        duration: this.duration,
4176        delay: this.delay,
4177        ease: this.ease
4178      });
4179      var c,
4180          d = {};
4181
4182      for (c in this.current) {
4183        d[c] = c in b ? b[c] : this.current[c];
4184      }
4185
4186      this.active = !0, this.nextStyle = this.style(d);
4187    }, a.fallback = function (a) {
4188      var b = this.values(a);
4189      this.tween = new T({
4190        current: this.current,
4191        values: b,
4192        duration: this.duration,
4193        delay: this.delay,
4194        ease: this.ease,
4195        update: this.update,
4196        context: this
4197      });
4198    }, a.update = function () {
4199      V(this.el, this.name, this.style(this.current));
4200    }, a.style = function (a) {
4201      var b,
4202          c = "";
4203
4204      for (b in a) {
4205        c += b + "(" + a[b] + ") ";
4206      }
4207
4208      return c;
4209    }, a.values = function (a) {
4210      var b,
4211          d = {};
4212      return c.call(this, a, function (a, c, e) {
4213        d[a] = c, void 0 === this.current[a] && (b = 0, ~a.indexOf("scale") && (b = 1), this.current[a] = this.convert(b, e));
4214      }), d;
4215    };
4216  }),
4217      R = l(function (b) {
4218    function c(a) {
4219      1 === n.push(a) && J(g);
4220    }
4221
4222    function g() {
4223      var a,
4224          b,
4225          c,
4226          d = n.length;
4227      if (d) for (J(g), b = K(), a = d; a--;) {
4228        c = n[a], c && c.render(b);
4229      }
4230    }
4231
4232    function i(b) {
4233      var c,
4234          d = a.inArray(b, n);
4235      d >= 0 && (c = n.slice(d + 1), n.length = d, c.length && (n = n.concat(c)));
4236    }
4237
4238    function j(a) {
4239      return Math.round(a * o) / o;
4240    }
4241
4242    function k(a, b, c) {
4243      return e(a[0] + c * (b[0] - a[0]), a[1] + c * (b[1] - a[1]), a[2] + c * (b[2] - a[2]));
4244    }
4245
4246    var l = {
4247      ease: m.ease[1],
4248      from: 0,
4249      to: 1
4250    };
4251    b.init = function (a) {
4252      this.duration = a.duration || 0, this.delay = a.delay || 0;
4253      var b = a.ease || l.ease;
4254      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;
4255      var c = a.from,
4256          d = a.to;
4257      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();
4258    }, b.play = function () {
4259      this.active || (this.start || (this.start = K()), this.active = !0, c(this));
4260    }, b.stop = function () {
4261      this.active && (this.active = !1, i(this));
4262    }, b.render = function (a) {
4263      var b,
4264          c = a - this.start;
4265
4266      if (this.delay) {
4267        if (c <= this.delay) return;
4268        c -= this.delay;
4269      }
4270
4271      if (c < this.duration) {
4272        var d = this.ease(c, 0, 1, this.duration);
4273        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);
4274      }
4275
4276      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();
4277    }, b.format = function (a, b) {
4278      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);
4279
4280      if (!this.unit) {
4281        var c = b.replace(r, ""),
4282            e = a.replace(r, "");
4283        c !== e && h("tween", b, a), this.unit = c;
4284      }
4285
4286      b = parseFloat(b), a = parseFloat(a), this.begin = this.value = b, this.change = a - b;
4287    }, b.destroy = function () {
4288      this.stop(), this.context = null, this.ease = this.update = this.complete = f;
4289    };
4290    var n = [],
4291        o = 1e3;
4292  }),
4293      S = l(R, function (a) {
4294    a.init = function (a) {
4295      this.duration = a.duration || 0, this.complete = a.complete || f, this.context = a.context, this.play();
4296    }, a.render = function (a) {
4297      var b = a - this.start;
4298      b < this.duration || (this.complete.call(this.context), this.destroy());
4299    };
4300  }),
4301      T = l(R, function (a, b) {
4302    a.init = function (a) {
4303      this.context = a.context, this.update = a.update, this.tweens = [], this.current = a.current;
4304      var b, c;
4305
4306      for (b in a.values) {
4307        c = a.values[b], this.current[b] !== c && this.tweens.push(new R({
4308          name: b,
4309          from: this.current[b],
4310          to: c,
4311          duration: a.duration,
4312          delay: a.delay,
4313          ease: a.ease,
4314          autoplay: !1
4315        }));
4316      }
4317
4318      this.play();
4319    }, a.render = function (a) {
4320      var b,
4321          c,
4322          d = this.tweens.length,
4323          e = !1;
4324
4325      for (b = d; b--;) {
4326        c = this.tweens[b], c.context && (c.render(a), this.current[c.name] = c.value, e = !0);
4327      }
4328
4329      return e ? void (this.update && this.update.call(this.context)) : this.destroy();
4330    }, a.destroy = function () {
4331      if (b.destroy.call(this), this.tweens) {
4332        var a,
4333            c = this.tweens.length;
4334
4335        for (a = c; a--;) {
4336          this.tweens[a].destroy();
4337        }
4338
4339        this.tweens = null, this.current = null;
4340      }
4341    };
4342  }),
4343      U = b.config = {
4344    debug: !1,
4345    defaultUnit: "px",
4346    defaultAngle: "deg",
4347    keepInherited: !1,
4348    hideBackface: !1,
4349    perspective: "",
4350    fallback: !G.transition,
4351    agentTests: []
4352  };
4353
4354  b.fallback = function (a) {
4355    if (!G.transition) return U.fallback = !0;
4356    U.agentTests.push("(" + a + ")");
4357    var b = new RegExp(U.agentTests.join("|"), "i");
4358    U.fallback = b.test(navigator.userAgent);
4359  }, b.fallback("6.0.[2-5] Safari"), b.tween = function (a) {
4360    return new R(a);
4361  }, b.delay = function (a, b, c) {
4362    return new S({
4363      complete: b,
4364      duration: a,
4365      context: c
4366    });
4367  }, a.fn.tram = function (a) {
4368    return b.call(null, this, a);
4369  };
4370  var V = a.style,
4371      W = a.css,
4372      X = {
4373    transform: G.transform && G.transform.css
4374  },
4375      Y = {
4376    color: [O, u],
4377    background: [O, u, "background-color"],
4378    "outline-color": [O, u],
4379    "border-color": [O, u],
4380    "border-top-color": [O, u],
4381    "border-right-color": [O, u],
4382    "border-bottom-color": [O, u],
4383    "border-left-color": [O, u],
4384    "border-width": [N, v],
4385    "border-top-width": [N, v],
4386    "border-right-width": [N, v],
4387    "border-bottom-width": [N, v],
4388    "border-left-width": [N, v],
4389    "border-spacing": [N, v],
4390    "letter-spacing": [N, v],
4391    margin: [N, v],
4392    "margin-top": [N, v],
4393    "margin-right": [N, v],
4394    "margin-bottom": [N, v],
4395    "margin-left": [N, v],
4396    padding: [N, v],
4397    "padding-top": [N, v],
4398    "padding-right": [N, v],
4399    "padding-bottom": [N, v],
4400    "padding-left": [N, v],
4401    "outline-width": [N, v],
4402    opacity: [N, t],
4403    top: [N, w],
4404    right: [N, w],
4405    bottom: [N, w],
4406    left: [N, w],
4407    "font-size": [N, w],
4408    "text-indent": [N, w],
4409    "word-spacing": [N, w],
4410    width: [N, w],
4411    "min-width": [N, w],
4412    "max-width": [N, w],
4413    height: [N, w],
4414    "min-height": [N, w],
4415    "max-height": [N, w],
4416    "line-height": [N, y],
4417    "scroll-top": [P, t, "scrollTop"],
4418    "scroll-left": [P, t, "scrollLeft"]
4419  },
4420      Z = {};
4421  G.transform && (Y.transform = [Q], Z = {
4422    x: [w, "translateX"],
4423    y: [w, "translateY"],
4424    rotate: [x],
4425    rotateX: [x],
4426    rotateY: [x],
4427    scale: [t],
4428    scaleX: [t],
4429    scaleY: [t],
4430    skew: [x],
4431    skewX: [x],
4432    skewY: [x]
4433  }), G.transform && G.backface && (Z.z = [w, "translateZ"], Z.rotateZ = [x], Z.scaleZ = [t], Z.perspective = [v]);
4434  var $ = /ms/,
4435      _ = /s|\./;
4436  return a.tram = b;
4437}(window.jQuery);
4438
4439/***/ }),
4440/* 56 */
4441/***/ (function(module, __webpack_exports__, __webpack_require__) {
4442
4443"use strict";
4444__webpack_require__.r(__webpack_exports__);
4445/* harmony import */ var _createStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(29);
4446/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "createStore", function() { return _createStore__WEBPACK_IMPORTED_MODULE_0__["default"]; });
4447
4448/* harmony import */ var _combineReducers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(59);
4449/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "combineReducers", function() { return _combineReducers__WEBPACK_IMPORTED_MODULE_1__["default"]; });
4450
4451/* harmony import */ var _bindActionCreators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(61);
4452/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bindActionCreators", function() { return _bindActionCreators__WEBPACK_IMPORTED_MODULE_2__["default"]; });
4453
4454/* harmony import */ var _applyMiddleware__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(62);
4455/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "applyMiddleware", function() { return _applyMiddleware__WEBPACK_IMPORTED_MODULE_3__["default"]; });
4456
4457/* harmony import */ var _compose__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(31);
4458/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "compose", function() { return _compose__WEBPACK_IMPORTED_MODULE_4__["default"]; });
4459
4460/* harmony import */ var _utils_warning__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(60);
4461
4462
4463
4464
4465
4466
4467
4468/*
4469* This is a dummy function to check if the function name has been altered by minification.
4470* If the function has been minified and NODE_ENV !== 'production', warn the user.
4471*/
4472function isCrushed() {}
4473
4474if (false) {}
4475
4476
4477
4478/***/ }),
4479/* 57 */
4480/***/ (function(module, __webpack_exports__, __webpack_require__) {
4481
4482"use strict";
4483__webpack_require__.r(__webpack_exports__);
4484/* harmony import */ var _baseGetTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(106);
4485/* harmony import */ var _getPrototype_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(111);
4486/* harmony import */ var _isObjectLike_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(113);
4487
4488
4489
4490
4491/** `Object#toString` result references. */
4492var objectTag = '[object Object]';
4493
4494/** Used for built-in method references. */
4495var funcProto = Function.prototype,
4496    objectProto = Object.prototype;
4497
4498/** Used to resolve the decompiled source of functions. */
4499var funcToString = funcProto.toString;
4500
4501/** Used to check objects for own properties. */
4502var hasOwnProperty = objectProto.hasOwnProperty;
4503
4504/** Used to infer the `Object` constructor. */
4505var objectCtorString = funcToString.call(Object);
4506
4507/**
4508 * Checks if `value` is a plain object, that is, an object created by the
4509 * `Object` constructor or one with a `[[Prototype]]` of `null`.
4510 *
4511 * @static
4512 * @memberOf _
4513 * @since 0.8.0
4514 * @category Lang
4515 * @param {*} value The value to check.
4516 * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
4517 * @example
4518 *
4519 * function Foo() {
4520 *   this.a = 1;
4521 * }
4522 *
4523 * _.isPlainObject(new Foo);
4524 * // => false
4525 *
4526 * _.isPlainObject([1, 2, 3]);
4527 * // => false
4528 *
4529 * _.isPlainObject({ 'x': 0, 'y': 0 });
4530 * // => true
4531 *
4532 * _.isPlainObject(Object.create(null));
4533 * // => true
4534 */
4535function isPlainObject(value) {
4536  if (!Object(_isObjectLike_js__WEBPACK_IMPORTED_MODULE_2__["default"])(value) || Object(_baseGetTag_js__WEBPACK_IMPORTED_MODULE_0__["default"])(value) != objectTag) {
4537    return false;
4538  }
4539  var proto = Object(_getPrototype_js__WEBPACK_IMPORTED_MODULE_1__["default"])(value);
4540  if (proto === null) {
4541    return true;
4542  }
4543  var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;
4544  return typeof Ctor == 'function' && Ctor instanceof Ctor &&
4545    funcToString.call(Ctor) == objectCtorString;
4546}
4547
4548/* harmony default export */ __webpack_exports__["default"] = (isPlainObject);
4549
4550
4551/***/ }),
4552/* 58 */
4553/***/ (function(module, __webpack_exports__, __webpack_require__) {
4554
4555"use strict";
4556__webpack_require__.r(__webpack_exports__);
4557/* harmony import */ var _root_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(107);
4558
4559
4560/** Built-in value references. */
4561var Symbol = _root_js__WEBPACK_IMPORTED_MODULE_0__["default"].Symbol;
4562
4563/* harmony default export */ __webpack_exports__["default"] = (Symbol);
4564
4565
4566/***/ }),
4567/* 59 */
4568/***/ (function(module, __webpack_exports__, __webpack_require__) {
4569
4570"use strict";
4571__webpack_require__.r(__webpack_exports__);
4572/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return combineReducers; });
4573/* harmony import */ var _createStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(29);
4574/* harmony import */ var lodash_es_isPlainObject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(57);
4575/* harmony import */ var _utils_warning__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(60);
4576
4577
4578
4579
4580function getUndefinedStateErrorMessage(key, action) {
4581  var actionType = action && action.type;
4582  var actionName = actionType && '"' + actionType.toString() + '"' || 'an action';
4583
4584  return 'Given action ' + actionName + ', reducer "' + key + '" returned undefined. ' + 'To ignore an action, you must explicitly return the previous state.';
4585}
4586
4587function getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unex
4587pectedKeyCache) {
4588  var reducerKeys = Object.keys(reducers);
4589  var argumentName = action && action.type === _createStore__WEBPACK_IMPORTED_MODULE_0__["ActionTypes"].INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';
4590
4591  if (reducerKeys.length === 0) {
4592    return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';
4593  }
4594
4595  if (!Object(lodash_es_isPlainObject__WEBPACK_IMPORTED_MODULE_1__["default"])(inputState)) {
4596    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('", "') + '"');
4597  }
4598
4599  var unexpectedKeys = Object.keys(inputState).filter(function (key) {
4600    return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];
4601  });
4602
4603  unexpectedKeys.forEach(function (key) {
4604    unexpectedKeyCache[key] = true;
4605  });
4606
4607  if (unexpectedKeys.length > 0) {
4608    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.');
4609  }
4610}
4611
4612function assertReducerSanity(reducers) {
4613  Object.keys(reducers).forEach(function (key) {
4614    var reducer = reducers[key];
4615    var initialState = reducer(undefined, { type: _createStore__WEBPACK_IMPORTED_MODULE_0__["ActionTypes"].INIT });
4616
4617    if (typeof initialState === 'undefined') {
4618      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.');
4619    }
4620
4621    var type = '@@redux/PROBE_UNKNOWN_ACTION_' + Math.random().toString(36).substring(7).split('').join('.');
4622    if (typeof reducer(undefined, { type: type }) === 'undefined') {
4623      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.');
4624    }
4625  });
4626}
4627
4628/**
4629 * Turns an object whose values are different reducer functions, into a single
4630 * reducer function. It will call every child reducer, and gather their results
4631 * into a single state object, whose keys correspond to the keys of the passed
4632 * reducer functions.
4633 *
4634 * @param {Object} reducers An object whose values correspond to different
4635 * reducer functions that need to be combined into one. One handy way to obtain
4636 * it is to use ES6 `import * as reducers` syntax. The reducers may never return
4637 * undefined for any action. Instead, they should return their initial state
4638 * if the state passed to them was undefined, and the current state for any
4639 * unrecognized action.
4640 *
4641 * @returns {Function} A reducer function that invokes every reducer inside the
4642 * passed object, and builds a state object with the same shape.
4643 */
4644function combineReducers(reducers) {
4645  var reducerKeys = Object.keys(reducers);
4646  var finalReducers = {};
4647  for (var i = 0; i < reducerKeys.length; i++) {
4648    var key = reducerKeys[i];
4649
4650    if (false) {}
4651
4652    if (typeof reducers[key] === 'function') {
4653      finalReducers[key] = reducers[key];
4654    }
4655  }
4656  var finalReducerKeys = Object.keys(finalReducers);
4657
4658  if (false) { var unexpectedKeyCache; }
4659
4660  var sanityError;
4661  try {
4662    assertReducerSanity(finalReducers);
4663  } catch (e) {
4664    sanityError = e;
4665  }
4666
4667  return function combination() {
4668    var state = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
4669    var action = arguments[1];
4670
4671    if (sanityError) {
4672      throw sanityError;
4673    }
4674
4675    if (false) { var warningMessage; }
4676
4677    var hasChanged = false;
4678    var nextState = {};
4679    for (var i = 0; i < finalReducerKeys.length; i++) {
4680      var key = finalReducerKeys[i];
4681      var reducer = finalReducers[key];
4682      var previousStateForKey = state[key];
4683      var nextStateForKey = reducer(previousStateForKey, action);
4684      if (typeof nextStateForKey === 'undefined') {
4685        var errorMessage = getUndefinedStateErrorMessage(key, action);
4686        throw new Error(errorMessage);
4687      }
4688      nextState[key] = nextStateForKey;
4689      hasChanged = hasChanged || nextStateForKey !== previousStateForKey;
4690    }
4691    return hasChanged ? nextState : state;
4692  };
4693}
4694
4695/***/ }),
4696/* 60 */
4697/***/ (function(module, __webpack_exports__, __webpack_require__) {
4698
4699"use strict";
4700__webpack_require__.r(__webpack_exports__);
4701/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return warning; });
4702/**
4703 * Prints a warning in the console if it exists.
4704 *
4705 * @param {String} message The warning message.
4706 * @returns {void}
4707 */
4708function warning(message) {
4709  /* eslint-disable no-console */
4710  if (typeof console !== 'undefined' && typeof console.error === 'function') {
4711    console.error(message);
4712  }
4713  /* eslint-enable no-console */
4714  try {
4715    // This error was thrown as a convenience so that if you enable
4716    // "break on all exceptions" in your console,
4717    // it would pause the execution at this line.
4718    throw new Error(message);
4719    /* eslint-disable no-empty */
4720  } catch (e) {}
4721  /* eslint-enable no-empty */
4722}
4723
4724/***/ }),
4725/* 61 */
4726/***/ (function(module, __webpack_exports__, __webpack_require__) {
4727
4728"use strict";
4729__webpack_require__.r(__webpack_exports__);
4730/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return bindActionCreators; });
4731function bindActionCreator(actionCreator, dispatch) {
4732  return function () {
4733    return dispatch(actionCreator.apply(undefined, arguments));
4734  };
4735}
4736
4737/**
4738 * Turns an object whose values are action creators, into an object with the
4739 * same keys, but with every function wrapped into a `dispatch` call so they
4740 * may be invoked directly. This is just a convenience method, as you can call
4741 * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.
4742 *
4743 * For convenience, you can also pass a single function as the first argument,
4744 * and get a function in return.
4745 *
4746 * @param {Function|Object} actionCreators An object whose values are action
4747 * creator functions. One handy way to obtain it is to use ES6 `import * as`
4748 * syntax. You may also pass a single function.
4749 *
4750 * @param {Function} dispatch The `dispatch` function available on your Redux
4751 * store.
4752 *
4753 * @returns {Function|Object} The object mimicking the original object, but with
4754 * every action creator wrapped into the `dispatch` call. If you passed a
4755 * function as `actionCreators`, the return value will also be a single
4756 * function.
4757 */
4758function bindActionCreators(actionCreators, dispatch) {
4759  if (typeof actionCreators === 'function') {
4760    return bindActionCreator(actionCreators, dispatch);
4761  }
4762
4763  if (typeof actionCreators !== 'object' || actionCreators === null) {
4764    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"?');
4765  }
4766
4767  var keys = Object.keys(actionCreators);
4768  var boundActionCreators = {};
4769  for (var i = 0; i < keys.length; i++) {
4770    var key = keys[i];
4771    var actionCreator = actionCreators[key];
4772    if (typeof actionCreator === 'function') {
4773      boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);
4774    }
4775  }
4776  return boundActionCreators;
4777}
4778
4779/***/ }),
4780/* 62 */
4781/***/ (function(module, __webpack_exports__, __webpack_require__) {
4782
4783"use strict";
4784__webpack_require__.r(__webpack_exports__);
4785/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return applyMiddleware; });
4786/* harmony import */ var _compose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(31);
4787var _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; };
4788
4789
4790
4791/**
4792 * Creates a store enhancer that applies middleware to the dispatch method
4793 * of the Redux store. This is handy for a variety of tasks, such as expressing
4794 * asynchronous actions in a concise manner, or logging every action payload.
4795 *
4796 * See `redux-thunk` package as an example of the Redux middleware.
4797 *
4798 * Because middleware is potentially asynchronous, this should be the first
4799 * store enhancer in the composition chain.
4800 *
4801 * Note that each middleware will be given the `dispatch` and `getState` functions
4802 * as named arguments.
4803 *
4804 * @param {...Function} middlewares The middleware chain to be applied.
4805 * @returns {Function} A store enhancer applying the middleware.
4806 */
4807function applyMiddleware() {
4808  for (var _len = arguments.length, middlewares = Array(_len), _key = 0; _key < _len; _key++) {
4809    middlewares[_key] = arguments[_key];
4810  }
4811
4812  return function (createStore) {
4813    return function (reducer, preloadedState, enhancer) {
4814      var store = createStore(reducer, preloadedState, enhancer);
4815      var _dispatch = store.dispatch;
4816      var chain = [];
4817
4818      var middlewareAPI = {
4819        getState: store.getState,
4820        dispatch: function dispatch(action) {
4821          return _dispatch(action);
4822        }
4823      };
4824      chain = middlewares.map(function (middleware) {
4825        return middleware(middlewareAPI);
4826      });
4827      _dispatch = _compose__WEBPACK_IMPORTED_MODULE_0__["default"].apply(undefined, chain)(store.dispatch);
4828
4829      return _extends({}, store, {
4830        dispatch: _dispatch
4831      });
4832    };
4833  };
4834}
4835
4836/***/ }),
4837/* 63 */
4838/***/ (function(module, exports, __webpack_require__) {
4839
4840var createFind = __webpack_require__(64),
4841    findIndex = __webpack_require__(182);
4842
4843/**
4844 * Iterates over elements of `collection`, returning the first element
4845 * `predicate` returns truthy for. The predicate is invoked with three
4846 * arguments: (value, index|key, collection).
4847 *
4848 * @static
4849 * @memberOf _
4850 * @since 0.1.0
4851 * @category Collection
4852 * @param {Array|Object} collection The collection to inspect.
4853 * @param {Function} [predicate=_.identity] The function invoked per iteration.
4854 * @param {number} [fromIndex=0] The index to search from.
4855 * @returns {*} Returns the matched element, else `undefined`.
4856 * @example
4857 *
4858 * var users = [
4859 *   { 'user': 'barney',  'age': 36, 'active': true },
4860 *   { 'user': 'fred',    'age': 40, 'active': false },
4861 *   { 'user': 'pebbles', 'age': 1,  'active': true }
4862 * ];
4863 *
4864 * _.find(users, function(o) { return o.age < 40; });
4865 * // => object for 'barney'
4866 *
4867 * // The `_.matches` iteratee shorthand.
4868 * _.find(users, { 'age': 1, 'active': true });
4869 * // => object for 'pebbles'
4870 *
4871 * // The `_.matchesProperty` iteratee shorthand.
4872 * _.find(users, ['active', false]);
4873 * // => object for 'fred'
4874 *
4875 * // The `_.property` iteratee shorthand.
4876 * _.find(users, 'active');
4877 * // => object for 'barney'
4878 */
4879var find = createFind(findIndex);
4880
4881module.exports = find;
4882
4883
4884/***/ }),
4885/* 64 */
4886/***/ (function(module, exports, __webpack_require__) {
4887
4888var baseIteratee = __webpack_require__(6),
4889    isArrayLike = __webpack_require__(10),
4890    keys = __webpack_require__(21);
4891
4892/**
4893 * Creates a `_.find` or `_.findLast` function.
4894 *
4895 * @private
4896 * @param {Function} findIndexFunc The function to find the collection index.
4897 * @returns {Function} Returns the new find function.
4898 */
4899function createFind(findIndexFunc) {
4900  return function(collection, predicate, fromIndex) {
4901    var iterable = Object(collection);
4902    if (!isArrayLike(collection)) {
4903      var iteratee = baseIteratee(predicate, 3);
4904      collection = keys(collection);
4905      predicate = function(key) { return iteratee(iterable[key], key, iterable); };
4906    }
4907    var index = findIndexFunc(collection, predicate, fromIndex);
4908    return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;
4909  };
4910}
4911
4912module.exports = createFind;
4913
4914
4915/***/ }),
4916/* 65 */
4917/***/ (function(module, exports, __webpack_require__) {
4918
4919var ListCache = __webpack_require__(17),
4920    stackClear = __webpack_require__(126),
4921    stackDelete = __webpack_require__(127),
4922    stackGet = __webpack_require__(128),
4923    stackHas = __webpack_require__(129),
4924    stackSet = __webpack_require__(130);
4925
4926/**
4927 * Creates a stack cache object to store key-value pairs.
4928 *
4929 * @private
4930 * @constructor
4931 * @param {Array} [entries] The key-value pairs to cache.
4932 */
4933function Stack(entries) {
4934  var data = this.__data__ = new ListCache(entries);
4935  this.size = data.size;
4936}
4937
4938// Add methods to `Stack`.
4939Stack.prototype.clear = stackClear;
4940Stack.prototype['delete'] = stackDelete;
4941Stack.prototype.get = stackGet;
vendor: 3,423 bytes, lines 4942-5074
4942Stack.prototype.has = stackHas;
4943Stack.prototype.set = stackSet;
4944
4945module.exports = Stack;
4946
4947
4948/***/ }),
4949/* 66 */
4950/***/ (function(module, exports, __webpack_require__) {
4951
4952var baseGetTag = __webpack_require__(9),
4953    isObject = __webpack_require__(5);
4954
4955/** `Object#toString` result references. */
4956var asyncTag = '[object AsyncFunction]',
4957    funcTag = '[object Function]',
4958    genTag = '[object GeneratorFunction]',
4959    proxyTag = '[object Proxy]';
4960
4961/**
4962 * Checks if `value` is classified as a `Function` object.
4963 *
4964 * @static
4965 * @memberOf _
4966 * @since 0.1.0
4967 * @category Lang
4968 * @param {*} value The value to check.
4969 * @returns {boolean} Returns `true` if `value` is a function, else `false`.
4970 * @example
4971 *
4972 * _.isFunction(_);
4973 * // => true
4974 *
4975 * _.isFunction(/abc/);
4976 * // => false
4977 */
4978function isFunction(value) {
4979  if (!isObject(value)) {
4980    return false;
4981  }
4982  // The use of `Object#toString` avoids issues with the `typeof` operator
4983  // in Safari 9 which returns 'object' for typed arrays and other constructors.
4984  var tag = baseGetTag(value);
4985  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
4986}
4987
4988module.exports = isFunction;
4989
4990
4991/***/ }),
4992/* 67 */
4993/***/ (function(module, exports, __webpack_require__) {
4994
4995/* WEBPACK VAR INJECTION */(function(global) {/** Detect free variable `global` from Node.js. */
4996var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
4997
4998module.exports = freeGlobal;
4999
5000/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(30)))
5001
5002/***/ }),
5003/* 68 */
5004/***/ (function(module, exports) {
5005
5006/** Used for built-in method references. */
5007var funcProto = Function.prototype;
5008
5009/** Used to resolve the decompiled source of functions. */
5010var funcToString = funcProto.toString;
5011
5012/**
5013 * Converts `func` to its source code.
5014 *
5015 * @private
5016 * @param {Function} func The function to convert.
5017 * @returns {string} Returns the source code.
5018 */
5019function toSource(func) {
5020  if (func != null) {
5021    try {
5022      return funcToString.call(func);
5023    } catch (e) {}
5024    try {
5025      return (func + '');
5026    } catch (e) {}
5027  }
5028  return '';
5029}
5030
5031module.exports = toSource;
5032
5033
5034/***/ }),
5035/* 69 */
5036/***/ (function(module, exports, __webpack_require__) {
5037
5038var baseIsEqualDeep = __webpack_require__(149),
5039    isObjectLike = __webpack_require__(8);
5040
5041/**
5042 * The base implementation of `_.isEqual` which supports partial comparisons
5043 * and tracks traversed objects.
5044 *
5045 * @private
5046 * @param {*} value The value to compare.
5047 * @param {*} other The other value to compare.
5048 * @param {boolean} bitmask The bitmask flags.
5049 *  1 - Unordered comparison
5050 *  2 - Partial comparison
5051 * @param {Function} [customizer] The function to customize comparisons.
5052 * @param {Object} [stack] Tracks traversed `value` and `other` objects.
5053 * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
5054 */
5055function baseIsEqual(value, other, bitmask, customizer, stack) {
5056  if (value === other) {
5057    return true;
5058  }
5059  if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {
5060    return value !== value && other !== other;
5061  }
5062  return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
5063}
5064
5065module.exports = baseIsEqual;
5066
5067
5068/***/ }),
5069/* 70 */
5070/***/ (function(module, exports, __webpack_require__) {
5071
5072var SetCache = __webpack_require__(150),
5073    arraySome = __webpack_require__(153),
5074    cacheHas = __webpack_require__(154
vendor: 2,480 bytes, lines 5074-5155
5074);
5075
5076/** Used to compose bitmasks for value comparisons. */
5077var COMPARE_PARTIAL_FLAG = 1,
5078    COMPARE_UNORDERED_FLAG = 2;
5079
5080/**
5081 * A specialized version of `baseIsEqualDeep` for arrays with support for
5082 * partial deep comparisons.
5083 *
5084 * @private
5085 * @param {Array} array The array to compare.
5086 * @param {Array} other The other array to compare.
5087 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
5088 * @param {Function} customizer The function to customize comparisons.
5089 * @param {Function} equalFunc The function to determine equivalents of values.
5090 * @param {Object} stack Tracks traversed `array` and `other` objects.
5091 * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
5092 */
5093function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {
5094  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
5095      arrLength = array.length,
5096      othLength = other.length;
5097
5098  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
5099    return false;
5100  }
5101  // Assume cyclic values are equal.
5102  var stacked = stack.get(array);
5103  if (stacked && stack.get(other)) {
5104    return stacked == other;
5105  }
5106  var index = -1,
5107      result = true,
5108      seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;
5109
5110  stack.set(array, other);
5111  stack.set(other, array);
5112
5113  // Ignore non-index properties.
5114  while (++index < arrLength) {
5115    var arrValue = array[index],
5116        othValue = other[index];
5117
5118    if (customizer) {
5119      var compared = isPartial
5120        ? customizer(othValue, arrValue, index, other, array, stack)
5121        : customizer(arrValue, othValue, index, array, other, stack);
5122    }
5123    if (compared !== undefined) {
5124      if (compared) {
5125        continue;
5126      }
5127      result = false;
5128      break;
5129    }
5130    // Recursively compare arrays (susceptible to call stack limits).
5131    if (seen) {
5132      if (!arraySome(other, function(othValue, othIndex) {
5133            if (!cacheHas(seen, othIndex) &&
5134                (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
5135              return seen.push(othIndex);
5136            }
5137          })) {
5138        result = false;
5139        break;
5140      }
5141    } else if (!(
5142          arrValue === othValue ||
5143            equalFunc(arrValue, othValue, bitmask, customizer, stack)
5144        )) {
5145      result = false;
5146      break;
5147    }
5148  }
5149  stack['delete'](array);
5150  stack['delete'](other);
5151  return result;
5152}
5153
5154module.exports = equalArrays;
5155
vendor: 3,125 bytes, lines 5156-5275
5156
5157/***/ }),
5158/* 71 */
5159/***/ (function(module, exports, __webpack_require__) {
5160
5161var arrayPush = __webpack_require__(36),
5162    isArray = __webpack_require__(1);
5163
5164/**
5165 * The base implementation of `getAllKeys` and `getAllKeysIn` which uses
5166 * `keysFunc` and `symbolsFunc` to get the enumerable property names and
5167 * symbols of `object`.
5168 *
5169 * @private
5170 * @param {Object} object The object to query.
5171 * @param {Function} keysFunc The function to get the keys of `object`.
5172 * @param {Function} symbolsFunc The function to get the symbols of `object`.
5173 * @returns {Array} Returns the array of property names and symbols.
5174 */
5175function baseGetAllKeys(object, keysFunc, symbolsFunc) {
5176  var result = keysFunc(object);
5177  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));
5178}
5179
5180module.exports = baseGetAllKeys;
5181
5182
5183/***/ }),
5184/* 72 */
5185/***/ (function(module, exports, __webpack_require__) {
5186
5187var arrayFilter = __webpack_require__(161),
5188    stubArray = __webpack_require__(73);
5189
5190/** Used for built-in method references. */
5191var objectProto = Object.prototype;
5192
5193/** Built-in value references. */
5194var propertyIsEnumerable = objectProto.propertyIsEnumerable;
5195
5196/* Built-in method references for those with the same name as other `lodash` methods. */
5197var nativeGetSymbols = Object.getOwnPropertySymbols;
5198
5199/**
5200 * Creates an array of the own enumerable symbols of `object`.
5201 *
5202 * @private
5203 * @param {Object} object The object to query.
5204 * @returns {Array} Returns the array of symbols.
5205 */
5206var getSymbols = !nativeGetSymbols ? stubArray : function(object) {
5207  if (object == null) {
5208    return [];
5209  }
5210  object = Object(object);
5211  return arrayFilter(nativeGetSymbols(object), function(symbol) {
5212    return propertyIsEnumerable.call(object, symbol);
5213  });
5214};
5215
5216module.exports = getSymbols;
5217
5218
5219/***/ }),
5220/* 73 */
5221/***/ (function(module, exports) {
5222
5223/**
5224 * This method returns a new empty array.
5225 *
5226 * @static
5227 * @memberOf _
5228 * @since 4.13.0
5229 * @category Util
5230 * @returns {Array} Returns the new empty array.
5231 * @example
5232 *
5233 * var arrays = _.times(2, _.stubArray);
5234 *
5235 * console.log(arrays);
5236 * // => [[], []]
5237 *
5238 * console.log(arrays[0] === arrays[1]);
5239 * // => false
5240 */
5241function stubArray() {
5242  return [];
5243}
5244
5245module.exports = stubArray;
5246
5247
5248/***/ }),
5249/* 74 */
5250/***/ (function(module, exports, __webpack_require__) {
5251
5252var baseTimes = __webpack_require__(162),
5253    isArguments = __webpack_require__(22),
5254    isArray = __webpack_require__(1),
5255    isBuffer = __webpack_require__(37),
5256    isIndex = __webpack_require__(38),
5257    isTypedArray = __webpack_require__(39);
5258
5259/** Used for built-in method references. */
5260var objectProto = Object.prototype;
5261
5262/** Used to check objects for own properties. */
5263var hasOwnProperty = objectProto.hasOwnProperty;
5264
5265/**
5266 * Creates an array of the enumerable property names of the array-like `value`.
5267 *
5268 * @private
5269 * @param {*} value The value to query.
5270 * @param {boolean} inherited Specify returning inherited property names.
5271 * @returns {Array} Returns the array of property names.
5272 */
5273function arrayLikeKeys(value, inherited) {
5274  var isArr = isArray(value),
5275      isArg = !isArr && isArguments(value),
vendor: 4,920 bytes, lines 5276-5475
5276      isBuff = !isArr && !isArg && isBuffer(value),
5277      isType = !isArr && !isArg && !isBuff && isTypedArray(value),
5278      skipIndexes = isArr || isArg || isBuff || isType,
5279      result = skipIndexes ? baseTimes(value.length, String) : [],
5280      length = result.length;
5281
5282  for (var key in value) {
5283    if ((inherited || hasOwnProperty.call(value, key)) &&
5284        !(skipIndexes && (
5285           // Safari 9 has enumerable `arguments.length` in strict mode.
5286           key == 'length' ||
5287           // Node.js 0.10 has enumerable non-index properties on buffers.
5288           (isBuff && (key == 'offset' || key == 'parent')) ||
5289           // PhantomJS 2 has enumerable non-index properties on typed arrays.
5290           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||
5291           // Skip index properties.
5292           isIndex(key, length)
5293        ))) {
5294      result.push(key);
5295    }
5296  }
5297  return result;
5298}
5299
5300module.exports = arrayLikeKeys;
5301
5302
5303/***/ }),
5304/* 75 */
5305/***/ (function(module, exports) {
5306
5307module.exports = function(module) {
5308	if (!module.webpackPolyfill) {
5309		module.deprecate = function() {};
5310		module.paths = [];
5311		// module.parent = undefined by default
5312		if (!module.children) module.children = [];
5313		Object.defineProperty(module, "loaded", {
5314			enumerable: true,
5315			get: function() {
5316				return module.l;
5317			}
5318		});
5319		Object.defineProperty(module, "id", {
5320			enumerable: true,
5321			get: function() {
5322				return module.i;
5323			}
5324		});
5325		module.webpackPolyfill = 1;
5326	}
5327	return module;
5328};
5329
5330
5331/***/ }),
5332/* 76 */
5333/***/ (function(module, exports) {
5334
5335/**
5336 * Creates a unary function that invokes `func` with its argument transformed.
5337 *
5338 * @private
5339 * @param {Function} func The function to wrap.
5340 * @param {Function} transform The argument transform.
5341 * @returns {Function} Returns the new function.
5342 */
5343function overArg(func, transform) {
5344  return function(arg) {
5345    return func(transform(arg));
5346  };
5347}
5348
5349module.exports = overArg;
5350
5351
5352/***/ }),
5353/* 77 */
5354/***/ (function(module, exports, __webpack_require__) {
5355
5356var getNative = __webpack_require__(7),
5357    root = __webpack_require__(4);
5358
5359/* Built-in method references that are verified to be native. */
5360var WeakMap = getNative(root, 'WeakMap');
5361
5362module.exports = WeakMap;
5363
5364
5365/***/ }),
5366/* 78 */
5367/***/ (function(module, exports, __webpack_require__) {
5368
5369var isObject = __webpack_require__(5);
5370
5371/**
5372 * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.
5373 *
5374 * @private
5375 * @param {*} value The value to check.
5376 * @returns {boolean} Returns `true` if `value` if suitable for strict
5377 *  equality comparisons, else `false`.
5378 */
5379function isStrictComparable(value) {
5380  return value === value && !isObject(value);
5381}
5382
5383module.exports = isStrictComparable;
5384
5385
5386/***/ }),
5387/* 79 */
5388/***/ (function(module, exports) {
5389
5390/**
5391 * A specialized version of `matchesProperty` for source values suitable
5392 * for strict equality comparisons, i.e. `===`.
5393 *
5394 * @private
5395 * @param {string} key The key of the property to get.
5396 * @param {*} srcValue The value to match.
5397 * @returns {Function} Returns the new spec function.
5398 */
5399function matchesStrictComparable(key, srcValue) {
5400  return function(object) {
5401    if (object == null) {
5402      return false;
5403    }
5404    return object[key] === srcValue &&
5405      (srcValue !== undefined || (key in Object(object)));
5406  };
5407}
5408
5409module.exports = matchesStrictComparable;
5410
5411
5412/***/ }),
5413/* 80 */
5414/***/ (function(module, exports, __webpack_require__) {
5415
5416var baseToString = __webpack_require__(81);
5417
5418/**
5419 * Converts `value` to a string. An empty string is returned for `null`
5420 * and `undefined` values. The sign of `-0` is preserved.
5421 *
5422 * @static
5423 * @memberOf _
5424 * @since 4.0.0
5425 * @category Lang
5426 * @param {*} value The value to convert.
5427 * @returns {string} Returns the converted string.
5428 * @example
5429 *
5430 * _.toString(null);
5431 * // => ''
5432 *
5433 * _.toString(-0);
5434 * // => '-0'
5435 *
5436 * _.toString([1, 2, 3]);
5437 * // => '1,2,3'
5438 */
5439function toString(value) {
5440  return value == null ? '' : baseToString(value);
5441}
5442
5443module.exports = toString;
5444
5445
5446/***/ }),
5447/* 81 */
5448/***/ (function(module, exports, __webpack_require__) {
5449
5450var Symbol = __webpack_require__(11),
5451    arrayMap = __webpack_require__(82),
5452    isArray = __webpack_require__(1),
5453    isSymbol = __webpack_require__(25);
5454
5455/** Used as references for various `Number` constants. */
5456var INFINITY = 1 / 0;
5457
5458/** Used to convert symbols to primitives and strings. */
5459var symbolProto = Symbol ? Symbol.prototype : undefined,
5460    symbolToString = symbolProto ? symbolProto.toString : undefined;
5461
5462/**
5463 * The base implementation of `_.toString` which doesn't convert nullish
5464 * values to empty strings.
5465 *
5466 * @private
5467 * @param {*} value The value to process.
5468 * @returns {string} Returns the string.
5469 */
5470function baseToString(value) {
5471  // Exit early for strings to avoid a performance hit in some environments.
5472  if (typeof value == 'string') {
5473    return value;
5474  }
5475  if (isArray(value)) {
5476    // Recursively convert values (susceptible to call stack limits).
5477    return arrayMap(value, baseToString) + '';
5478  }
5479  if (isSymbol(value)) {
5480    return symbolToString ? symbolToString.call(value) : '';
5481  }
5482  var result = (value + '');
5483  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
5484}
5485
5486module.exports = baseToString;
5487
5488
5489/***/ }),
5490/* 82 */
5491/***/ (function(module, exports) {
5492
5493/**
5494 * A specialized version of `_.map` for arrays without support for iteratee
5495 * shorthands.
5496 *
5497 * @private
5498 * @param {Array} [array] The array to iterate over.
5499 * @param {Function} iteratee The function invoked per iteration.
5500 * @returns {Array} Returns the new mapped array.
5501 */
5502function arrayMap(array, iteratee) {
5503  var index = -1,
5504      length = array == null ? 0 : array.length,
5505      result = Array(length);
5506
5507  while (++index < length) {
5508    result[index] = iteratee(array[index], index, array);
5509  }
5510  return result;
5511}
5512
5513module.exports = arrayMap;
5514
5515
5516/***/ }),
5517/* 83 */
5518/***/ (function(module, exports) {
5519
5520/**
5521 * The base implementation of `_.property` without support for deep paths.
5522 *
5523 * @private
5524 * @param {string} key The key of the property to get.
5525 * @returns {Function} Returns the new accessor function.
5526 */
5527function baseProperty(key) {
5528  return function(object) {
5529    return object == null ? undefined : object[key];
5530  };
5531}
5532
5533module.exports = baseProperty;
5534
5535
5536/***/ }),
5537/* 84 */
5538/***/ (function(module, exports) {
5539
5540/**
5541 * The base implementation of `_.findIndex` and `_.findLastIndex` without
5542 * support for iteratee shorthands.
5543 *
5544 * @private
5545 * @param {Array} array The array to inspect.
5546 * @param {Function} predicate The function invoked per iteration.
5547 * @param {number} fromIndex The index to search from.
5548 * @param {boolean} [fromRight] Specify iterating from right to left.
5549 * @returns {number} Returns the index of the matched value, else `-1`.
5550 */
5551function baseFindIndex(array, predicate, fromIndex, fromRight) {
5552  var length = array.length,
5553      index = fromIndex + (fromRight ? 1 : -1);
5554
5555  while ((fromRight ? index-- : ++index < length)) {
5556    if (predicate(array[index], index, array)) {
5557      return index;
5558    }
5559  }
5560  return -1;
5561}
5562
5563module.exports = baseFindIndex;
5564
5565
5566/***/ }),
5567/* 85 */
5568/***/ (function(module, exports, __webpack_require__) {
5569
5570"use strict";
5571
5572
5573var _interopRequireDefault = __webpack_require__(0);
5574
5575Object.defineProperty(exports, "__esModule", {
5576  value: true
5577});
5578exports.inQuad = inQuad;
5579exports.outQuad = outQuad;
5580exports.inOutQuad = inOutQuad;
5581exports.inCubic = inCubic;
5582exports.outCubic = outCubic;
5583exports.inOutCubic = inOutCubic;
5584exports.inQuart = inQuart;
5585exports.outQuart = outQuart;
5586exports.inOutQuart = inOutQuart;
5587exports.inQuint = inQuint;
5588exports.outQuint = outQuint;
5589exports.inOutQuint = inOutQuint;
5590exports.inSine = inSine;
5591exports.outSine = outSine;
5592exports.inOutSine = inOutSine;
5593exports.inExpo = inExpo;
5594exports.outExpo = outExpo;
5595exports.inOutExpo = inOutExpo;
5596exports.inCirc = inCirc;
5597exports.outCirc = outCirc;
5598exports.inOutCirc = inOutCirc;
5599exports.outBounce = outBounce;
5600exports.inBack = inBack;
5601exports.outBack = outBack;
5602exports.inOutBack = inOutBack;
5603exports.inElastic = inElastic;
5604exports.outElastic = outElastic;
5605exports.inOutElastic = inOutElastic;
5606exports.swingFromTo = swingFromTo;
5607exports.swingFrom = swingFrom;
5608exports.swingTo = swingTo;
5609exports.bounce = bounce;
5610exports.bouncePast = bouncePast;
5611exports.easeInOut = exports.easeOut = exports.easeIn = exports.ease = void 0;
5612
5613var _bezierEasing = _interopRequireDefault(__webpack_require__(184)); // Easing functions adapted from Thomas Fuchs & Jeremy Kahn
5614// Easing Equations (c) 2003 Robert Penner, BSD license
5615// https://raw.github.com/danro/easing-js/master/LICENSE
5616
5617
5618var magicSwing = 1.70158;
5619var ease = (0, _bezierEasing["default"])(0.25, 0.1, 0.25, 1.0);
5620exports.ease = ease;
5621var easeIn = (0, _bezierEasing["default"])(0.42, 0.0, 1.0, 1.0);
5622exports.easeIn = easeIn;
5623var easeOut = (0, _bezierEasing["default"])(0.0, 0.0, 0.58, 1.0);
5624exports.easeOut = easeOut;
5625var easeInOut = (0, _bezierEasing["default"])(0.42, 0.0, 0.58, 1.0);
5626exports.easeInOut = easeInOut;
5627
5628function inQuad(pos) {
5629  return Math.pow(pos, 2);
5630}
5631
5632function outQuad(pos) {
5633  return -(Math.pow(pos - 1, 2) - 1);
5634}
5635
5636function inOutQuad(pos) {
5637  if ((pos /= 0.5) < 1) {
5638    return 0.5 * Math.pow(pos, 2);
5639  }
5640
5641  return -0.5 * ((pos -= 2) * pos - 2);
5642}
5643
5644function inCubic(pos) {
5645  return Math.pow(pos, 3);
5646}
5647
5648function outCubic(pos) {
5649  return Math.pow(pos - 1, 3) + 1;
5650}
5651
5652function inOutCubic(pos) {
5653  if ((pos /= 0.5) < 1) {
5654    return 0.5 * Math.pow(pos, 3);
5655  }
5656
5657  return 0.5 * (Math.pow(pos - 2, 3) + 2);
5658}
5659
5660function inQuart(pos) {
5661  return Math.pow(pos, 4);
5662}
5663
5664function outQuart(pos) {
5665  return -(Math.pow(pos - 1, 4) - 1);
5666}
5667
5668function inOutQuart(pos) {
5669  if ((pos /= 0.5) < 1) {
5670    return 0.5 * Math.pow(pos, 4);
5671  }
5672
5673  return -0.5 * ((pos -= 2) * Math.pow(pos, 3) - 2);
5674}
5675
5676function inQuint(pos) {
5677  return Math.pow(pos, 5);
5678}
5679
5680function outQuint(pos) {
5681  return Math.pow(pos - 1, 5) + 1;
5682}
5683
5684function inOutQuint(pos) {
5685  if ((pos /= 0.5) < 1) {
5686    return 0.5 * Math.pow(pos, 5);
5687  }
5688
5689  return 0.5 * (Math.pow(pos - 2, 5) + 2);
5690}
5691
5692function inSine(pos) {
5693  return -Math.cos(pos * (Math.PI / 2)) + 1;
5694}
5695
5696function outSine(pos) {
5697  return Math.sin(pos * (Math.PI / 2));
5698}
5699
5700function inOutSine(pos) {
5701  return -0.5 * (Math.cos(Math.PI * pos) - 1);
5702}
5703
5704function inExpo(pos) {
5705  return pos === 0 ? 0 : Math.pow(2, 10 * (pos - 1));
5706}
5707
5708function outExpo(pos) {
5709  return pos === 1 ? 1 : -Math.pow(2, -10 * pos) + 1;
5710}
5711
5712function inOutExpo(pos) {
5713  if (pos === 0) {
5714    return 0;
5715  }
5716
5717  if (pos === 1) {
5718    return 1;
5719  }
5720
5721  if ((pos /= 0.5) < 1) {
5722    return 0.5 * Math.pow(2, 10 * (pos - 1));
5723  }
5724
5725  return 0.5 * (-Math.pow(2, -10 * --pos) + 2);
5726}
5727
5728function inCirc(pos) {
5729  return -(Math.sqrt(1 - pos * pos) - 1);
5730}
5731
5732function outCirc(pos) {
5733  return Math.sqrt(1 - Math.pow(pos - 1, 2));
5734}
5735
5736function inOutCirc(pos) {
5737  if ((pos /= 0.5) < 1) {
5738    return -0.5 * (Math.sqrt(1 - pos * pos) - 1);
5739  }
5740
5741  return 0.5 * (Math.sqrt(1 - (pos -= 2) * pos) + 1);
5742}
5743
5744function outBounce(pos) {
5745  if (pos < 1 / 2.75) {
5746    return 7.5625 * pos * pos;
5747  } else if (pos < 2 / 2.75) {
5748    return 7.5625 * (pos -= 1.5 / 2.75) * pos + 0.75;
5749  } else if (pos < 2.5 / 2.75) {
5750    return 7.5625 * (pos -= 2.25 / 2.75) * pos + 0.9375;
5751  } else {
5752    return 7.5625 * (pos -= 2.625 / 2.75) * pos + 0.984375;
5753  }
5754}
5755
5756function inBack(pos) {
5757  var s = magicSwing;
5758  return pos * pos * ((s + 1) * pos - s);
5759}
5760
5761function outBack(pos) {
5762  var s = magicSwing;
5763  return (pos -= 1) * pos * ((s + 1) * pos + s) + 1;
5764}
5765
5766function inOutBack(pos) {
5767  var s = magicSwing;
5768
5769  if ((pos /= 0.5) < 1) {
5770    return 0.5 * (pos * pos * (((s *= 1.525) + 1) * pos - s));
5771  }
5772
5773  return 0.5 * ((pos -= 2) * pos * (((s *= 1.525) + 1) * pos + s) + 2);
5774}
5775
5776function inElastic(pos) {
5777  var s = magicSwing;
5778  var p = 0;
5779  var a = 1;
5780
5781  if (pos === 0) {
5782    return 0;
5783  }
5784
5785  if (pos === 1) {
5786    return 1;
5787  }
5788
5789  if (!p) {
5790    p = 0.3;
5791  }
5792
5793  if (a < 1) {
5794    a = 1;
5795    s = p / 4;
5796  } else {
5797    s = p / (2 * Math.PI) * Math.asin(1 / a);
5798  }
5799
5800  return -(a * Math.pow(2, 10 * (pos -= 1)) * Math.sin((pos - s) * (2 * Math.PI) / p));
5801}
5802
5803function outElastic(pos) {
5804  var s = magicSwing;
5805  var p = 0;
5806  var a = 1;
5807
5808  if (pos === 0) {
5809    return 0;
5810  }
5811
5812  if (pos === 1) {
5813    return 1;
5814  }
5815
5816  if (!p) {
5817    p = 0.3;
5818  }
5819
5820  if (a < 1) {
5821    a = 1;
5822    s = p / 4;
5823  } else {
5824    s = p / (2 * Math.PI) * Math.asin(1 / a);
5825  }
5826
5827  return a * Math.pow(2, -10 * pos) * Math.sin((pos - s) * (2 * Math.PI) / p) + 1;
5828}
5829
5830function inOutElastic(pos) {
5831  var s = magicSwing;
5832  var p = 0;
5833  var a = 1;
5834
5835  if (pos === 0) {
5836    return 0;
5837  }
5838
5839  if ((pos /= 1 / 2) === 2) {
5840    return 1;
5841  }
5842
5843  if (!p) {
5844    p = 0.3 * 1.5;
5845  }
5846
5847  if (a < 1) {
5848    a = 1;
5849    s = p / 4;
5850  } else {
5851    s = p / (2 * Math.PI) * Math.asin(1 / a);
5852  }
5853
5854  if (pos < 1) {
5855    return -0.5 * (a * Math.pow(2, 10 * (pos -= 1)) * Math.sin((pos - s) * (2 * Math.PI) / p));
5856  }
5857
5858  return a * Math.pow(2, -10 * (pos -= 1)) * Math.sin((pos - s) * (2 * Math.PI) / p) * 0.5 + 1;
5859}
5860
5861function swingFromTo(pos) {
5862  var s = magicSwing;
5863  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);
5864}
5865
5866function swingFrom(pos) {
5867  var s = magicSwing;
5868  return pos * pos * ((s + 1) * pos - s);
5869}
5870
5871function swingTo(pos) {
5872  var s = magicSwing;
5873  return (pos -= 1) * pos * ((s + 1) * pos + s) + 1;
5874}
5875
5876function bounce(pos) {
5877  if (pos < 1 / 2.75) {
5878    return 7.5625 * pos * pos;
5879  } else if (pos < 2 / 2.75) {
5880    return 7.5625 * (pos -= 1.5 / 2.75) * pos + 0.75;
5881  } else if (pos < 2.5 / 2.75) {
5882    return 7.5625 * (pos -= 2.25 / 2.75) * pos + 0.9375;
5883  } else {
5884    return 7.5625 * (pos -= 2.625 / 2.75) * pos + 0.984375;
5885  }
5886}
5887
5888function bouncePast(pos) {
5889  if (pos < 1 / 2.75) {
5890    return 7.5625 * pos * pos;
5891  } else if (pos < 2 / 2.75) {
5892    return 2 - (7.5625 * (pos -= 1.5 / 2.75) * pos + 0.75);
5893  } else if (pos < 2.5 / 2.75) {
5894    return 2 - (7.5625 * (pos -= 2.25 / 2.75) * pos + 0.9375);
5895  } else {
5896    return 2 - (7.5625 * (pos -= 2.625 / 2.75) * pos + 0.984375);
5897  }
5898}
5899
5900/***/ }),
5901/* 86 */
5902/***/ (function(module, exports, __webpack_require__) {
5903
5904"use strict";
5905
5906
5907var _interopRequireWildcard = __webpack_require__(16);
5908
5909Object.defineProperty(exports, "__esModule", {
5910  value: true
5911});
5912exports.optimizeFloat = optimizeFloat;
5913exports.applyEasing = applyEasing;
5914
5915var easings = _interopRequireWildcard(__webpack_require__(85));
5916
5917function optimizeFloat(value) {
5918  var digits = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 5;
5919  var base = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 10;
5920  var pow = Math.pow(base, digits);
5921
5922  var _float = Number(Math.round(value * pow) / pow);
5923
5924  return Math.abs(_float) > 0.0001 ? _float : 0;
5925}
5926
5927function applyEasing(easing, position) {
5928  if (position === 0) {
5929    return 0;
5930  }
5931
5932  if (position === 1) {
5933    return 1;
5934  }
5935
5936  return optimizeFloat(position > 0 && easing && easings[easing] ? easings[easing](position) : position);
5937}
5938
5939/***/ }),
5940/* 87 */
5941/***/ (function(module, exports, __webpack_require__) {
5942
5943"use strict";
5944
5945
5946Object.defineProperty(exports, "__esModule", {
5947  value: true
5948});
5949exports.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;
5950var IX2_RAW_DATA_IMPORTED = 'IX2_RAW_DATA_IMPORTED';
5951exports.IX2_RAW_DATA_IMPORTED = IX2_RAW_DATA_IMPORTED;
5952var IX2_SESSION_INITIALIZED = 'IX2_SESSION_INITIALIZED';
5953exports.IX2_SESSION_INITIALIZED = IX2_SESSION_INITIALIZED;
5954var IX2_SESSION_STARTED = 'IX2_SESSION_STARTED';
5955exports.IX2_SESSION_STARTED = IX2_SESSION_STARTED;
5956var IX2_SESSION_STOPPED = 'IX2_SESSION_STOPPED';
5957exports.IX2_SESSION_STOPPED = IX2_SESSION_STOPPED;
5958var IX2_PREVIEW_REQUESTED = 'IX2_PREVIEW_REQUESTED';
5959exports.IX2_PREVIEW_REQUESTED = IX2_PREVIEW_REQUESTED;
5960var IX2_PLAYBACK_REQUESTED = 'IX2_PLAYBACK_REQUESTED';
5961exports.IX2_PLAYBACK_REQUESTED = IX2_PLAYBACK_REQUESTED;
5962var IX2_STOP_REQUESTED = 'IX2_STOP_REQUESTED';
5963exports.IX2_STOP_REQUESTED = IX2_STOP_REQUESTED;
5964var IX2_CLEAR_REQUESTED = 'IX2_CLEAR_REQUESTED';
5965exports.IX2_CLEAR_REQUESTED = IX2_CLEAR_REQUESTED;
5966var IX2_EVENT_LISTENER_ADDED = 'IX2_EVENT_LISTENER_ADDED';
5967exports.IX2_EVENT_LISTENER_ADDED = IX2_EVENT_LISTENER_ADDED;
5968var IX2_EVENT_STATE_CHANGED = 'IX2_EVENT_STATE_CHANGED';
5969exports.IX2_EVENT_STATE_CHANGED = IX2_EVENT_STATE_CHANGED;
5970var IX2_ANIMATION_FRAME_CHANGED = 'IX2_ANIMATION_FRAME_CHANGED';
5971exports.IX2_ANIMATION_FRAME_CHANGED = IX2_ANIMATION_FRAME_CHANGED;
5972var IX2_PARAMETER_CHANGED = 'IX2_PARAMETER_CHANGED';
5973exports.IX2_PARAMETER_CHANGED = IX2_PARAMETER_CHANGED;
5974var IX2_INSTANCE_ADDED = 'IX2_INSTANCE_ADDED';
5975exports.IX2_INSTANCE_ADDED = IX2_INSTANCE_ADDED;
5976var IX2_INSTANCE_STARTED = 'IX2_INSTANCE_STARTED';
5977exports.IX2_INSTANCE_STARTED = IX2_INSTANCE_STARTED;
5978var IX2_INSTANCE_REMOVED = 'IX2_INSTANCE_REMOVED';
5979exports.IX2_INSTANCE_REMOVED = IX2_INSTANCE_REMOVED;
5980var IX2_ELEMENT_STATE_CHANGED = 'IX2_ELEMENT_STATE_CHANGED';
5981exports.IX2_ELEMENT_STATE_CHANGED = IX2_ELEMENT_STATE_CHANGED;
5982var IX2_ACTION_LIST_PLAYBACK_CHANGED = 'IX2_ACTION_LIST_PLAYBACK_CHANGED';
5983exports.IX2_ACTION_LIST_PLAYBACK_CHANGED = IX2_ACTION_LIST_PLAYBACK_CHANGED;
5984var IX2_VIEWPORT_WIDTH_CHANGED = 'IX2_VIEWPORT_WIDTH_CHANGED';
5985exports.IX2_VIEWPORT_WIDTH_CHANGED = IX2_VIEWPORT_WIDTH_CHANGED;
5986var IX2_MEDIA_QUERIES_DEFINED = 'IX2_MEDIA_QUERIES_DEFINED';
5987exports.IX2_MEDIA_QUERIES_DEFINED = IX2_MEDIA_QUERIES_DEFINED;
5988var IX2_TEST_FRAME_RENDERED = 'IX2_TEST_FRAME_RENDERED';
5989exports.IX2_TEST_FRAME_RENDERED = IX2_TEST_FRAME_RENDERED;
5990
5991/***/ }),
5992/* 88 */
5993/***/ (function(module, exports, __webpack_require__) {
5994
5995"use strict";
5996
5997
5998Object.defineProperty(exports, "__esModule", {
5999  value: true
6000});
6001exports.ECOMMERCE_CART_CLOSE = exports.ECOMMERCE_CART_OPEN = exports.PAGE = exports.VIEWPORT = exports.ELEMENT = exports.PAGE_SCROLL = exports.PAGE_SCROLL_DOWN = exports.PAGE_SCROLL_UP = exports.PAGE_FINISH = exports.PAGE_START = exports.COMPONENT_INACTIVE = exports.COMPONENT_ACTIVE = exports.DROPDOWN_CLOSE = exports.DROPDOWN_OPEN = exports.SLIDER_INACTIVE = exports.SLIDER_ACTIVE = exports.NAVBAR_CLOSE = exports.NAVBAR_OPEN = exports.TAB_INACTIVE = exports.TAB_ACTIVE = exports.SCROLLING_IN_VIEW = exports.SCROLL_OUT_OF_VIEW = exports.SCROLL_INTO_VIEW = exports.MOUSE_MOVE = exports.MOUSE_OUT = exports.MOUSE_OVER = exports.MOUSE_UP = exports.MOUSE_DOWN = exports.MOUSE_SECOND_CLICK = exports.MOUSE_CLICK = void 0;
6002var MOUSE_CLICK = 'MOUSE_CLICK';
6003exports.MOUSE_CLICK = MOUSE_CLICK;
6004var MOUSE_SECOND_CLICK = 'MOUSE_SECOND_CLICK';
6005exports.MOUSE_SECOND_CLICK = MOUSE_SECOND_CLICK;
6006var MOUSE_DOWN = 'MOUSE_DOWN';
6007exports.MOUSE_DOWN = MOUSE_DOWN;
6008var MOUSE_UP = 'MOUSE_UP';
6009exports.MOUSE_UP = MOUSE_UP;
6010var MOUSE_OVER = 'MOUSE_OVER';
6011exports.MOUSE_OVER = MOUSE_OVER;
6012var MOUSE_OUT = 'MOUSE_OUT';
6013exports.MOUSE_OUT = MOUSE_OUT;
6014var MOUSE_MOVE = 'MOUSE_MOVE';
6015exports.MOUSE_MOVE = MOUSE_MOVE;
6016var SCROLL_INTO_VIEW = 'SCROLL_INTO_VIEW';
6017exports.SCROLL_INTO_VIEW = SCROLL_INTO_VIEW;
6018var SCROLL_OUT_OF_VIEW = 'SCROLL_OUT_OF_VIEW';
6019exports.SCROLL_OUT_OF_VIEW = SCROLL_OUT_OF_VIEW;
6020var SCROLLING_IN_VIEW = 'SCROLLING_IN_VIEW';
6021exports.SCROLLING_IN_VIEW = SCROLLING_IN_VIEW;
6022var TAB_ACTIVE = 'TAB_ACTIVE';
6023exports.TAB_ACTIVE = TAB_ACTIVE;
6024var TAB_INACTIVE = 'TAB_INACTIVE';
6025exports.TAB_INACTIVE = TAB_INACTIVE;
6026var NAVBAR_OPEN = 'NAVBAR_OPEN';
6027exports.NAVBAR_OPEN = NAVBAR_OPEN;
6028var NAVBAR_CLOSE = 'NAVBAR_CLOSE';
6029exports.NAVBAR_CLOSE = NAVBAR_CLOSE;
6030var SLIDER_ACTIVE = 'SLIDER_ACTIVE';
6031exports.SLIDER_ACTIVE = SLIDER_ACTIVE;
6032var SLIDER_INACTIVE = 'SLIDER_INACTIVE';
6033exports.SLIDER_INACTIVE = SLIDER_INACTIVE;
6034var DROPDOWN_OPEN = 'DROPDOWN_OPEN';
6035exports.DROPDOWN_OPEN = DROPDOWN_OPEN;
6036var DROPDOWN_CLOSE = 'DROPDOWN_CLOSE';
6037exports.DROPDOWN_CLOSE = DROPDOWN_CLOSE;
6038var COMPONENT_ACTIVE = 'COMPONENT_ACTIVE';
6039exports.COMPONENT_ACTIVE = COMPONENT_ACTIVE;
6040var COMPONENT_INACTIVE = 'COMPONENT_INACTIVE';
6041exports.COMPONENT_INACTIVE = COMPONENT_INACTIVE;
6042var PAGE_START = 'PAGE_START';
6043exports.PAGE_START = PAGE_START;
6044var PAGE_FINISH = 'PAGE_FINISH';
6045exports.PAGE_FINISH = PAGE_FINISH;
6046var PAGE_SCROLL_UP = 'PAGE_SCROLL_UP';
6047exports.PAGE_SCROLL_UP = PAGE_SCROLL_UP;
6048var PAGE_SCROLL_DOWN = 'PAGE_SCROLL_DOWN';
6049exports.PAGE_SCROLL_DOWN = PAGE_SCROLL_DOWN;
6050var PAGE_SCROLL = 'PAGE_SCROLL';
6051exports.PAGE_SCROLL = PAGE_SCROLL;
6052var ELEMENT = 'ELEMENT';
6053exports.ELEMENT = ELEMENT;
6054var VIEWPORT = 'VIEWPORT';
6055exports.VIEWPORT = VIEWPORT;
6056var PAGE = 'PAGE';
6057exports.PAGE = PAGE;
6058var ECOMMERCE_CART_OPEN = 'ECOMMERCE_CART_OPEN';
6059exports.ECOMMERCE_CART_OPEN = ECOMMERCE_CART_OPEN;
6060var ECOMMERCE_CART_CLOSE = 'ECOMMERCE_CART_CLOSE';
6061exports.ECOMMERCE_CART_CLOSE = ECOMMERCE_CART_CLOSE;
6062
6063/***/ }),
6064/* 89 */
6065/***/ (function(module, exports, __webpack_require__) {
6066
6067"use strict";
6068
6069
6070var _interopRequireDefault = __webpack_require__(0);
6071
6072var _defineProperty2 = _interopRequireDefault(__webpack_require__(14));
6073
6074Object.defineProperty(exports, "__esModule", {
6075  value: true
6076});
6077exports.isPluginType = isPluginType;
6078exports.clearPlugin = exports.renderPlugin = exports.createPluginInstance = exports.getPluginDestination = exports.getPluginOrigin = exports.getPluginConfig = void 0;
6079
6080var _IX2LottieUtils = __webpack_require__(186);
6081
6082var _IX2EngineItemTypes = __webpack_require__(49);
6083
6084var _IX2BrowserSupport = __webpack_require__(32); // eslint-disable-next-line webflow/module-top-level-imports, webflow/packages-must-be-defined
6085
6086
6087var pluginMethodMap = (0, _defineProperty2["default"])({}, _IX2EngineItemTypes.PLUGIN_LOTTIE, {
6088  getConfig: _IX2LottieUtils.getPluginConfig,
6089  getOrigin: _IX2LottieUtils.getPluginOrigin,
6090  getDestination: _IX2LottieUtils.getPluginDestination,
6091  createInstance: _IX2LottieUtils.createPluginInstance,
6092  render: _IX2LottieUtils.renderPlugin,
6093  clear: _IX2LottieUtils.clearPlugin
6094});
6095
6096function isPluginType(actionTypeId) {
6097  return actionTypeId === _IX2EngineItemTypes.PLUGIN_LOTTIE;
6098}
6099
6100var pluginMethod = function pluginMethod(methodName) {
6101  return function (actionTypeId) {
6102    if (!_IX2BrowserSupport.IS_BROWSER_ENV) {
6103      // IX2 plugins require browser libs for now
6104      return function () {
6105        return null;
6106      };
6107    }
6108
6109    var plugin = pluginMethodMap[actionTypeId];
6110
6111    if (!plugin) {
6112      throw new Error("IX2 no plugin configured for: ".concat(actionTypeId));
6113    }
6114
6115    var method = plugin[methodName];
6116
6117    if (!method) {
6118      throw new Error("IX2 invalid plugin method: ".concat(methodName));
6119    }
6120
6121    return method;
6122  };
6123};
6124
6125var getPluginConfig = pluginMethod('getConfig');
6126exports.getPluginConfig = getPluginConfig;
6127var getPluginOrigin = pluginMethod('getOrigin');
6128exports.getPluginOrigin = getPluginOrigin;
6129var getPluginDestination = pluginMethod('getDestination');
6130exports.getPluginDestination = getPluginDestination;
6131var createPluginInstance = pluginMethod('createInstance');
6132exports.createPluginInstance = createPluginInstance;
6133var renderPlugin = pluginMethod('render');
6134exports.renderPlugin = renderPlugin;
6135var clearPlugin = pluginMethod('clear');
6136exports.clearPlugin = clearPlugin;
6137
6138/***/ }),
6139/* 90 */
6140/***/ (function(module, exports, __webpack_require__) {
6141
6142var baseForOwn = __webpack_require__(91),
6143    createBaseEach = __webpack_require__(193);
6144
6145/**
6146 * The base implementation of `_.forEach` without support for iteratee shorthands.
6147 *
6148 * @private
6149 * @param {Array|Object} collection The collection to iterate over.
6150 * @param {Function} iteratee The function invoked per iteration.
6151 * @returns {Array|Object} Returns `collection`.
6152 */
6153var baseEach = createBaseEach(baseForOwn);
6154
6155module.exports = baseEach;
6156
6157
6158/***/ }),
6159/* 91 */
6160/***/ (function(module, exports, __webpack_require__) {
6161
6162var baseFor = __webpack_require__(191),
6163    keys = __webpack_require__(21);
6164
6165/**
6166 * The base implementation of `_.forOwn` without support for iteratee shorthands.
6167 *
6168 * @private
6169 * @param {Object} object The object to iterate over.
6170 * @param {Function} iteratee The function invoked per iteration.
6171 * @returns {Object} Returns `object`.
6172 */
6173function baseForOwn(object, iteratee) {
6174  return object && baseFor(object, iteratee, keys);
6175}
6176
6177module.exports = baseForOwn;
6178
6179
6180/***/ }),
6181/* 92 */
6182/***/ (function(module, exports, __webpack_require__) {
6183
6184"use strict";
6185
6186
6187exports.__esModule = true;
6188
6189var _shallowEqual = __webpack_require__(197);
6190
6191var _shallowEqual2 = _interopRequireDefault(_shallowEqual);
6192
6193function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6194
6195exports.default = _shallowEqual2.default;
6196
6197/***/ }),
6198/* 93 */
6199/***/ (function(module, exports, __webpack_require__) {
6200
6201"use strict";
6202
6203
6204var _interopRequireDefault2 = __webpack_require__(0);
6205
6206var _toConsumableArray2 = _interopRequireDefault2(__webpack_require__(202));
6207
6208var _interopRequireWildcard = __webpack_require__(16);
6209
6210var _interopRequireDefault = __webpack_require__(0);
6211
6212Object.defineProperty(exports, "__esModule", {
6213  value: true
6214});
6215exports.observeRequests = observeRequests;
6216exports.startEngine = startEngine;
6217exports.stopEngine = stopEngine;
6218exports.stopAllActionGroups = stopAllActionGroups;
6219exports.stopActionGroup = stopActionGroup;
6220exports.startActionGroup = startActionGroup;
6221
6222var _objectSpread2 = _interopRequireDefault(__webpack_require__(26));
6223
6224var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(206));
6225
6226var _find = _interopRequireDefault(__webpack_require__(63));
6227
6228var _get = _interopRequireDefault(__webpack_require__(23));
6229
6230var _size = _interopRequireDefault(__webpack_require__(208));
6231
6232var _omitBy = _interopRequireDefault(__webpack_require__(214));
6233
6234var _isEmpty = _interopRequireDefault(__webpack_require__(226));
6235
6236var _mapValues = _interopRequireDefault(__webpack_require__(227));
6237
6238var _forEach = _interopRequireDefault(__webpack_require__(228));
6239
6240var _endsWith = _interopRequireDefault(__webpack_require__(231));
6241
6242var _throttle = _interopRequireDefault(__webpack_require__(232));
6243
6244var _shallowEqual = _interopRequireDefault(__webpack_require__(92));
6245
6246var _shared = __webpack_require__(3);
6247
6248var _IX2EngineActions = __webpack_require__(51);
6249
6250var elementApi = _interopRequireWildcard(__webpack_require__(235));
6251
6252var _IX2VanillaEvents = _interopRequireDefault(__webpack_require__(236));
6253/* eslint-env browser */
6254
6255
6256var _shared$IX2EngineEven = _shared.IX2EngineEventTypes,
6257    MOUSE_CLICK = _shared$IX2EngineEven.MOUSE_CLICK,
6258    MOUSE_SECOND_CLICK = _shared$IX2EngineEven.MOUSE_SECOND_CLICK;
6259var _shared$IX2EngineCons = _shared.IX2EngineConstants,
6260    COLON_DELIMITER = _shared$IX2EngineCons.COLON_DELIMITER,
6261    BOUNDARY_SELECTOR = _shared$IX2EngineCons.BOUNDARY_SELECTOR,
6262    HTML_ELEMENT = _shared$IX2EngineCons.HTML_ELEMENT,
6263    RENDER_GENERAL = _shared$IX2EngineCons.RENDER_GENERAL,
6264    W_MOD_IX = _shared$IX2EngineCons.W_MOD_IX;
6265var _shared$IX2EngineItem = _shared.IX2EngineItemTypes,
6266    GENERAL_START_ACTION = _shared$IX2EngineItem.GENERAL_START_ACTION,
6267    GENERAL_CONTINUOUS_ACTION = _shared$IX2EngineItem.GENERAL_CONTINUOUS_ACTION;
6268var _shared$IX2VanillaUti = _shared.IX2VanillaUtils,
6269    getAffectedElements = _shared$IX2VanillaUti.getAffectedElements,
6270    getElementId = _shared$IX2VanillaUti.getElementId,
6271    getDestinationValues = _shared$IX2VanillaUti.getDestinationValues,
6272    observeStore = _shared$IX2VanillaUti.observeStore,
6273    getInstanceId = _shared$IX2VanillaUti.getInstanceId,
6274    renderHTMLElement = _shared$IX2VanillaUti.renderHTMLElement,
6275    clearAllStyles = _shared$IX2VanillaUti.clearAllStyles,
6276    getMaxDurationItemIndex = _shared$IX2VanillaUti.getMaxDurationItemIndex,
6277    getComputedStyle = _shared$IX2VanillaUti.getComputedStyle,
6278    getInstanceOrigin = _shared$IX2VanillaUti.getInstanceOrigin,
6279    reduceListToGroup = _shared$IX2VanillaUti.reduceListToGroup,
6280    shouldNamespaceEventParameter = _shared$IX2VanillaUti.shouldNamespaceEventParameter,
6281    getNamespacedParameterId = _shared$IX2VanillaUti.getNamespacedParameterId,
6282    shouldAllowMediaQuery = _shared$IX2VanillaUti.shouldAllowMediaQuery,
6283    cleanupHTMLElement = _shared$IX2VanillaUti.cleanupHTMLElement,
6284    stringifyTarget = _shared$IX2VanillaUti.stringifyTarget,
6285    mediaQueriesEqual = _shared$IX2VanillaUti.mediaQueriesEqual;
6286var _shared$IX2VanillaPlu = _shared.IX2VanillaPlugins,
6287    isPluginType = _shared$IX2VanillaPlu.isPluginType,
6288    createPluginInstance = _shared$IX2VanillaPlu.createPluginInstance;
6289var ua = navigator.userAgent;
6290var IS_MOBILE_SAFARI = ua.match(/iPad/i) || ua.match(/iPhone/); // Keep throttled events at ~80fps to reduce reflows while maintaining render accuracy
6291
6292var THROTTLED_EVENT_WAIT = 12;
6293
6294function observeRequests(store) {
6295  observeStore({
6296    store: store,
6297    select: function select(_ref) {
6298      var ixRequest = _ref.ixRequest;
6299      return ixRequest.preview;
6300    },
6301    onChange: handlePreviewRequest
6302  });
6303  observeStore({
6304    store: store,
6305    select: function select(_ref2) {
6306      var ixRequest = _ref2.ixRequest;
6307      return ixRequest.playback;
6308    },
6309    onChange: handlePlaybackRequest
6310  });
6311  observeStore({
6312    store: store,
6313    select: function select(_ref3) {
6314      var ixRequest = _ref3.ixRequest;
6315      return ixRequest.stop;
6316    },
6317    onChange: handleStopRequest
6318  });
6319  observeStore({
6320    store: store,
6321    select: function select(_ref4) {
6322      var ixRequest = _ref4.ixRequest;
6323      return ixRequest.clear;
6324    },
6325    onChange: handleClearRequest
6326  });
6327}
6328
6329function observeMediaQueryChange(store) {
6330  observeStore({
6331    store: store,
6332    select: function select(_ref5) {
6333      var ixSession = _ref5.ixSession;
6334      return ixSession.mediaQueryKey;
6335    },
6336    onChange: function onChange() {
6337      stopEngine(store);
6338      clearAllStyles({
6339        store: store,
6340        elementApi: elementApi
6341      });
6342      startEngine({
6343        store: store,
6344        allowEvents: true
6345      });
6346      dispatchPageUpdateEvent();
6347    }
6348  });
6349}
6350
6351function observeOneRenderTick(store, onTick) {
6352  var unsubscribe = observeStore({
6353    store: store,
6354    select: function select(_ref6) {
6355      var ixSession = _ref6.ixSession;
6356      return ixSession.tick;
6357    },
6358    onChange: function onChange(tick) {
6359      onTick(tick);
6360      unsubscribe();
6361    }
6362  });
6363}
6364
6365function handlePreviewRequest(_ref7, store) {
6366  var rawData = _ref7.rawData;
6367  startEngine({
6368    store: store,
6369    rawData: rawData,
6370    allowEvents: true
6371  });
6372  dispatchPageUpdateEvent();
6373}
6374
6375function dispatchPageUpdateEvent() {
6376  document.dispatchEvent(new CustomEvent('IX2_PAGE_UPDATE'));
6377}
6378
6379function isQuickEffect(id) {
6380  return id && (0, _endsWith["default"])(id, '_EFFECT');
6381}
6382
6383function handlePlaybackRequest(playback, store) {
6384  var actionTypeId = playback.actionTypeId,
6385      actionListId = playback.actionListId,
6386      actionItemId = playback.actionItemId,
6387      eventId = playback.eventId,
6388      allowEvents = playback.allowEvents,
6389      immediate = playback.immediate,
6390      testManual = playback.testManual,
6391      _playback$verbose = playback.verbose,
6392      verbose = _playback$verbose === void 0 ? true : _playback$verbose;
6393  var rawData = playback.rawData;
6394
6395  if (actionListId && actionItemId && rawData && immediate) {
6396    rawData = reduceListToGroup({
6397      actionListId: actionListId,
6398      actionItemId: actionItemId,
6399      rawData: rawData
6400    });
6401  }
6402
6403  startEngine({
6404    store: store,
6405    rawData: rawData,
6406    allowEvents: allowEvents,
6407    testManual: testManual
6408  });
6409
6410  if (actionListId && actionTypeId === GENERAL_START_ACTION || isQuickEffect(actionTypeId)) {
6411    stopActionGroup({
6412      store: store,
6413      actionListId: actionListId
6414    });
6415    renderInitialGroup({
6416      store: store,
6417      actionListId: actionListId,
6418      eventId: eventId
6419    });
6420    var started = startActionGroup({
6421      store: store,
6422      eventId: eventId,
6423      actionListId: actionListId,
6424      immediate: immediate,
6425      verbose: verbose
6426    });
6427
6428    if (verbose && started) {
6429      store.dispatch((0, _IX2EngineActions.actionListPlaybackChanged)({
6430        actionListId: actionListId,
6431        isPlaying: !immediate
6432      }));
6433    }
6434  }
6435}
6436
6437function handleStopRequest(_ref8, store) {
6438  var actionListId = _ref8.actionListId;
6439
6440  if (actionListId) {
6441    stopActionGroup({
6442      store: store,
6443      actionListId: actionListId
6444    });
6445  } else {
6446    stopAllActionGroups({
6447      store: store
6448    });
6449  }
6450
6451  stopEngine(store);
6452}
6453
6454function handleClearRequest(state, store) {
6455  stopEngine(store);
6456  clearAllStyles({
6457    store: store,
6458    elementApi: elementApi
6459  });
6460}
6461
6462function startEngine(_ref9) {
6463  var store = _ref9.store,
6464      rawData = _ref9.rawData,
6465      allowEvents = _ref9.allowEvents,
6466      testManual = _ref9.testManual;
6467
6468  var _store$getState = store.getState(),
6469      ixSession = _store$getState.ixSession;
6470
6471  if (rawData) {
6472    store.dispatch((0, _IX2EngineActions.rawDataImported)(rawData));
6473  }
6474
6475  if (!ixSession.active) {
6476    store.dispatch((0, _IX2EngineActions.sessionInitialized)({
6477      hasBoundaryNodes: Boolean(document.querySelector(BOUNDARY_SELECTOR))
6478    }));
6479
6480    if (allowEvents) {
6481      bindEvents(store);
6482      addDocumentClass();
6483
6484      if (store.getState().ixSession.hasDefinedMediaQueries) {
6485        observeMediaQueryChange(store);
6486      }
6487    }
6488
6489    store.dispatch((0, _IX2EngineActions.sessionStarted)());
6490    startRenderLoop(store, testManual);
6491  }
6492}
6493
6494function addDocumentClass() {
6495  var _document = document,
6496      documentElement = _document.documentElement;
6497
6498  if (documentElement.className.indexOf(W_MOD_IX) === -1) {
6499    documentElement.className += " ".concat(W_MOD_IX);
6500  }
6501}
6502
6503function startRenderLoop(store, testManual) {
6504  var handleFrame = function handleFrame(now) {
6505    var _store$getState2 = store.getState(),
6506        ixSession = _store$getState2.ixSession,
6507        ixParameters = _store$getState2.ixParameters;
6508
6509    if (ixSession.active) {
6510      store.dispatch((0, _IX2EngineActions.animationFrameChanged)(now, ixParameters));
6511
6512      if (testManual) {
6513        observeOneRenderTick(store, handleFrame);
6514      } else {
6515        requestAnimationFrame(handleFrame);
6516      }
6517    }
6518  };
6519
6520  handleFrame(window.performance.now());
6521}
6522
6523function stopEngine(store) {
6524  var _store$getState3 = store.getState(),
6525      ixSession = _store$getState3.ixSession;
6526
6527  if (ixSession.active) {
6528    var eventListeners = ixSession.eventListeners;
6529    eventListeners.forEach(clearEventListener);
6530    store.dispatch((0, _IX2EngineActions.sessionStopped)());
6531  }
6532}
6533
6534function clearEventListener(_ref10) {
6535  var target = _ref10.target,
6536      listenerParams = _ref10.listenerParams;
6537  target.removeEventListener.apply(target, listenerParams);
6538}
6539
6540function createGroupInstances(_ref11) {
6541  var store = _ref11.store,
6542      eventStateKey = _ref11.eventStateKey,
6543      eventTarget = _ref11.eventTarget,
6544      eventId = _ref11.eventId,
6545      eventConfig = _ref11.eventConfig,
6546      actionListId = _ref11.actionListId,
6547      parameterGroup = _ref11.parameterGroup,
6548      smoothing = _ref11.smoothing,
6549      restingValue = _ref11.restingValue;
6550
6551  var _store$getState4 = store.getState(),
6552      ixData = _store$getState4.ixData,
6553      ixSession = _store$getState4.ixSession;
6554
6555  var events = ixData.events;
6556  var event = events[eventId];
6557  var eventTypeId = event.eventTypeId;
6558  var targetCache = {};
6559  var instanceActionGroups = {};
6560  var instanceConfigs = [];
6561  var continuousActionGroups = parameterGroup.continuousActionGroups;
6562  var parameterId = parameterGroup.id;
6563
6564  if (shouldNamespaceEventParameter(eventTypeId, eventConfig)) {
6565    parameterId = getNamespacedParameterId(eventStateKey, parameterId);
6566  } // Limit affected elements when event target is within a boundary node
6567
6568
6569  var eventElementRoot = ixSession.hasBoundaryNodes && eventTarget ? elementApi.getClosestElement(eventTarget, BOUNDARY_SELECTOR) : null;
6570  continuousActionGroups.forEach(function (actionGroup) {
6571    var keyframe = actionGroup.keyframe,
6572        actionItems = actionGroup.actionItems;
6573    actionItems.forEach(function (actionItem) {
6574      var actionTypeId = actionItem.actionTypeId;
6575      var target = actionItem.config.target;
6576
6577      if (!target) {
6578        return;
6579      }
6580
6581      var elementRoot = target.boundaryMode ? eventElementRoot : null;
6582      var key = stringifyTarget(target) + COLON_DELIMITER + actionTypeId;
6583      instanceActionGroups[key] = appendActionItem(instanceActionGroups[key], keyframe, actionItem);
6584
6585      if (!targetCache[key]) {
6586        targetCache[key] = true;
6587        var config = actionItem.config;
6588        getAffectedElements({
6589          config: config,
6590          event: event,
6591          eventTarget: eventTarget,
6592          elementRoot: elementRoot,
6593          elementApi: elementApi
6594        }
6594).forEach(function (element) {
6595          instanceConfigs.push({
6596            element: element,
6597            key: key
6598          });
6599        });
6600      }
6601    });
6602  });
6603  instanceConfigs.forEach(function (_ref12) {
6604    var element = _ref12.element,
6605        key = _ref12.key;
6606    var actionGroups = instanceActionGroups[key];
6607    var actionItem = (0, _get["default"])(actionGroups, "[0].actionItems[0]", {});
6608    var actionTypeId = actionItem.actionTypeId;
6609    var pluginInstance = isPluginType(actionTypeId) ? createPluginInstance(actionTypeId)(element, actionItem) : null;
6610    var destination = getDestinationValues({
6611      element: element,
6612      actionItem: actionItem,
6613      elementApi: elementApi
6614    }, pluginInstance);
6615    createInstance({
6616      store: store,
6617      element: element,
6618      eventId: eventId,
6619      actionListId: actionListId,
6620      actionItem: actionItem,
6621      destination: destination,
6622      continuous: true,
6623      parameterId: parameterId,
6624      actionGroups: actionGroups,
6625      smoothing: smoothing,
6626      restingValue: restingValue,
6627      pluginInstance: pluginInstance
6628    });
6629  });
6630}
6631
6632function appendActionItem() {
6633  var actionGroups = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
6634  var keyframe = arguments.length > 1 ? arguments[1] : undefined;
6635  var actionItem = arguments.length > 2 ? arguments[2] : undefined;
6636  var newActionGroups = (0, _toConsumableArray2["default"])(actionGroups);
6637  var groupIndex;
6638  newActionGroups.some(function (group, index) {
6639    if (group.keyframe === keyframe) {
6640      groupIndex = index;
6641      return true;
6642    }
6643
6644    return false;
6645  });
6646
6647  if (groupIndex == null) {
6648    groupIndex = newActionGroups.length;
6649    newActionGroups.push({
6650      keyframe: keyframe,
6651      actionItems: []
6652    });
6653  }
6654
6655  newActionGroups[groupIndex].actionItems.push(actionItem);
6656  return newActionGroups;
6657}
6658
6659function bindEvents(store) {
6660  var _store$getState5 = store.getState(),
6661      ixData = _store$getState5.ixData;
6662
6663  var eventTypeMap = ixData.eventTypeMap;
6664  updateViewportWidth(store);
6665  (0, _forEach["default"])(eventTypeMap, function (events, key) {
6666    var logic = _IX2VanillaEvents["default"][key];
6667
6668    if (!logic) {
6669      console.warn("IX2 event type not configured: ".concat(key));
6670      return;
6671    }
6672
6673    bindEventType({
6674      logic: logic,
6675      store: store,
6676      events: events
6677    });
6678  });
6679
6680  var _store$getState6 = store.getState(),
6681      ixSession = _store$getState6.ixSession;
6682
6683  if (ixSession.eventListeners.length) {
6684    bindResizeEvents(store);
6685  }
6686}
6687
6688var WINDOW_RESIZE_EVENTS = ['resize', 'orientationchange'];
6689
6690function bindResizeEvents(store) {
6691  var handleResize = function handleResize() {
6692    updateViewportWidth(store);
6693  };
6694
6695  WINDOW_RESIZE_EVENTS.forEach(function (type) {
6696    window.addEventListener(type, handleResize);
6697    store.dispatch((0, _IX2EngineActions.eventListenerAdded)(window, [type, handleResize]));
6698  });
6699  handleResize();
6700}
6701
6702function updateViewportWidth(store) {
6703  var _store$getState7 = store.getState(),
6704      ixSession = _store$getState7.ixSession,
6705      ixData = _store$getState7.ixData;
6706
6707  var width = window.innerWidth;
6708
6709  if (width !== ixSession.viewportWidth) {
6710    var mediaQueries = ixData.mediaQueries;
6711    store.dispatch((0, _IX2EngineActions.viewportWidthChanged)({
6712      width: width,
6713      mediaQueries: mediaQueries
6714    }));
6715  }
6716}
6717
6718var mapFoundValues = function mapFoundValues(object, iteratee) {
6719  return (0, _omitBy["default"])((0, _mapValues["default"])(object, iteratee), _isEmpty["default"]);
6720};
6721
6722var forEachEventTarget = function forEachEventTarget(eventTargets, eventCallback) {
6723  (0, _forEach["default"])(eventTargets, function (elements, eventId) {
6724    elements.forEach(function (element, index) {
6725      var eventStateKey = eventId + COLON_DELIMITER + index;
6726      eventCallback(element, eventId, eventStateKey);
6727    });
6728  });
6729};
6730
6731var getAffectedForEvent = function getAffectedForEvent(event) {
6732  var config = {
6733    target: event.target
6734  };
6735  return getAffectedElements({
6736    config: config,
6737    elementApi: elementApi
6738  });
6739};
6740
6741function bindEventType(_ref13) {
6742  var logic = _ref13.logic,
6743      store = _ref13.store,
6744      events = _ref13.events;
6745  injectBehaviorCSSFixes(events);
6746  var eventTypes = logic.types,
6747      eventHandler = logic.handler;
6748
6749  var _store$getState8 = store.getState(),
6750      ixData = _store$getState8.ixData;
6751
6752  var actionLists = ixData.actionLists;
6753  var eventTargets = mapFoundValues(events, getAffectedForEvent);
6754
6755  if (!(0, _size["default"])(eventTargets)) {
6756    return;
6757  }
6758
6759  (0, _forEach["default"])(eventTargets, function (elements, key) {
6760    var event = events[key];
6761    var eventAction = event.action,
6762        eventId = event.id,
6763        _event$mediaQueries = event.mediaQueries,
6764        mediaQueries = _event$mediaQueries === void 0 ? ixData.mediaQueryKeys : _event$mediaQueries;
6765    var actionListId = eventAction.config.actionListId;
6766
6767    if (!mediaQueriesEqual(mediaQueries, ixData.mediaQueryKeys)) {
6768      store.dispatch((0, _IX2EngineActions.mediaQueriesDefined)());
6769    }
6770
6771    if (eventAction.actionTypeId === GENERAL_CONTINUOUS_ACTION) {
6772      var configs = Array.isArray(event.config) ? event.config : [event.config];
6773      configs.forEach(function (eventConfig) {
6774        var continuousParameterGroupId = eventConfig.continuousParameterGroupId;
6775        var paramGroups = (0, _get["default"])(actionLists, "".concat(actionListId, ".continuousParameterGroups"), []);
6776        var parameterGroup = (0, _find["default"])(paramGroups, function (_ref14) {
6777          var id = _ref14.id;
6778          return id === continuousParameterGroupId;
6779        });
6780        var smoothing = (eventConfig.smoothing || 0) / 100;
6781        var restingValue = (eventConfig.restingState || 0) / 100;
6782
6783        if (!parameterGroup) {
6784          return;
6785        }
6786
6787        elements.forEach(function (eventTarget, index) {
6788          var eventStateKey = eventId + COLON_DELIMITER + index;
6789          createGroupInstances({
6790            store: store,
6791            eventStateKey: eventStateKey,
6792            eventTarget: eventTarget,
6793            eventId: eventId,
6794            eventConfig: eventConfig,
6795            actionListId: actionListId,
6796            parameterGroup: parameterGroup,
6797            smoothing: smoothing,
6798            restingValue: restingValue
6799          });
6800        });
6801      });
6802    }
6803
6804    if (eventAction.actionTypeId === GENERAL_START_ACTION || isQuickEffect(eventAction.actionTypeId)) {
6805      renderInitialGroup({
6806        store: store,
6807        actionListId: actionListId,
6808        eventId: eventId
6809      });
6810    }
6811  });
6812
6813  var handleEvent = function handleEvent(nativeEvent) {
6814    var _store$getState9 = store.getState(),
6815        ixSession = _store$getState9.ixSession;
6816
6817    forEachEventTarget(eventTargets, function (element, eventId, eventStateKey) {
6818      var event = events[eventId];
6819      var oldState = ixSession.eventState[eventStateKey];
6820      var eventAction = event.action,
6821          _event$mediaQueries2 = event.mediaQueries,
6822          mediaQueries = _event$mediaQueries2 === void 0 ? ixData.mediaQueryKeys : _event$mediaQueries2; // Bypass event handler if current media query is not listed in event config
6823
6824      if (!shouldAllowMediaQuery(mediaQueries, ixSession.mediaQueryKey)) {
6825        return;
6826      }
6827
6828      var handleEventWithConfig = function handleEventWithConfig() {
6829        var eventConfig = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
6830        var newState = eventHandler({
6831          store: store,
6832          element: element,
6833          event: event,
6834          eventConfig: eventConfig,
6835          nativeEvent: nativeEvent,
6836          eventStateKey: eventStateKey
6837        }, oldState);
6838
6839        if (!(0, _shallowEqual["default"])(newState, oldState)) {
6840          store.dispatch((0, _IX2EngineActions.eventStateChanged)(eventStateKey, newState));
6841        }
6842      };
6843
6844      if (eventAction.actionTypeId === GENERAL_CONTINUOUS_ACTION) {
6845        var configs = Array.isArray(event.config) ? event.config : [event.config];
6846        configs.forEach(handleEventWithConfig);
6847      } else {
6848        handleEventWithConfig();
6849      }
6850    });
6851  };
6852
6853  var handleEventThrottled = (0, _throttle["default"])(handleEvent, THROTTLED_EVENT_WAIT);
6854
6855  var addListeners = function addListeners(_ref15) {
6856    var _ref15$target = _ref15.target,
6857        target = _ref15$target === void 0 ? document : _ref15$target,
6858        types = _ref15.types,
6859        shouldThrottle = _ref15.throttle;
6860    types.split(' ').filter(Boolean).forEach(function (type) {
6861      var handlerFunc = shouldThrottle ? handleEventThrottled : handleEvent;
6862      target.addEventListener(type, handlerFunc);
6863      store.dispatch((0, _IX2EngineActions.eventListenerAdded)(target, [type, handlerFunc]));
6864    });
6865  };
6866
6867  if (Array.isArray(eventTypes)) {
6868    eventTypes.forEach(addListeners);
6869  } else if (typeof eventTypes === 'string') {
6870    addListeners(logic);
6871  }
6872}
6873/**
6874 * Injects CSS into the document to fix behavior issues across
6875 * different devices.
6876 */
6877
6878
6879function injectBehaviorCSSFixes(events) {
6880  if (!IS_MOBILE_SAFARI) {
6881    return;
6882  }
6883
6884  var injectedSelectors = {};
6885  var cssText = '';
6886
6887  for (var eventId in events) {
6888    var _events$eventId = events[eventId],
6889        eventTypeId = _events$eventId.eventTypeId,
6890        target = _events$eventId.target;
6891    var selector = elementApi.getQuerySelector(target);
6892
6893    if (injectedSelectors[selector]) {
6894      continue;
6895    } // add a "cursor: pointer" style rule to ensure that CLICK events get fired for IOS devices
6896
6897
6898    if (eventTypeId === MOUSE_CLICK || eventTypeId === MOUSE_SECOND_CLICK) {
6899      injectedSelectors[selector] = true;
6900      cssText += selector + '{' + 'cursor: pointer;' + 'touch-action: manipulation;' + '}';
6901    }
6902  }
6903
6904  if (cssText) {
6905    var style = document.createElement('style');
6906    style.textContent = cssText;
6907    document.body.appendChild(style);
6908  }
6909}
6910
6911function renderInitialGroup(_ref16) {
6912  var store = _ref16.store,
6913      actionListId = _ref16.actionListId,
6914      eventId = _ref16.eventId;
6915
6916  var _store$getState10 = store.getState(),
6917      ixData = _store$getState10.ixData,
6918      ixSession = _store$getState10.ixSession;
6919
6920  var actionLists = ixData.actionLists,
6921      events = ixData.events;
6922  var event = events[eventId];
6923  var actionList = actionLists[actionListId];
6924
6925  if (actionList && actionList.useFirstGroupAsInitialState) {
6926    var initialStateItems = (0, _get["default"])(actionList, 'actionItemGroups[0].actionItems', []); // Bypass initial state render if current media query is not listed in event config
6927
6928    var mediaQueries = (0, _get["default"])(event, 'mediaQueries', ixData.mediaQueryKeys);
6929
6930    if (!shouldAllowMediaQuery(mediaQueries, ixSession.mediaQueryKey)) {
6931      return;
6932    }
6933
6934    initialStateItems.forEach(function (actionItem) {
6935      var config = actionItem.config,
6936          actionTypeId = actionItem.actionTypeId;
6937      var itemElements = getAffectedElements({
6938        config: config,
6939        event: event,
6940        elementApi: elementApi
6941      });
6942      var shouldUsePlugin = isPluginType(actionTypeId);
6943      itemElements.forEach(function (element) {
6944        var pluginInstance = shouldUsePlugin ? createPluginInstance(actionTypeId)(element, actionItem) : null;
6945        createInstance({
6946          destination: getDestinationValues({
6947            element: element,
6948            actionItem: actionItem,
6949            elementApi: elementApi
6950          }, pluginInstance),
6951          immediate: true,
6952          store: store,
6953          element: element,
6954          eventId: eventId,
6955          actionItem: actionItem,
6956          actionListId: actionListId,
6957          pluginInstance: pluginInstance
6958        });
6959      });
6960    });
6961  }
6962}
6963
6964function stopAllActionGroups(_ref17) {
6965  var store = _ref17.store;
6966
6967  var _store$getState11 = store.getState(),
6968      ixInstances = _store$getState11.ixInstances;
6969
6970  (0, _forEach["default"])(ixInstances, function (instance) {
6971    if (!instance.continuous) {
6972      var actionListId = instance.actionListId,
6973          verbose = instance.verbose;
6974      removeInstance(instance, store);
6975
6976      if (verbose) {
6977        store.dispatch((0, _IX2EngineActions.actionListPlaybackChanged)({
6978          actionListId: actionListId,
6979          isPlaying: false
6980        }));
6981      }
6982    }
6983  });
6984}
6985
6986function stopActionGroup(_ref18) {
6987  var store = _ref18.store,
6988      eventId = _ref18.eventId,
6989      eventTarget = _ref18.eventTarget,
6990      eventStateKey = _ref18.eventStateKey,
6991      actionListId = _ref18.actionListId;
6992
6993  var _store$getState12 = store.getState(),
6994      ixInstances = _store$getState12.ixInstances,
6995      ixSession = _store$getState12.ixSession; // Check for element boundary before stopping engine instances
6996
6997
6998  var eventElementRoot = ixSession.hasBoundaryNodes && eventTarget ? elementApi.getClosestElement(eventTarget, BOUNDARY_SELECTOR) : null;
6999  (0, _forEach["default"])(ixInstances, function (instance) {
7000    var boundaryMode = (0, _get["default"])(instance, 'actionItem.config.target.boundaryMode'); // Validate event key if eventStateKey was provided, otherwise default to true
7001
7002    var validEventKey = eventStateKey ? instance.eventStateKey === eventStateKey : true; // Remove engine instances that match the required ids
7003
7004    if (instance.actionListId === actionListId && instance.eventId === eventId && validEventKey) {
7005      // Avoid removal when root boundary does not contain instance element
7006      if (eventElementRoot && boundaryMode && !elementApi.elementContains(eventElementRoot, instance.element)) {
7007        return;
7008      }
7009
7010      removeInstance(instance, store);
7011
7012      if (instance.verbose) {
7013        store.dispatch((0, _IX2EngineActions.actionListPlaybackChanged)({
7014          actionListId: actionListId,
7015          isPlaying: false
7016        }));
7017      }
7018    }
7019  });
7020}
7021
7022function startActionGroup(_ref19) {
7023  var store = _ref19.store,
7024      eventId = _ref19.eventId,
7025      eventTarget = _ref19.eventTarget,
7026      eventStateKey = _ref19.eventStateKey,
7027      actionListId = _ref19.actionListId,
7028      _ref19$groupIndex = _ref19.groupIndex,
7029      groupIndex = _ref19$groupIndex === void 0 ? 0 : _ref19$groupIndex,
7030      immediate = _ref19.immediate,
7031      verbose = _ref19.verbose;
7032
7033  var _store$getState13 = store.getState(),
7034      ixData = _store$getState13.ixData,
7035      ixSession = _store$getState13.ixSession;
7036
7037  var events = ixData.events;
7038  var event = events[eventId] || {};
7039  var _event$mediaQueries3 = event.mediaQueries,
7040      mediaQueries = _event$mediaQueries3 === void 0 ? ixData.mediaQueryKeys : _event$mediaQueries3;
7041  var actionList = (0, _get["default"])(ixData, "actionLists.".concat(actionListId), {});
7042  var actionItemGroups = actionList.actionItemGroups,
7043      useFirstGroupAsInitialState = actionList.useFirstGroupAsInitialState; // Reset to first group when event loop is configured
7044
7045  if (groupIndex >= actionItemGroups.length && (0, _get["default"])(event, 'config.loop')) {
7046    groupIndex = 0;
7047  } // Skip initial state group during action list playback, as it should already be applied
7048
7049
7050  if (groupIndex === 0 && useFirstGroupAsInitialState) {
7051    groupIndex++;
7052  } // Identify first animated group and apply the initial QuickEffect delay
7053
7054
7055  var isFirstGroup = groupIndex === 0 || groupIndex === 1 && useFirstGroupAsInitialState;
7056  var instanceDelay = isFirstGroup && isQuickEffect(event.action && event.action.actionTypeId) ? event.config.delay : undefined; // Abort playback if no action items exist at group index
7057
7058  var actionItems = (0, _get["default"])(actionItemGroups, [groupIndex, 'actionItems'], []);
7059
7060  if (!actionItems.length) {
7061    return false;
7062  } // Abort playback if current media query is not listed in event config
7063
7064
7065  if (!shouldAllowMediaQuery(mediaQueries, ixSession.mediaQueryKey)) {
7066    return false;
7067  } // Limit affected elements when event target is within a boundary node
7068
7069
7070  var eventElementRoot = ixSession.hasBoundaryNodes && eventTarget ? elementApi.getClosestElement(eventTarget, BOUNDARY_SELECTOR) : null;
7071  var carrierIndex = getMaxDurationItemIndex(actionItems);
7072  var groupStartResult = false;
7073  actionItems.forEach(function (actionItem, actionIndex) {
7074    var config = actionItem.config,
7075        actionTypeId = actionItem.actionTypeId;
7076    var shouldUsePlugin = isPluginType(actionTypeId);
7077    var target = config.target;
7078
7079    if (!target) {
7080      return;
7081    }
7082
7083    var elementRoot = target.boundaryMode ? eventElementRoot : null;
7084    var elements = getAffectedElements({
7085      config: config,
7086      event: event,
7087      eventTarget: eventTarget,
7088      elementRoot: elementRoot,
7089      elementApi: elementApi
7090    });
7091    elements.forEach(function (element, elementIndex) {
7092      var pluginInstance = shouldUsePlugin ? createPluginInstance(actionTypeId)(element, actionItem) : null;
7093      groupStartResult = true;
7094      var isCarrier = carrierIndex === actionIndex && elementIndex === 0;
7095      var computedStyle = getComputedStyle({
7096        element: element,
7097        actionItem: actionItem
7098      });
7099      var destination = getDestinationValues({
7100        element: element,
7101        actionItem: actionItem,
7102        elementApi: elementApi
7103      }, pluginInstance);
7104      createInstance({
7105        store: store,
7106        element: element,
7107        actionItem: actionItem,
7108        eventId: eventId,
7109        eventTarget: eventTarget,
7110        eventStateKey: eventStateKey,
7111        actionListId: actionListId,
7112        groupIndex: groupIndex,
7113        isCarrier: isCarrier,
7114        computedStyle: computedStyle,
7115        destination: destination,
7116        immediate: immediate,
7117        verbose: verbose,
7118        pluginInstance: pluginInstance,
7119        instanceDelay: instanceDelay
7120      });
7121    });
7122  });
7123  return groupStartResult;
7124}
7125
7126function createInstance(options) {
7127  var store = options.store,
7128      computedStyle = options.computedStyle,
7129      rest = (0, _objectWithoutProperties2["default"])(options, ["store", "computedStyle"]);
7130  var autoStart = !rest.continuous;
7131  var element = rest.element,
7132      actionItem = rest.actionItem,
7133      immediate = rest.immediate,
7134      pluginInstance = rest.pluginInstance;
7135  var instanceId = getInstanceId();
7136
7137  var _store$getState14 = store.getState(),
7138      ixElements = _store$getState14.ixElements,
7139      ixSession = _store$getState14.ixSession;
7140
7141  var elementId = getElementId(ixElements, element);
7142
7143  var _ref20 = ixElements[elementId] || {},
7144      refState = _ref20.refState;
7145
7146  var refType = elementApi.getRefType(element);
7147  var origin = getInstanceOrigin(element, refState, computedStyle, actionItem, elementApi, pluginInstance);
7148  store.dispatch((0, _IX2EngineActions.instanceAdded)((0, _objectSpread2["default"])({
7149    instanceId: instanceId,
7150    elementId: elementId,
7151    origin: origin,
7152    refType: refType
7153  }, rest)));
7154  dispatchCustomEvent(document.body, 'ix2-animation-started', instanceId);
7155
7156  if (immediate) {
7157    renderImmediateInstance(store, instanceId);
7158    return;
7159  }
7160
7161  observeStore({
7162    store: store,
7163    select: function select(_ref21) {
7164      var ixInstances = _ref21.ixInstances;
7165      return ixInstances[instanceId];
7166    },
7167    onChange: handleInstanceChange
7168  });
7169
7170  if (autoStart) {
7171    store.dispatch((0, _IX2EngineActions.instanceStarted)(instanceId, ixSession.tick));
7172  }
7173}
7174
7175function removeInstance(instance, store) {
7176  dispatchCustomEvent(document.body, 'ix2-animation-stopping', {
7177    instanceId: instance.id,
7178    state: store.getState()
7179  });
7180  var elementId = instance.elementId,
7181      actionItem = instance.actionItem;
7182
7183  var _store$getState15 = store.getState(),
7184      ixElements = _store$getState15.ixElements;
7185
7186  var _ref22 = ixElements[elementId] || {},
7187      ref = _ref22.ref,
7188      refType = _ref22.refType;
7189
7190  if (refType === HTML_ELEMENT) {
7191    cleanupHTMLElement(ref, actionItem, elementApi);
7192  }
7193
7194  store.dispatch((0, _IX2EngineActions.instanceRemoved)(instance.id));
7195}
7196
7197function dispatchCustomEvent(element, eventName, detail) {
7198  var event = document.createEvent('CustomEvent');
7199  event.initCustomEvent(eventName, true, true, detail);
7200  element.dispatchEvent(event);
7201}
7202
7203function renderImmediateInstance(store, instanceId) {
7204  var _store$getState16 = store.getState(),
7205      ixParameters = _store$getState16.ixParameters;
7206
7207  store.dispatch((0, _IX2EngineActions.instanceStarted)(instanceId, 0));
7208  store.dispatch((0, _IX2EngineActions.animationFrameChanged)(performance.now(), ixParameters));
7209
7210  var _store$getState17 = store.getState(),
7211      ixInstances = _store$getState17.ixInstances;
7212
7213  handleInstanceChange(ixInstances[instanceId], store);
7214}
7215
7216function handleInstanceChange(instance, store) {
7217  var active = instance.active,
7218      continuous = instance.continuous,
7219      complete = instance.complete,
7220      elementId = instance.elementId,
7221      actionItem = instance.actionItem,
7222      actionTypeId = instance.actionTypeId,
7223      renderType = instance.renderType,
7224      current = instance.current,
7225      groupIndex = instance.groupIndex,
7226      eventId = instance.eventId,
7227      eventTarget = instance.eventTarget,
7228      eventStateKey = instance.eventStateKey,
7229      actionListId = instance.actionListId,
7230      isCarrier = instance.isCarrier,
7231      styleProp = instance.styleProp,
7232      verbose = instance.verbose,
7233      pluginInstance = instance.pluginInstance; // Bypass render if current media query is not listed in event config
7234
7235  var _store$getState18 = store.getState(),
7236      ixData = _store$getState18.ixData,
7237      ixSession = _store$getState18.ixSession;
7238
7239  var events = ixData.events;
7240  var event = events[eventId] || {};
7241  var _event$mediaQueries4 = event.mediaQueries,
7242      mediaQueries = _event$mediaQueries4 === void 0 ? ixData.mediaQueryKeys : _event$mediaQueries4;
7243
7244  if (!shouldAllowMediaQuery(mediaQueries, ixSession.mediaQueryKey)) {
7245    return;
7246  }
7247
7248  if (continuous || active || complete) {
7249    if (current || renderType === RENDER_GENERAL && complete) {
7250      // Render current values to ref state and grab latest
7251      store.dispatch((0, _IX2EngineActions.elementStateChanged)(elementId, actionTypeId, current, actionItem));
7252
7253      var _store$getState19 = store.getState(),
7254          ixElements = _store$getState19.ixElements;
7255
7256      var _ref23 = ixElements[elementId] || {},
7257          ref = _ref23.ref,
7258          refType = _ref23.refType,
7259          refState = _ref23.refState;
7260
7261      var actionState = refState && refState[actionTypeId]; // Choose render based on ref type
7262
7263      switch (refType) {
7264        case HTML_ELEMENT:
7265          {
7266            renderHTMLElement(ref, refState, actionState, eventId, actionItem, styleProp, elementApi, renderType, pluginInstance);
7267            break;
7268          }
7269      }
7270    }
7271
7272    if (complete) {
7273      if (isCarrier) {
7274        var started = startActionGroup({
7275          store: store,
7276          eventId: eventId,
7277          eventTarget: eventTarget,
7278          eventStateKey: eventStateKey,
7279          actionListId: actionListId,
7280          groupIndex: groupIndex + 1,
7281          verbose: verbose
7282        });
7283
7284        if (verbose && !started) {
7285          store.dispatch((0, _IX2EngineActions.actionListPlaybackChanged)({
7286            actionListId: actionListId,
7287            isPlaying: false
7288          }));
7289        }
7290      }
7291
7292      removeInstance(instance, store);
7293    }
7294  }
7295}
7296
7297/***/ }),
7298/* 94 */
7299/***/ (function(module, exports, __webpack_require__) {
7300
7301var defineProperty = __webpack_require__(95);
7302
7303/**
7304 * The base implementation of `assignValue` and `assignMergeValue` without
7305 * value checks.
7306 *
7307 * @private
7308 * @param {Object} object The object to modify.
7309 * @param {string} key The key of the property to assign.
7310 * @param {*} value The value to assign.
7311 */
7312function baseAssignValue(object, key, value) {
7313  if (key == '__proto__' && defineProperty) {
7314    defineProperty(object, key, {
7315      'configurable': true,
7316      'enumerable': true,
7317      'value': value,
7318      'writable': true
7319    });
7320  } else {
7321    object[key] = value;
7322  }
7323}
7324
7325module.exports = baseAssignValue;
7326
7327
7328/***/ }),
7329/* 95 */
7330/***/ (function(module, exports, __webpack_require__) {
7331
7332var getNative = __webpack_require__(7);
7333
7334var defineProperty = (function() {
7335  try {
7336    var func = getNative(Object, 'defineProperty');
7337    func({}, '', {});
7338    return func;
7339  } catch (e) {}
7340}());
7341
7342module.exports = defineProperty;
7343
7344
7345/***/ }),
7346/* 96 */
7347/***/ (function(module, exports) {
7348
7349/**
7350 * The base implementation of `_.clamp` which doesn't coerce arguments.
7351 *
7352 * @private
7353 * @param {number} number The number to clamp.
7354 * @param {number} [lower] The lower bound.
7355 * @param {number} upper The upper bound.
7356 * @returns {number} Returns the clamped number.
7357 */
7358function baseClamp(number, lower, upper) {
7359  if (number === number) {
7360    if (upper !== undefined) {
7361      number = number <= upper ? number : upper;
7362    }
7363    if (lower !== undefined) {
7364      number = number >= lower ? number : lower;
7365    }
7366  }
7367  return number;
7368}
7369
7370module.exports = baseClamp;
7371
7372
7373/***/ }),
7374/* 97 */
7375/***/ (function(module, exports, __webpack_require__) {
7376
7377var isObject = __webpack_require__(5);
7378
7379/** Built-in value references. */
7380var objectCreate = Object.create;
7381
7382/**
7383 * The base implementation of `_.create` without support for assigning
7384 * properties to the created object.
7385 *
7386 * @private
7387 * @param {Object} proto The object to inherit from.
7388 * @returns {Object} Returns the new object.
7389 */
7390var baseCreate = (function() {
7391  function object() {}
7392  return function(proto) {
7393    if (!isObject(proto)) {
7394      return {};
7395    }
7396    if (objectCreate) {
7397      return objectCreate(proto);
7398    }
7399    object.prototype = proto;
7400    var result = new object;
7401    object.prototype = undefined;
7402    return result;
7403  };
7404}());
7405
7406module.exports = baseCreate;
7407
7408
7409/***/ }),
7410/* 98 */
7411/***/ (function(module, exports, __webpack_require__) {
7412
7413var metaMap = __webpack_require__(249),
7414    noop = __webpack_require__(250);
7415
7416/**
7417 * Gets metadata for `func`.
7418 *
7419 * @private
7420 * @param {Function} func The function to query.
7421 * @returns {*} Returns the metadata for `func`.
7422 */
7423var getData = !metaMap ? noop : function(func) {
7424  return metaMap.get(func);
7425};
7426
7427module.exports = getData;
7428
7429
7430/***/ }),
7431/* 99 */
7432/***/ (function(module, exports, __webpack_require__) {
7433
7434var realNames = __webpack_require__(251);
7435
7436/** Used for built-in method references. */
7437var objectProto = Object.prototype;
7438
7439/** Used to check objects for own properties. */
7440var hasOwnProperty = objectProto.hasOwnProperty;
7441
7442/**
7443 * Gets the name of `func`.
7444 *
7445 * @private
7446 * @param {Function} func The function to query.
7447 * @returns {string} Returns the function name.
7448 */
7449function getFuncName(func) {
7450  var result = (func.name + ''),
7451      array = realNames[result],
7452      length = hasOwnProperty.call(realNames, result) ? array.length : 0;
7453
7454  while (length--) {
7455    var data = array[length],
7456        otherFunc = data.func;
7457    if (otherFunc == null || otherFunc == func) {
7458      return data.name;
7459    }
7460  }
7461  return result;
7462}
7463
7464module.exports = getFuncName;
7465
7466
7467/***/ }),
7468/* 100 */
7469/***/ (function(module, exports, __webpack_require__) {
7470
7471__webpack_require__(101);
7472__webpack_require__(27);
7473__webpack_require__(103);
7474__webpack_require__(28);
7475__webpack_require__(104);
7476__webpack_require__(257);
7477__webpack_require__(258);
7478__webpack_require__(259);
7479__webpack_require__(260);
7480__webpack_require__(261);
7481__webpack_require__(262);
7482module.exports = __webpack_require__(263);
7483
7484
7485/***/ }),
7486/* 101 */
7487/***/ (function(module, exports, __webpack_require__) {
7488
7489"use strict";
7490 // @wf-will-never-add-flow-to-this-file
7491
7492/* eslint-disable */
7493
7494/**
7495 * Webflow: Brand pages on the subdomain
7496 */
7497
7498var Webflow = __webpack_require__(2);
7499
7500Webflow.define('brand', module.exports = function ($) {
7501  var api = {};
7502  var doc = document;
7503  var $html = $('html');
7504  var $body = $('body');
7505  var namespace = '.w-webflow-badge';
7506  var location = window.location;
7507  var isPhantom = /PhantomJS/i.test(navigator.userAgent);
7508  var fullScreenEvents = 'fullscreenchange webkitfullscreenchange mozfullscreenchange msfullscreenchange';
7509  var brandElement; // -----------------------------------
7510  // Module methods
7511
7512  api.ready = function () {
7513    var shouldBrand = $html.attr('data-wf-status');
7514    var publishedDomain = $html.attr('data-wf-domain') || '';
7515
7516    if (/\.webflow\.io$/i.test(publishedDomain) && location.hostname !== publishedDomain) {
7517      shouldBrand = true;
7518    }
7519
7520    if (shouldBrand && !isPhantom) {
7521      brandElement = brandElement || createBadge();
7522      ensureBrand();
7523      setTimeout(ensureBrand, 500);
7524      $(doc).off(fullScreenEvents, onFullScreenChange).on(fullScreenEvents, onFullScreenChange);
7525    }
7526  };
7527
7528  function onFullScreenChange() {
7529    var fullScreen = doc.fullScreen || doc.mozFullScreen || doc.webkitIsFullScreen || doc.msFullscreenElement || Boolean(doc.webkitFullscreenElement);
7530    $(brandElement).attr('style', fullScreen ? 'display: none !important;' : '');
7531  }
7532
7533  function createBadge() {
7534    var $brand = $('<a class="w-webflow-badge"></a>').attr('href', 'https://webflow.com?utm_campaign=brandjs');
7535    var $logoArt = $('<img>').attr('src', 'https://d3e54v103j8qbb.cloudfront.net/img/webflow-badge-icon.f67cd735e3.svg').attr('alt', '').css({
7536      marginRight: '8px',
7537      width: '16px'
7538    });
7539    var $logoText = $('<img>').attr('src', 'https://d1otoma47x30pg.cloudfront.net/img/webflow-badge-text.6faa6a38cd.svg').attr('alt', 'Made in Webflow');
7540    $brand.append($logoArt, $logoText);
7541    return $brand[0];
7542  }
7543
7544  function ensureBrand() {
7545    var found = $body.children(namespace);
7546    var match = found.length && found.get(0) === brandElement;
7547    var inEditor = Webflow.env('editor');
7548
7549    if (match) {
7550      // Remove brand when Editor is active
7551      if (inEditor) {
7552        found.remove();
7553      } // Exit early, brand is in place
7554
7555
7556      return;
7557    } // Remove any invalid brand elements
7558
7559
7560    if (found.length) {
7561      found.remove();
7562    } // Append the brand (unless Editor is active)
7563
7564
7565    if (!inEditor) {
7566      $body.append(brandElement);
7567    }
7568  } // Export module
7569
7570
7571  return api;
7572});
7573
7574/***/ }),
7575/* 102 */
7576/***/ (function(module, exports, __webpack_require__) {
7577
7578"use strict";
7579 // @wf-will-never-add-flow-to-this-file
7580
7581/* eslint-disable */
7582// Include tram for frame-throttling
7583
7584var $ = window.$;
7585var tram = __webpack_require__(55) && $.tram;
7586/*eslint-disable */
7587
7588/*!
7589 * Webflow._ (aka) Underscore.js 1.6.0 (custom build)
7590 * _.each
7591 * _.map
7592 * _.find
7593 * _.filter
7594 * _.any
7595 * _.contains
7596 * _.delay
7597 * _.defer
7598 * _.throttle (webflow)
7599 * _.debounce
7600 * _.keys
7601 * _.has
7602 * _.now
7603 *
7604 * http://underscorejs.org
7605 * (c) 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
7606 * Underscore may be freely distributed under the MIT license.
7607 * @license MIT
7608 */
7609
7610module.exports = function () {
7611  var _ = {}; // Current version.
7612
7613  _.VERSION = '1.6.0-Webflow'; // Establish the object that gets returned to break out of a loop iteration.
7614
7615  var breaker = {}; // Save bytes in the minified (but not gzipped) version:
7616
7617  var ArrayProto = Array.prototype,
7618      ObjProto = Object.prototype,
7619      FuncProto = Function.prototype; // Create quick reference variables for speed access to core prototypes.
7620
7621  var push = ArrayProto.push,
7622      slice = ArrayProto.slice,
7623      concat = ArrayProto.concat,
7624      toString = ObjProto.toString,
7625      hasOwnProperty = ObjProto.hasOwnProperty; // All **ECMAScript 5** native function implementations that we hope to use
7626  // are declared here.
7627
7628  var nativeForEach = ArrayProto.forEach,
7629      nativeMap = ArrayProto.map,
7630      nativeReduce = ArrayProto.reduce,
7631      nativeReduceRight = ArrayProto.reduceRight,
7632      nativeFilter = ArrayProto.filter,
7633      nativeEvery = ArrayProto.every,
7634      nativeSome = ArrayProto.some,
7635      nativeIndexOf = ArrayProto.indexOf,
7636      nativeLastIndexOf = ArrayProto.lastIndexOf,
7637      nativeIsArray = Array.isArray,
7638      nativeKeys = Object.keys,
7639      nativeBind = FuncProto.bind; // Collection Functions
7640  // --------------------
7641  // The cornerstone, an `each` implementation, aka `forEach`.
7642  // Handles objects with the built-in `forEach`, arrays, and raw objects.
7643  // Delegates to **ECMAScript 5**'s native `forEach` if available.
7644
7645  var each = _.each = _.forEach = function (obj, iterator, context) {
7646    /* jshint shadow:true */
7647    if (obj == null) return obj;
7648
7649    if (nativeForEach && obj.forEach === nativeForEach) {
7650      obj.forEach(iterator, context);
7651    } else if (obj.length === +obj.length) {
7652      for (var i = 0, length = obj.length; i < length; i++) {
7653        if (iterator.call(context, obj[i], i, obj) === breaker) return;
7654      }
7655    } else {
7656      var keys = _.keys(obj);
7657
7658      for (var i = 0, length = keys.length; i < length; i++) {
7659        if (iterator.call(context, obj[keys[i]], keys[i], obj) === breaker) return;
7660      }
7661    }
7662
7663    return obj;
7664  }; // Return the results of applying the iterator to each element.
7665  // Delegates to **ECMAScript 5**'s native `map` if available.
7666
7667
7668  _.map = _.collect = function (obj, iterator, context) {
7669    var results = [];
7670    if (obj == null) return results;
7671    if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);
7672    each(obj, function (value, index, list) {
7673      results.push(iterator.call(context, value, index, list));
7674    });
7675    return results;
7676  }; // Return the first value which passes a truth test. Aliased as `detect`.
7677
7678
7679  _.find = _.detect = function (obj, predicate, context) {
7680    var result;
7681    any(obj, function (value, index, list) {
7682      if (predicate.call(context, value, index, list)) {
7683        result = value;
7684        return true;
7685      }
7686    });
7687    return result;
7688  }; // Return all the elements that pass a truth test.
7689  // Delegates to **ECMAScript 5**'s native `filter` if available.
7690  // Aliased as `select`.
7691
7692
7693  _.filter = _.select = function (obj, predicate, context) {
7694    var results = [];
7695    if (obj == null) return results;
7696    if (nativeFilter && obj.filter === nativeFilter) return obj.filter(predicate, context);
7697    each(obj, function (value, index, list) {
7698      if (predicate.call(context, value, index, list)) results.push(value);
7699    });
7700    return results;
7701  }; // Determine if at least one element in the object matches a truth test.
7702  // Delegates to **ECMAScript 5**'s native `some` if available.
7703  // Aliased as `any`.
7704
7705
7706  var any = _.some = _.any = function (obj, predicate, context) {
7707    predicate || (predicate = _.identity);
7708    var result = false;
7709    if (obj == null) return result;
7710    if (nativeSome && obj.some === nativeSome) return obj.some(predicate, context);
7711    each(obj, function (value, index, list) {
7712      if (result || (result = predicate.call(context, value, index, list))) return breaker;
7713    });
7714    return !!result;
7715  }; // Determine if the array or object contains a given value (using `===`).
7716  // Aliased as `include`.
7717
7718
7719  _.contains = _.include = function (obj, target) {
7720    if (obj == null) return false;
7721    if (nativeIndexOf && obj.indexOf === nativeIndexOf) return obj.indexOf(target) != -1;
7722    return any(obj, function (value) {
7723      return value === target;
7724    });
7725  }; // Function (ahem) Functions
7726  // --------------------
7727  // Delays a function for the given number of milliseconds, and then calls
7728  // it with the arguments supplied.
7729
7730
7731  _.delay = function (func, wait) {
7732    var args = slice.call(arguments, 2);
7733    return setTimeout(function () {
7734      return func.apply(null, args);
7735    }, wait);
7736  }; // Defers a function, scheduling it to run after the current call stack has
7737  // cleared.
7738
7739
7740  _.defer = function (func) {
7741    return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1)));
7742  }; // Returns a function, that, when invoked, will only be triggered once every
7743  // browser animation frame - using tram's requestAnimationFrame polyfill.
7744
7745
7746  _.throttle = function (func) {
7747    var wait, args, context;
7748    return function () {
7749      if (wait) return;
7750      wait = true;
7751      args = arguments;
7752      context = this;
7753      tram.frame(function () {
7754        wait = false;
7755        func.apply(context, args);
7756      });
7757    };
7758  }; // Returns a function, that, as long as it continues to be invoked, will not
7759  // be triggered. The function will be called after it stops being called for
7760  // N milliseconds. If `immediate` is passed, trigger the function on the
7761  // leading edge, instead of the trailing.
7762
7763
7764  _.debounce = function (func, wait, immediate) {
7765    var timeout, args, context, timestamp, result;
7766
7767    var later = function later() {
7768      var last = _.now() - timestamp;
7769
7770      if (last < wait) {
7771        timeout = setTimeout(later, wait - last);
7772      } else {
7773        timeout = null;
7774
7775        if (!immediate) {
7776          result = func.apply(context, args);
7777          context = args = null;
7778        }
7779      }
7780    };
7781
7782    return function () {
7783      context = this;
7784      args = arguments;
7785      timestamp = _.now();
7786      var callNow = immediate && !timeout;
7787
7788      if (!timeout) {
7789        timeout = setTimeout(later, wait);
7790      }
7791
7792      if (callNow) {
7793        result = func.apply(context, args);
7794        context = args = null;
7795      }
7796
7797      return result;
7798    };
7799  }; // Object Functions
7800  // ----------------
7801  // Fill in a given object with default properties.
7802
7803
7804  _.defaults = function (obj) {
7805    if (!_.isObject(obj)) return obj;
7806
7807    for (var i = 1, length = arguments.length; i < length; i++) {
7808      var source = arguments[i];
7809
7810      for (var prop in source) {
7811        if (obj[prop] === void 0) obj[prop] = source[prop];
7812      }
7813    }
7814
7815    return obj;
7816  }; // Retrieve the names of an object's properties.
7817  // Delegates to **ECMAScript 5**'s native `Object.keys`
7818
7819
7820  _.keys = function (obj) {
7821    if (!_.isObject(obj)) return [];
7822    if (nativeKeys) return nativeKeys(obj);
7823    var keys = [];
7824
7825    for (var key in obj) {
7826      if (_.has(obj, key)) keys.push(key);
7827    }
7828
7829    return keys;
7830  }; // Shortcut function for checking if an object has a given property directly
7831  // on itself (in other words, not on a prototype).
7832
7833
7834  _.has = function (obj, key) {
7835    return hasOwnProperty.call(obj, key);
7836  }; // Is a given variable an object?
7837
7838
7839  _.isObject = function (obj) {
7840    return obj === Object(obj);
7841  }; // Utility Functions
7842  // -----------------
7843  // A (possibly faster) way to get the current timestamp as an integer.
7844
7845
7846  _.now = Date.now || function () {
7847    return new Date().getTime();
7848  }; // By default, Underscore uses ERB-style template delimiters, change the
7849  // following template settings to use alternative delimiters.
7850
7851
7852  _.templateSettings = {
7853    evaluate: /<%([\s\S]+?)%>/g,
7854    interpolate: /<%=([\s\S]+?)%>/g,
7855    escape: /<%-([\s\S]+?)%>/g
7856  }; // When customizing `templateSettings`, if you don't want to define an
7857  // interpolation, evaluation or escaping regex, we need one that is
7858  // guaranteed not to match.
7859
7860  var noMatch = /(.)^/; // Certain characters need to be escaped so that they can be put into a
7861  // string literal.
7862
7863  var escapes = {
7864    "'": "'",
7865    '\\': '\\',
7866    '\r': 'r',
7867    '\n': 'n',
7868    "\u2028": 'u2028',
7869    "\u2029": 'u2029'
7870  };
7871  var escaper = /\\|'|\r|\n|\u2028|\u2029/g;
7872
7873  var escapeChar = function escapeChar(match) {
7874    return '\\' + escapes[match];
7875  }; // JavaScript micro-templating, similar to John Resig's implementation.
7876  // Underscore templating handles arbitrary delimiters, preserves whitespace,
7877  // and correctly escapes quotes within interpolated code.
7878  // NB: `oldSettings` only exists for backwards compatibility.
7879
7880
7881  _.template = function (text, settings, oldSettings) {
7882    if (!settings && oldSettings) settings = oldSettings;
7883    settings = _.defaults({}, settings, _.templateSettings); // Combine delimiters into one regular expression via alternation.
7884
7885    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.
7886
7887    var index = 0;
7888    var source = "__p+='";
7889    text.replace(matcher, function (match, escape, interpolate, evaluate, offset) {
7890      source += text.slice(index, offset).replace(escaper, escapeChar);
7891      index = offset + match.length;
7892
7893      if (escape) {
7894        source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'";
7895      } else if (interpolate) {
7896        source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'";
7897      } else if (evaluate) {
7898        source += "';\n" + evaluate + "\n__p+='";
7899      } // Adobe VMs need the match returned to produce the correct offest.
7900
7901
7902      return match;
7903    });
7904    source += "';\n"; // If a variable is not specified, place data values in local scope.
7905
7906    if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n';
7907    source = "var __t,__p='',__j=Array.prototype.join," + "print=function(){__p+=__j.call(arguments,'');};\n" + source + 'return __p;\n';
7908
7909    try {
7910      var render = new Function(settings.variable || 'obj', '_', source);
7911    } catch (e) {
7912      e.source = source;
7913      throw e;
7914    }
7915
7916    var template = function template(data) {
7917      return render.call(this, data, _);
7918    }; // Provide the compiled source as a convenience for precompilation.
7919
7920
7921    var argument = settings.variable || 'obj';
7922    template.source = 'function(' + argument + '){\n' + source + '}';
7923    return template;
7924  }; // Export underscore
7925
7926
7927  return _;
7928}();
7929/* eslint-enable */
7930
7931/***/ }),
7932/* 103 */
7933/***/ (function(module, exports, __webpack_require__) {
7934
7935"use strict";
7936 // @wf-will-never-add-flow-to-this-file
7937
7938/* eslint-disable */
7939
7940/**
7941 * Webflow: Interactions
7942 */
7943
7944var Webflow = __webpack_require__(2);
7945
7946var IXEvents = __webpack_require__(27);
7947
7948Webflow.define('ix', module.exports = function ($, _) {
7949  var api = {};
7950  var designer;
7951  var $win = $(window);
7952  var namespace = '.w-ix';
7953  var tram = $.tram;
7954  var env = Webflow.env;
7955  var inApp = env();
7956  var emptyFix = env.chrome && env.chrome < 35;
7957  var transNone = 'none 0s ease 0s';
7958  var $subs = $();
7959  var config = {};
7960  var anchors = [];
7961  var loads = [];
7962  var readys = [];
7963  var destroyed;
7964  var readyDelay = 1; // Component types and proxy selectors
7965
7966  var components = {
7967    tabs: '.w-tab-link, .w-tab-pane',
7968    dropdown: '.w-dropdown',
7969    slider: '.w-slide',
7970    navbar: '.w-nav'
7971  }; // -----------------------------------
7972  // Module methods
7973
7974  api.init = function (list) {
7975    setTimeout(function () {
7976      configure(list);
7977    }, 1);
7978  };
7979
7980  api.preview = function () {
7981    designer = false;
7982    readyDelay = 100;
7983    setTimeout(function () {
7984      configure(window.__wf_ix);
7985    }, 1);
7986  };
7987
7988  api.design = function () {
7989    designer = true;
7990    api.destroy();
7991  };
7992
7993  api.destroy = function () {
7994    destroyed = true;
7995    $subs.each(teardown);
7996    Webflow.scroll.off(scroll);
7997    IXEvents.async();
7998    anchors = [];
7999    loads = [];
8000    readys = [];
8001  };
8002
8003  api.ready = function () {
8004    // Redirect IX init while in design/preview modes
8005    if (inApp) {
8006      return env('design') ? api.design() : api.preview();
8007    } // Ready should only be used after destroy, as a way to re-init
8008
8009
8010    if (config && destroyed) {
8011      destroyed = false;
8012      init();
8013    }
8014  };
8015
8016  api.run = run;
8017  api.style = inApp ? styleApp : stylePub; // -----------------------------------
8018  // Private methods
8019
8020  function configure(list) {
8021    if (!list) {
8022      return;
8023    } // Map all interactions by slug
8024
8025
8026    config = {};
8027
8028    _.each(list, function (item) {
8029      config[item.slug] = item.value;
8030    }); // Init ix after config
8031
8032
8033    init();
8034  }
8035
8036  function init() {
8037    initIX1Engine(); // Need init IXEvents regardless if IX1 events exist since
8038    // IXEvents _also_ dispatch IX2 events.
8039    // Trigger queued events, must happen after init
8040
8041    IXEvents.init(); // Trigger a redraw to ensure all IX intros play
8042
8043    Webflow.redraw.up();
8044  }
8045
8046  function initIX1Engine() {
8047    // Build each element's interaction keying from data attribute
8048    var els = $('[data-ix]');
8049
8050    if (!els.length) {
8051      return;
8052    }
8053
8054    els.each(teardown);
8055    els.each(build); // Listen for scroll events if any anchors exist
8056
8057    if (anchors.length) {
8058      Webflow.scroll.on(scroll);
8059      setTimeout(scroll, 1);
8060    } // Handle loads or readys if they exist
8061
8062
8063    if (loads.length) {
8064      Webflow.load(runLoads);
8065    }
8066
8067    if (readys.length) {
8068      setTimeout(runReadys, readyDelay);
8069    }
8070  }
8071
8072  function build(i, el) {
8073    var $el = $(el);
8074    var id = $el.attr('data-ix');
8075    var ix = config[id];
8076
8077    if (!ix) {
8078      return;
8079    }
8080
8081    var triggers = ix.triggers;
8082
8083    if (!triggers) {
8084      return;
8085    } // Set styles immediately to provide tram with starting transform values
8086
8087
8088    api.style($el, ix.style);
8089
8090    _.each(triggers, function (trigger) {
8091      var state = {};
8092      var type = trigger.type;
8093      var stepsB = trigger.stepsB && trigger.stepsB.length;
8094
8095      function runA() {
8096        run(trigger, $el, {
8097          group: 'A'
8098        });
8099      }
8100
8101      function runB() {
8102        run(trigger, $el, {
8103          group: 'B'
8104        });
8105      }
8106
8107      if (type === 'load') {
8108        trigger.preload && !inApp ? loads.push(runA) : readys.push(runA);
8109        return;
8110      }
8111
8112      if (type === 'click') {
8113        $el.on('click' + namespace, function (evt) {
8114          // Avoid late clicks on touch devices
8115          if (!Webflow.validClick(evt.currentTarget)) {
8116            return;
8117          } // Prevent default on empty hash urls
8118
8119
8120          if ($el.attr('href') === '#') {
8121            evt.preventDefault();
8122          }
8123
8124          run(trigger, $el, {
8125            group: state.clicked ? 'B' : 'A'
8126          });
8127
8128          if (stepsB) {
8129            state.clicked = !state.clicked;
8130          }
8131        });
8132        $subs = $subs.add($el);
8133        return;
8134      }
8135
8136      if (type === 'hover') {
8137        $el.on('mouseenter' + namespace, runA);
8138        $el.on('mouseleave' + namespace, runB);
8139        $subs = $subs.add($el);
8140        return;
8141      }
8142
8143      if (type === 'scroll') {
8144        anchors.push({
8145          el: $el,
8146          trigger: trigger,
8147          state: {
8148            active: false
8149          },
8150          offsetTop: convert(trigger.offsetTop),
8151          offsetBot: convert(trigger.offsetBot)
8152        });
8153        return;
8154      } // Check for a proxy component selector
8155      // type == [tabs, dropdown, slider, navbar]
8156
8157
8158      var proxy = components[type];
8159
8160      if (proxy) {
8161        var $proxy = $el.closest(proxy);
8162        $proxy.on(IXEvents.types.INTRO, runA).on(IXEvents.types.OUTRO, runB);
8163        $subs = $subs.add($proxy);
8164        return;
8165      }
8166    });
8167  }
8168
8169  function convert(offset) {
8170    if (!offset) {
8171      return 0;
8172    }
8173
8174    offset = String(offset);
8175    var result = parseInt(offset, 10);
8176
8177    if (result !== result) {
8178      return 0;
8179    }
8180
8181    if (offset.indexOf('%') > 0) {
8182      result /= 100;
8183
8184      if (result >= 1) {
8185        result = 0.999;
8186      }
8187    }
8188
8189    return result;
8190  }
8191
8192  function teardown(i, el) {
8193    $(el).off(namespace);
8194  }
8195
8196  function scroll() {
8197    var viewTop = $win.scrollTop();
8198    var viewHeight = $win.height(); // Check each anchor for a valid scroll trigger
8199
8200    var count = anchors.length;
8201
8202    for (var i = 0; i < count; i++) {
8203      var anchor = anchors[i];
8204      var $el = anchor.el;
8205      var trigger = anchor.trigger;
8206      var stepsB = trigger.stepsB && trigger.stepsB.length;
8207      var state = anchor.state;
8208      var top = $el.offset().top;
8209      var height = $el.outerHeight();
8210      var offsetTop = anchor.offsetTop;
8211      var offsetBot = anchor.offsetBot;
8212
8213      if (offsetTop < 1 && offsetTop > 0) {
8214        offsetTop *= viewHeight;
8215      }
8216
8217      if (offsetBot < 1 && offsetBot > 0) {
8218        offsetBot *= viewHeight;
8219      }
8220
8221      var active = top + height - offsetTop >= viewTop && top + offsetBot <= viewTop + viewHeight;
8222
8223      if (active === state.active) {
8224        continue;
8225      }
8226
8227      if (active === false && !stepsB) {
8228        continue;
8229      }
8230
8231      state.active = active;
8232      run(trigger, $el, {
8233        group: active ? 'A' : 'B'
8234      });
8235    }
8236  }
8237
8238  function runLoads() {
8239    var count = loads.length;
8240
8241    for (var i = 0; i < count; i++) {
8242      loads[i]();
8243    }
8244  }
8245
8246  function runReadys() {
8247    var count = readys.length;
8248
8249    for (var i = 0; i < count; i++) {
8250      readys[i]();
8251    }
8252  }
8253
8254  function run(trigger, $el, opts, replay) {
8255    opts = opts || {};
8256    var done = opts.done;
8257    var preserve3d = trigger.preserve3d;
8257 // Do not run in designer unless forced
8258
8259    if (designer && !opts.force) {
8260      return;
8261    } // Operate on a set of grouped steps
8262
8263
8264    var group = opts.group || 'A';
8265    var loop = trigger['loop' + group];
8266    var steps = trigger['steps' + group];
8267
8268    if (!steps || !steps.length) {
8269      return;
8270    }
8271
8272    if (steps.length < 2) {
8273      loop = false;
8274    } // One-time init before any loops
8275
8276
8277    if (!replay) {
8278      // Find selector within element descendants, siblings, or query whole document
8279      var selector = trigger.selector;
8280
8281      if (selector) {
8282        if (trigger.descend) {
8283          $el = $el.find(selector);
8284        } else if (trigger.siblings) {
8285          $el = $el.siblings(selector);
8286        } else {
8287          $el = $(selector);
8288        }
8289
8290        if (inApp) {
8291          $el.attr('data-ix-affect', 1);
8292        }
8293      } // Apply empty fix for certain Chrome versions
8294
8295
8296      if (emptyFix) {
8297        $el.addClass('w-ix-emptyfix');
8298      } // Set preserve3d for triggers with 3d transforms
8299
8300
8301      if (preserve3d) {
8302        $el.css('transform-style', 'preserve-3d');
8303      }
8304    }
8305
8306    var _tram = tram($el); // Add steps
8307
8308
8309    var meta = {
8310      omit3d: !preserve3d
8311    };
8312
8313    for (var i = 0; i < steps.length; i++) {
8314      addStep(_tram, steps[i], meta);
8315    }
8316
8317    function fin() {
8318      // Run trigger again if looped
8319      if (loop) {
8320        return run(trigger, $el, opts, true);
8321      } // Reset any 'auto' values
8322
8323
8324      if (meta.width === 'auto') {
8325        _tram.set({
8326          width: 'auto'
8327        });
8328      }
8329
8330      if (meta.height === 'auto') {
8331        _tram.set({
8332          height: 'auto'
8333        });
8334      } // Run callback
8335
8336
8337      done && done();
8338    } // Add final step to queue if tram has started
8339
8340
8341    meta.start ? _tram.then(fin) : fin();
8342  }
8343
8344  function addStep(_tram, step, meta) {
8345    var addMethod = 'add';
8346    var startMethod = 'start'; // Once the transition has started, we will always use then() to add to the queue.
8347
8348    if (meta.start) {
8349      addMethod = startMethod = 'then';
8350    } // Parse transitions string on the current step
8351
8352
8353    var transitions = step.transition;
8354
8355    if (transitions) {
8356      transitions = transitions.split(',');
8357
8358      for (var i = 0; i < transitions.length; i++) {
8359        var transition = transitions[i];
8360
8361        _tram[addMethod](transition);
8362      }
8363    } // Build a clean object to pass to the tram method
8364
8365
8366    var clean = tramify(step, meta) || {}; // Store last width and height values
8367
8368    if (clean.width != null) {
8369      meta.width = clean.width;
8370    }
8371
8372    if (clean.height != null) {
8373      meta.height = clean.height;
8374    } // When transitions are not present, set values immediately and continue queue.
8375
8376
8377    if (transitions == null) {
8378      // If we have started, wrap set() in then() and reset queue
8379      if (meta.start) {
8380        _tram.then(function () {
8381          var queue = this.queue;
8382          this.set(clean);
8383
8384          if (clean.display) {
8385            _tram.redraw();
8386
8387            Webflow.redraw.up();
8388          }
8389
8390          this.queue = queue;
8391          this.next();
8392        });
8393      } else {
8394        _tram.set(clean); // Always redraw after setting display
8395
8396
8397        if (clean.display) {
8398          _tram.redraw();
8399
8400          Webflow.redraw.up();
8401        }
8402      } // Use the wait() method to kick off queue in absence of transitions.
8403
8404
8405      var wait = clean.wait;
8406
8407      if (wait != null) {
8408        _tram.wait(wait);
8409
8410        meta.start = true;
8411      } // Otherwise, when transitions are present
8412
8413    } else {
8414      // If display is present, handle it separately
8415      if (clean.display) {
8416        var display = clean.display;
8417        delete clean.display; // If we've already started, we need to wrap it in a then()
8418
8419        if (meta.start) {
8420          _tram.then(function () {
8421            var queue = this.queue;
8422            this.set({
8423              display: display
8424            }).redraw();
8425            Webflow.redraw.up();
8426            this.queue = queue;
8427            this.next();
8428          });
8429        } else {
8430          _tram.set({
8431            display: display
8432          }).redraw();
8433
8434          Webflow.redraw.up();
8435        }
8436      } // Otherwise, start a transition using the current start method.
8437
8438
8439      _tram[startMethod](clean);
8440
8441      meta.start = true;
8442    }
8443  } // (In app) Set styles immediately and manage upstream transition
8444
8445
8446  function styleApp(el, data) {
8447    var _tram = tram(el); // Exit early when data is empty to avoid clearing upstream
8448
8449
8450    if ($.isEmptyObject(data)) {
8451      return;
8452    } // Get computed transition value
8453
8454
8455    el.css('transition', '');
8456    var computed = el.css('transition'); // If computed is set to none, clear upstream
8457
8458    if (computed === transNone) {
8459      computed = _tram.upstream = null;
8460    } // Set upstream transition to none temporarily
8461
8462
8463    _tram.upstream = transNone; // Set values immediately
8464
8465    _tram.set(tramify(data)); // Only restore upstream in preview mode
8466
8467
8468    _tram.upstream = computed;
8469  } // (Published) Set styles immediately on specified jquery element
8470
8471
8472  function stylePub(el, data) {
8473    tram(el).set(tramify(data));
8474  } // Build a clean object for tram
8475
8476
8477  function tramify(obj, meta) {
8478    var omit3d = meta && meta.omit3d;
8479    var result = {};
8480    var found = false;
8481
8482    for (var key in obj) {
8483      if (key === 'transition') {
8484        continue;
8485      }
8486
8487      if (key === 'keysort') {
8488        continue;
8489      }
8490
8491      if (omit3d) {
8492        if (key === 'z' || key === 'rotateX' || key === 'rotateY' || key === 'scaleZ') {
8493          continue;
8494        }
8495      }
8496
8497      result[key] = obj[key];
8498      found = true;
8499    } // If empty, return null for tram.set/stop compliance
8500
8501
8502    return found ? result : null;
8503  } // Export module
8504
8505
8506  return api;
8507});
8508
8509/***/ }),
8510/* 104 */
8511/***/ (function(module, exports, __webpack_require__) {
8512
8513"use strict";
8514 // @wf-will-never-add-flow-to-this-file
8515
8516/* eslint-disable */
8517
8518/**
8519 * Webflow: Interactions 2
8520 */
8521
8522var Webflow = __webpack_require__(2);
8523
8524var ix2 = __webpack_require__(105);
8525
8526ix2.setEnv(Webflow.env);
8527Webflow.define('ix2', module.exports = function () {
8528  return ix2;
8529});
8530
8531/***/ }),
8532/* 105 */
8533/***/ (function(module, exports, __webpack_require__) {
8534
8535"use strict";
8536
8537
8538var _interopRequireWildcard = __webpack_require__(16);
8539
8540var _interopRequireDefault = __webpack_require__(0);
8541
8542Object.defineProperty(exports, "__esModule", {
8543  value: true
8544});
8545exports.setEnv = setEnv;
8546exports.init = init;
8547exports.destroy = destroy;
8548exports.actions = exports.store = void 0;
8549
8550var _redux = __webpack_require__(56);
8551
8552var _IX2Reducer = _interopRequireDefault(__webpack_require__(117));
8553
8554var _IX2VanillaEngine = __webpack_require__(93);
8555
8556var actions = _interopRequireWildcard(__webpack_require__(51));
8557
8558exports.actions = actions;
8559var store = (0, _redux.createStore)(_IX2Reducer["default"]);
8560exports.store = store;
8561
8562function setEnv(env) {
8563  if (env()) {
8564    (0, _IX2VanillaEngine.observeRequests)(store);
8565  }
8566}
8567
8568function init(rawData) {
8569  destroy();
8570  (0, _IX2VanillaEngine.startEngine)({
8571    store: store,
8572    rawData: rawData,
8573    allowEvents: true
8574  });
8575}
8576
8577function destroy() {
8578  (0, _IX2VanillaEngine.stopEngine)(store);
8579}
8580
8581/***/ }),
8582/* 106 */
8583/***/ (function(module, __webpack_exports__, __webpack_require__) {
8584
8585"use strict";
8586__webpack_require__.r(__webpack_exports__);
8587/* harmony import */ var _Symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(58);
8588/* harmony import */ var _getRawTag_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(109);
8589/* harmony import */ var _objectToString_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(110);
8590
8591
8592
8593
8594/** `Object#toString` result references. */
8595var nullTag = '[object Null]',
8596    undefinedTag = '[object Undefined]';
8597
8598/** Built-in value references. */
8599var symToStringTag = _Symbol_js__WEBPACK_IMPORTED_MODULE_0__["default"] ? _Symbol_js__WEBPACK_IMPORTED_MODULE_0__["default"].toStringTag : undefined;
8600
8601/**
8602 * The base implementation of `getTag` without fallbacks for buggy environments.
8603 *
8604 * @private
8605 * @param {*} value The value to query.
8606 * @returns {string} Returns the `toStringTag`.
8607 */
8608function baseGetTag(value) {
8609  if (value == null) {
8610    return value === undefined ? undefinedTag : nullTag;
8611  }
8612  return (symToStringTag && symToStringTag in Object(value))
8613    ? Object(_getRawTag_js__WEBPACK_IMPORTED_MODULE_1__["default"])(value)
8614    : Object(_objectToString_js__WEBPACK_IMPORTED_MODULE_2__["default"])(value);
8615}
8616
8617/* harmony default export */ __webpack_exports__["default"] = (baseGetTag);
8618
8619
8620/***/ }),
8621/* 107 */
8622/***/ (function(module, __webpack_exports__, __webpack_require__) {
8623
8624"use strict";
8625__webpack_require__.r(__webpack_exports__);
8626/* harmony import */ var _freeGlobal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(108);
8627
8628
8629/** Detect free variable `self`. */
8630var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
8631
8632/** Used as a reference to the global object. */
8633var root = _freeGlobal_js__WEBPACK_IMPORTED_MODULE_0__["default"] || freeSelf || Function('return this')();
8634
8635/* harmony default export */ __webpack_exports__["default"] = (root);
8636
8637
8638/***/ }),
8639/* 108 */
8640/***/ (function(module, __webpack_exports__, __webpack_require__) {
8641
8642"use strict";
8643__webpack_require__.r(__webpack_exports__);
8644/* WEBPACK VAR INJECTION */(function(global) {/** Detect free variable `global` from Node.js. */
8645var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
8646
8647/* harmony default export */ __webpack_exports__["default"] = (freeGlobal);
8648
8649/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(30)))
8650
8651/***/ }),
8652/* 109 */
8653/***/ (function(module, __webpack_exports__, __webpack_require__) {
8654
8655"use strict";
8656__webpack_require__.r(__webpack_exports__);
8657/* harmony import */ var _Symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(58);
8658
8659
8660/** Used for built-in method references. */
8661var objectProto = Object.prototype;
8662
8663/** Used to check objects for own properties. */
8664var hasOwnProperty = objectProto.hasOwnProperty;
8665
8666/**
8667 * Used to resolve the
8668 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
8669 * of values.
8670 */
8671var nativeObjectToString = objectProto.toString;
8672
8673/** Built-in value references. */
8674var symToStringTag = _Symbol_js__WEBPACK_IMPORTED_MODULE_0__["default"] ? _Symbol_js__WEBPACK_IMPORTED_MODULE_0__["default"].toStringTag : undefined;
8675
8676/**
8677 * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
8678 *
8679 * @private
8680 * @param {*} value The value to query.
8681 * @returns {string} Returns the raw `toStringTag`.
8682 */
8683function getRawTag(value) {
8684  var isOwn = hasOwnProperty.call(value, symToStringTag),
8685      tag = value[symToStringTag];
8686
8687  try {
8688    value[symToStringTag] = undefined;
8689    var unmasked = true;
8690  } catch (e) {}
8691
8692  var result = nativeObjectToString.call(value);
8693  if (unmasked) {
8694    if (isOwn) {
8695      value[symToStringTag] = tag;
8696    } else {
8697      delete value[symToStringTag];
8698    }
8699  }
8700  return result;
8701}
8702
8703/* harmony default export */ __webpack_exports__["default"] = (getRawTag);
8704
8705
8706/***/ }),
8707/* 110 */
8708/***/ (function(module, __webpack_exports__, __webpack_require__) {
8709
8710"use strict";
8711__webpack_require__.r(__webpack_exports__);
8712/** Used for built-in method references. */
8713var objectProto = Object.prototype;
8714
8715/**
8716 * Used to resolve the
8717 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
8718 * of values.
8719 */
8720var nativeObjectToString = objectProto.toString;
8721
8722/**
8723 * Converts `value` to a string using `Object.prototype.toString`.
8724 *
8725 * @private
8726 * @param {*} value The value to convert.
8727 * @returns {string} Returns the converted string.
8728 */
8729function objectToString(value) {
8730  return nativeObjectToString.call(value);
8731}
8732
8733/* harmony default export */ __webpack_exports__["default"] = (objectToString);
8734
8735
8736/***/ }),
8737/* 111 */
8738/***/ (function(module, __webpack_exports__, __webpack_require__) {
8739
8740"use strict";
8741__webpack_require__.r(__webpack_exports__);
8742/* harmony import */ var _overArg_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(112);
8743
8744
8745/** Built-in value references. */
8746var getPrototype = Object(_overArg_js__WEBPACK_IMPORTED_MODULE_0__["default"])(Object.getPrototypeOf, Object);
8747
8748/* harmony default export */ __webpack_exports__["default"] = (getPrototype);
8749
8750
8751/***/ }),
8752/* 112 */
8753/***/ (function(module, __webpack_exports__, __webpack_require__) {
8754
8755"use strict";
8756__webpack_require__.r(__webpack_exports__);
8757/**
8758 * Creates a unary function that invokes `func` with its argument transformed.
8759 *
8760 * @private
8761 * @param {Function} func The function to wrap.
8762 * @param {Function} transform The argument transform.
8763 * @returns {Function} Returns the new function.
8764 */
8765function overArg(func, transform) {
8766  return function(arg) {
8767    return func(transform(arg));
8768  };
8769}
8770
8771/* harmony default export */ __webpack_exports__["default"] = (overArg);
8772
8773
8774/***/ }),
8775/* 113 */
8776/***/ (function(module, __webpack_exports__, __webpack_require__) {
8777
8778"use strict";
8779__webpack_require__.r(__webpack_exports__);
8780/**
8781 * Checks if `value` is object-like. A value is object-like if it's not `null`
8782 * and has a `typeof` result of "object".
8783 *
8784 * @static
8785 * @memberOf _
8786 * @since 4.0.0
8787 * @category Lang
8788 * @param {*} value The value to check.
8789 * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
8790 * @example
8791 *
8792 * _.isObjectLike({});
8793 * // => true
8794 *
8795 * _.isObjectLike([1, 2, 3]);
8796 * // => true
8797 *
8798 * _.isObjectLike(_.noop);
8799 * // => false
8800 *
8801 * _.isObjectLike(null);
8802 * // => false
8803 */
8804function isObjectLike(value) {
8805  return value != null && typeof value == 'object';
8806}
8807
8808/* harmony default export */ __webpack_exports__["default"] = (isObjectLike);
8809
8810
8811/***/ }),
8812/* 114 */
8813/***/ (function(module, __webpack_exports__, __webpack_require__) {
8814
8815"use strict";
8816__webpack_require__.r(__webpack_exports__);
8817/* WEBPACK VAR INJECTION */(function(global, module) {/* harmony import */ var _ponyfill_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(116);
8818/* global window */
8819
8820
8821var root;
8822
8823if (typeof self !== 'undefined') {
8824  root = self;
8825} else if (typeof window !== 'undefined') {
8826  root = window;
8827} else if (typeof global !== 'undefined') {
8828  root = global;
8829} else if (true) {
8830  root = module;
8831} else {}
8832
8833var result = Object(_ponyfill_js__WEBPACK_IMPORTED_MODULE_0__["default"])(root);
8834/* harmony default export */ __webpack_exports__["default"] = (result);
8835
8836/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(30), __webpack_require__(115)(module)))
8837
8838/***/ }),
8839/* 115 */
8840/***/ (function(module, exports) {
8841
8842module.exports = function(originalModule) {
8843	if (!originalModule.webpackPolyfill) {
8844		var module = Object.create(originalModule);
8845		// module.parent = undefined by default
8846		if (!module.children) module.children = [];
8847		Object.defineProperty(module, "loaded", {
8848			enumerable: true,
8849			get: function() {
8850				return module.l;
8851			}
8852		});
8853		Object.defineProperty(module, "id", {
8854			enumerable: true,
8855			get: function() {
8856				return module.i;
8857			}
8858		});
8859		Object.defineProperty(module, "exports", {
8860			enumerable: true
8861		});
8862		module.webpackPolyfill = 1;
8863	}
8864	return module;
8865};
8866
8867
8868/***/ }),
8869/* 116 */
8870/***/ (function(module, __webpack_exports__, __webpack_require__) {
8871
8872"use strict";
8873__webpack_require__.r(__webpack_exports__);
8874/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return symbolObservablePonyfill; });
8875function symbolObservablePonyfill(root) {
8876	var result;
8877	var Symbol = root.Symbol;
8878
8879	if (typeof Symbol === 'function') {
8880		if (Symbol.observable) {
8881			result = Symbol.observable;
8882		} else {
8883			result = Symbol('observable');
8884			Symbol.observable = result;
8885		}
8886	} else {
8887		result = '@@observable';
8888	}
8889
8890	return result;
8891};
8892
8893
8894/***/ }),
8895/* 117 */
8896/***/ (function(module, exports, __webpack_require__) {
8897
8898"use strict";
8899
8900
8901Object.defineProperty(exports, "__esModule", {
8902  value: true
8903});
8904exports["default"] = void 0;
8905
8906var _redux = __webpack_require__(56);
8907
8908var _IX2DataReducer = __webpack_require__(118);
8909
8910var _IX2RequestReducer = __webpack_require__(198);
8911
8912var _IX2SessionReducer = __webpack_require__(199);
8913
8914var _shared = __webpack_require__(3);
8915
8916var _IX2InstancesReducer = __webpack_require__(200);
8917
8918var _IX2ParametersReducer = __webpack_require__(201);
8919
8920var ixElements = _shared.IX2ElementsReducer.ixElements;
8921
8922var _default = (0, _redux.combineReducers)({
8923  ixData: _IX2DataReducer.ixData,
8924  ixRequest: _IX2RequestReducer.ixRequest,
8925  ixSession: _IX2SessionReducer.ixSession,
8926  ixElements: ixElements,
8927  ixInstances: _IX2InstancesReducer.ixInstances,
8928  ixParameters: _IX2ParametersReducer.ixParameters
8929});
8930
8931exports["default"] = _default;
8932
8933/***/ }),
8934/* 118 */
8935/***/ (function(module, exports, __webpack_require__) {
8936
8937"use strict";
8938
8939
8940Object.defineProperty(exports, "__esModule", {
8941  value: true
8942});
8943exports.ixData = void 0;
8944
8945var _shared = __webpack_require__(3);
8946
8947var IX2_RAW_DATA_IMPORTED = _shared.IX2EngineActionTypes.IX2_RAW_DATA_IMPORTED;
8948
8949var ixData = function ixData() {
8950  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Object.freeze({});
8951  var action = arguments.length > 1 ? arguments[1] : undefined;
8952
8953  switch (action.type) {
vendor: 5,791 bytes, lines 8954-9216
8954    case IX2_RAW_DATA_IMPORTED:
8955      {
8956        return action.payload.ixData || Object.freeze({});
8957      }
8958
8959    default:
8960      {
8961        return state;
8962      }
8963  }
8964};
8965
8966exports.ixData = ixData;
8967
8968/***/ }),
8969/* 119 */
8970/***/ (function(module, exports, __webpack_require__) {
8971
8972var baseIsMatch = __webpack_require__(120),
8973    getMatchData = __webpack_require__(172),
8974    matchesStrictComparable = __webpack_require__(79);
8975
8976/**
8977 * The base implementation of `_.matches` which doesn't clone `source`.
8978 *
8979 * @private
8980 * @param {Object} source The object of property values to match.
8981 * @returns {Function} Returns the new spec function.
8982 */
8983function baseMatches(source) {
8984  var matchData = getMatchData(source);
8985  if (matchData.length == 1 && matchData[0][2]) {
8986    return matchesStrictComparable(matchData[0][0], matchData[0][1]);
8987  }
8988  return function(object) {
8989    return object === source || baseIsMatch(object, source, matchData);
8990  };
8991}
8992
8993module.exports = baseMatches;
8994
8995
8996/***/ }),
8997/* 120 */
8998/***/ (function(module, exports, __webpack_require__) {
8999
9000var Stack = __webpack_require__(65),
9001    baseIsEqual = __webpack_require__(69);
9002
9003/** Used to compose bitmasks for value comparisons. */
9004var COMPARE_PARTIAL_FLAG = 1,
9005    COMPARE_UNORDERED_FLAG = 2;
9006
9007/**
9008 * The base implementation of `_.isMatch` without support for iteratee shorthands.
9009 *
9010 * @private
9011 * @param {Object} object The object to inspect.
9012 * @param {Object} source The object of property values to match.
9013 * @param {Array} matchData The property names, values, and compare flags to match.
9014 * @param {Function} [customizer] The function to customize comparisons.
9015 * @returns {boolean} Returns `true` if `object` is a match, else `false`.
9016 */
9017function baseIsMatch(object, source, matchData, customizer) {
9018  var index = matchData.length,
9019      length = index,
9020      noCustomizer = !customizer;
9021
9022  if (object == null) {
9023    return !length;
9024  }
9025  object = Object(object);
9026  while (index--) {
9027    var data = matchData[index];
9028    if ((noCustomizer && data[2])
9029          ? data[1] !== object[data[0]]
9030          : !(data[0] in object)
9031        ) {
9032      return false;
9033    }
9034  }
9035  while (++index < length) {
9036    data = matchData[index];
9037    var key = data[0],
9038        objValue = object[key],
9039        srcValue = data[1];
9040
9041    if (noCustomizer && data[2]) {
9042      if (objValue === undefined && !(key in object)) {
9043        return false;
9044      }
9045    } else {
9046      var stack = new Stack;
9047      if (customizer) {
9048        var result = customizer(objValue, srcValue, key, object, source, stack);
9049      }
9050      if (!(result === undefined
9051            ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)
9052            : result
9053          )) {
9054        return false;
9055      }
9056    }
9057  }
9058  return true;
9059}
9060
9061module.exports = baseIsMatch;
9062
9063
9064/***/ }),
9065/* 121 */
9066/***/ (function(module, exports) {
9067
9068/**
9069 * Removes all key-value entries from the list cache.
9070 *
9071 * @private
9072 * @name clear
9073 * @memberOf ListCache
9074 */
9075function listCacheClear() {
9076  this.__data__ = [];
9077  this.size = 0;
9078}
9079
9080module.exports = listCacheClear;
9081
9082
9083/***/ }),
9084/* 122 */
9085/***/ (function(module, exports, __webpack_require__) {
9086
9087var assocIndexOf = __webpack_require__(18);
9088
9089/** Used for built-in method references. */
9090var arrayProto = Array.prototype;
9091
9092/** Built-in value references. */
9093var splice = arrayProto.splice;
9094
9095/**
9096 * Removes `key` and its value from the list cache.
9097 *
9098 * @private
9099 * @name delete
9100 * @memberOf ListCache
9101 * @param {string} key The key of the value to remove.
9102 * @returns {boolean} Returns `true` if the entry was removed, else `false`.
9103 */
9104function listCacheDelete(key) {
9105  var data = this.__data__,
9106      index = assocIndexOf(data, key);
9107
9108  if (index < 0) {
9109    return false;
9110  }
9111  var lastIndex = data.length - 1;
9112  if (index == lastIndex) {
9113    data.pop();
9114  } else {
9115    splice.call(data, index, 1);
9116  }
9117  --this.size;
9118  return true;
9119}
9120
9121module.exports = listCacheDelete;
9122
9123
9124/***/ }),
9125/* 123 */
9126/***/ (function(module, exports, __webpack_require__) {
9127
9128var assocIndexOf = __webpack_require__(18);
9129
9130/**
9131 * Gets the list cache value for `key`.
9132 *
9133 * @private
9134 * @name get
9135 * @memberOf ListCache
9136 * @param {string} key The key of the value to get.
9137 * @returns {*} Returns the entry value.
9138 */
9139function listCacheGet(key) {
9140  var data = this.__data__,
9141      index = assocIndexOf(data, key);
9142
9143  return index < 0 ? undefined : data[index][1];
9144}
9145
9146module.exports = listCacheGet;
9147
9148
9149/***/ }),
9150/* 124 */
9151/***/ (function(module, exports, __webpack_require__) {
9152
9153var assocIndexOf = __webpack_require__(18);
9154
9155/**
9156 * Checks if a list cache value for `key` exists.
9157 *
9158 * @private
9159 * @name has
9160 * @memberOf ListCache
9161 * @param {string} key The key of the entry to check.
9162 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
9163 */
9164function listCacheHas(key) {
9165  return assocIndexOf(this.__data__, key) > -1;
9166}
9167
9168module.exports = listCacheHas;
9169
9170
9171/***/ }),
9172/* 125 */
9173/***/ (function(module, exports, __webpack_require__) {
9174
9175var assocIndexOf = __webpack_require__(18);
9176
9177/**
9178 * Sets the list cache `key` to `value`.
9179 *
9180 * @private
9181 * @name set
9182 * @memberOf ListCache
9183 * @param {string} key The key of the value to set.
9184 * @param {*} value The value to set.
9185 * @returns {Object} Returns the list cache instance.
9186 */
9187function listCacheSet(key, value) {
9188  var data = this.__data__,
9189      index = assocIndexOf(data, key);
9190
9191  if (index < 0) {
9192    ++this.size;
9193    data.push([key, value]);
9194  } else {
9195    data[index][1] = value;
9196  }
9197  return this;
9198}
9199
9200module.exports = listCacheSet;
9201
9202
9203/***/ }),
9204/* 126 */
9205/***/ (function(module, exports, __webpack_require__) {
9206
9207var ListCache = __webpack_require__(17);
9208
9209/**
9210 * Removes all key-value entries from the stack.
9211 *
9212 * @private
9213 * @name clear
9214 * @memberOf Stack
9215 */
9216function stackClear() {
vendor: 8,503 bytes, lines 9217-9605
9217  this.__data__ = new ListCache;
9218  this.size = 0;
9219}
9220
9221module.exports = stackClear;
9222
9223
9224/***/ }),
9225/* 127 */
9226/***/ (function(module, exports) {
9227
9228/**
9229 * Removes `key` and its value from the stack.
9230 *
9231 * @private
9232 * @name delete
9233 * @memberOf Stack
9234 * @param {string} key The key of the value to remove.
9235 * @returns {boolean} Returns `true` if the entry was removed, else `false`.
9236 */
9237function stackDelete(key) {
9238  var data = this.__data__,
9239      result = data['delete'](key);
9240
9241  this.size = data.size;
9242  return result;
9243}
9244
9245module.exports = stackDelete;
9246
9247
9248/***/ }),
9249/* 128 */
9250/***/ (function(module, exports) {
9251
9252/**
9253 * Gets the stack value for `key`.
9254 *
9255 * @private
9256 * @name get
9257 * @memberOf Stack
9258 * @param {string} key The key of the value to get.
9259 * @returns {*} Returns the entry value.
9260 */
9261function stackGet(key) {
9262  return this.__data__.get(key);
9263}
9264
9265module.exports = stackGet;
9266
9267
9268/***/ }),
9269/* 129 */
9270/***/ (function(module, exports) {
9271
9272/**
9273 * Checks if a stack value for `key` exists.
9274 *
9275 * @private
9276 * @name has
9277 * @memberOf Stack
9278 * @param {string} key The key of the entry to check.
9279 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
9280 */
9281function stackHas(key) {
9282  return this.__data__.has(key);
9283}
9284
9285module.exports = stackHas;
9286
9287
9288/***/ }),
9289/* 130 */
9290/***/ (function(module, exports, __webpack_require__) {
9291
9292var ListCache = __webpack_require__(17),
9293    Map = __webpack_require__(34),
9294    MapCache = __webpack_require__(35);
9295
9296/** Used as the size to enable large array optimizations. */
9297var LARGE_ARRAY_SIZE = 200;
9298
9299/**
9300 * Sets the stack `key` to `value`.
9301 *
9302 * @private
9303 * @name set
9304 * @memberOf Stack
9305 * @param {string} key The key of the value to set.
9306 * @param {*} value The value to set.
9307 * @returns {Object} Returns the stack cache instance.
9308 */
9309function stackSet(key, value) {
9310  var data = this.__data__;
9311  if (data instanceof ListCache) {
9312    var pairs = data.__data__;
9313    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {
9314      pairs.push([key, value]);
9315      this.size = ++data.size;
9316      return this;
9317    }
9318    data = this.__data__ = new MapCache(pairs);
9319  }
9320  data.set(key, value);
9321  this.size = data.size;
9322  return this;
9323}
9324
9325module.exports = stackSet;
9326
9327
9328/***/ }),
9329/* 131 */
9330/***/ (function(module, exports, __webpack_require__) {
9331
9332var isFunction = __webpack_require__(66),
9333    isMasked = __webpack_require__(134),
9334    isObject = __webpack_require__(5),
9335    toSource = __webpack_require__(68);
9336
9337/**
9338 * Used to match `RegExp`
9339 * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
9340 */
9341var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
9342
9343/** Used to detect host constructors (Safari). */
9344var reIsHostCtor = /^\[object .+?Constructor\]$/;
9345
9346/** Used for built-in method references. */
9347var funcProto = Function.prototype,
9348    objectProto = Object.prototype;
9349
9350/** Used to resolve the decompiled source of functions. */
9351var funcToString = funcProto.toString;
9352
9353/** Used to check objects for own properties. */
9354var hasOwnProperty = objectProto.hasOwnProperty;
9355
9356/** Used to detect if a method is native. */
9357var reIsNative = RegExp('^' +
9358  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
9359  .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
9360);
9361
9362/**
9363 * The base implementation of `_.isNative` without bad shim checks.
9364 *
9365 * @private
9366 * @param {*} value The value to check.
9367 * @returns {boolean} Returns `true` if `value` is a native function,
9368 *  else `false`.
9369 */
9370function baseIsNative(value) {
9371  if (!isObject(value) || isMasked(value)) {
9372    return false;
9373  }
9374  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;
9375  return pattern.test(toSource(value));
9376}
9377
9378module.exports = baseIsNative;
9379
9380
9381/***/ }),
9382/* 132 */
9383/***/ (function(module, exports, __webpack_require__) {
9384
9385var Symbol = __webpack_require__(11);
9386
9387/** Used for built-in method references. */
9388var objectProto = Object.prototype;
9389
9390/** Used to check objects for own properties. */
9391var hasOwnProperty = objectProto.hasOwnProperty;
9392
9393/**
9394 * Used to resolve the
9395 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
9396 * of values.
9397 */
9398var nativeObjectToString = objectProto.toString;
9399
9400/** Built-in value references. */
9401var symToStringTag = Symbol ? Symbol.toStringTag : undefined;
9402
9403/**
9404 * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
9405 *
9406 * @private
9407 * @param {*} value The value to query.
9408 * @returns {string} Returns the raw `toStringTag`.
9409 */
9410function getRawTag(value) {
9411  var isOwn = hasOwnProperty.call(value, symToStringTag),
9412      tag = value[symToStringTag];
9413
9414  try {
9415    value[symToStringTag] = undefined;
9416    var unmasked = true;
9417  } catch (e) {}
9418
9419  var result = nativeObjectToString.call(value);
9420  if (unmasked) {
9421    if (isOwn) {
9422      value[symToStringTag] = tag;
9423    } else {
9424      delete value[symToStringTag];
9425    }
9426  }
9427  return result;
9428}
9429
9430module.exports = getRawTag;
9431
9432
9433/***/ }),
9434/* 133 */
9435/***/ (function(module, exports) {
9436
9437/** Used for built-in method references. */
9438var objectProto = Object.prototype;
9439
9440/**
9441 * Used to resolve the
9442 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
9443 * of values.
9444 */
9445var nativeObjectToString = objectProto.toString;
9446
9447/**
9448 * Converts `value` to a string using `Object.prototype.toString`.
9449 *
9450 * @private
9451 * @param {*} value The value to convert.
9452 * @returns {string} Returns the converted string.
9453 */
9454function objectToString(value) {
9455  return nativeObjectToString.call(value);
9456}
9457
9458module.exports = objectToString;
9459
9460
9461/***/ }),
9462/* 134 */
9463/***/ (function(module, exports, __webpack_require__) {
9464
9465var coreJsData = __webpack_require__(135);
9466
9467/** Used to detect methods masquerading as native. */
9468var maskSrcKey = (function() {
9469  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
9470  return uid ? ('Symbol(src)_1.' + uid) : '';
9471}());
9472
9473/**
9474 * Checks if `func` has its source masked.
9475 *
9476 * @private
9477 * @param {Function} func The function to check.
9478 * @returns {boolean} Returns `true` if `func` is masked, else `false`.
9479 */
9480function isMasked(func) {
9481  return !!maskSrcKey && (maskSrcKey in func);
9482}
9483
9484module.exports = isMasked;
9485
9486
9487/***/ }),
9488/* 135 */
9489/***/ (function(module, exports, __webpack_require__) {
9490
9491var root = __webpack_require__(4);
9492
9493/** Used to detect overreaching core-js shims. */
9494var coreJsData = root['__core-js_shared__'];
9495
9496module.exports = coreJsData;
9497
9498
9499/***/ }),
9500/* 136 */
9501/***/ (function(module, exports) {
9502
9503/**
9504 * Gets the value at `key` of `object`.
9505 *
9506 * @private
9507 * @param {Object} [object] The object to query.
9508 * @param {string} key The key of the property to get.
9509 * @returns {*} Returns the property value.
9510 */
9511function getValue(object, key) {
9512  return object == null ? undefined : object[key];
9513}
9514
9515module.exports = getValue;
9516
9517
9518/***/ }),
9519/* 137 */
9520/***/ (function(module, exports, __webpack_require__) {
9521
9522var Hash = __webpack_require__(138),
9523    ListCache = __webpack_require__(17),
9524    Map = __webpack_require__(34);
9525
9526/**
9527 * Removes all key-value entries from the map.
9528 *
9529 * @private
9530 * @name clear
9531 * @memberOf MapCache
9532 */
9533function mapCacheClear() {
9534  this.size = 0;
9535  this.__data__ = {
9536    'hash': new Hash,
9537    'map': new (Map || ListCache),
9538    'string': new Hash
9539  };
9540}
9541
9542module.exports = mapCacheClear;
9543
9544
9545/***/ }),
9546/* 138 */
9547/***/ (function(module, exports, __webpack_require__) {
9548
9549var hashClear = __webpack_require__(139),
9550    hashDelete = __webpack_require__(140),
9551    hashGet = __webpack_require__(141),
9552    hashHas = __webpack_require__(142),
9553    hashSet = __webpack_require__(143);
9554
9555/**
9556 * Creates a hash object.
9557 *
9558 * @private
9559 * @constructor
9560 * @param {Array} [entries] The key-value pairs to cache.
9561 */
9562function Hash(entries) {
9563  var index = -1,
9564      length = entries == null ? 0 : entries.length;
9565
9566  this.clear();
9567  while (++index < length) {
9568    var entry = entries[index];
9569    this.set(entry[0], entry[1]);
9570  }
9571}
9572
9573// Add methods to `Hash`.
9574Hash.prototype.clear = hashClear;
9575Hash.prototype['delete'] = hashDelete;
9576Hash.prototype.get = hashGet;
9577Hash.prototype.has = hashHas;
9578Hash.prototype.set = hashSet;
9579
9580module.exports = Hash;
9581
9582
9583/***/ }),
9584/* 139 */
9585/***/ (function(module, exports, __webpack_require__) {
9586
9587var nativeCreate = __webpack_require__(19);
9588
9589/**
9590 * Removes all key-value entries from the hash.
9591 *
9592 * @private
9593 * @name clear
9594 * @memberOf Hash
9595 */
9596function hashClear() {
9597  this.__data__ = nativeCreate ? nativeCreate(null) : {};
9598  this.size = 0;
9599}
9600
9601module.exports = hashClear;
9602
9603
9604/***/ }),
9605/* 140 */
vendor: 17,076 bytes, lines 9606-10267
9606/***/ (function(module, exports) {
9607
9608/**
9609 * Removes `key` and its value from the hash.
9610 *
9611 * @private
9612 * @name delete
9613 * @memberOf Hash
9614 * @param {Object} hash The hash to modify.
9615 * @param {string} key The key of the value to remove.
9616 * @returns {boolean} Returns `true` if the entry was removed, else `false`.
9617 */
9618function hashDelete(key) {
9619  var result = this.has(key) && delete this.__data__[key];
9620  this.size -= result ? 1 : 0;
9621  return result;
9622}
9623
9624module.exports = hashDelete;
9625
9626
9627/***/ }),
9628/* 141 */
9629/***/ (function(module, exports, __webpack_require__) {
9630
9631var nativeCreate = __webpack_require__(19);
9632
9633/** Used to stand-in for `undefined` hash values. */
9634var HASH_UNDEFINED = '__lodash_hash_undefined__';
9635
9636/** Used for built-in method references. */
9637var objectProto = Object.prototype;
9638
9639/** Used to check objects for own properties. */
9640var hasOwnProperty = objectProto.hasOwnProperty;
9641
9642/**
9643 * Gets the hash value for `key`.
9644 *
9645 * @private
9646 * @name get
9647 * @memberOf Hash
9648 * @param {string} key The key of the value to get.
9649 * @returns {*} Returns the entry value.
9650 */
9651function hashGet(key) {
9652  var data = this.__data__;
9653  if (nativeCreate) {
9654    var result = data[key];
9655    return result === HASH_UNDEFINED ? undefined : result;
9656  }
9657  return hasOwnProperty.call(data, key) ? data[key] : undefined;
9658}
9659
9660module.exports = hashGet;
9661
9662
9663/***/ }),
9664/* 142 */
9665/***/ (function(module, exports, __webpack_require__) {
9666
9667var nativeCreate = __webpack_require__(19);
9668
9669/** Used for built-in method references. */
9670var objectProto = Object.prototype;
9671
9672/** Used to check objects for own properties. */
9673var hasOwnProperty = objectProto.hasOwnProperty;
9674
9675/**
9676 * Checks if a hash value for `key` exists.
9677 *
9678 * @private
9679 * @name has
9680 * @memberOf Hash
9681 * @param {string} key The key of the entry to check.
9682 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
9683 */
9684function hashHas(key) {
9685  var data = this.__data__;
9686  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);
9687}
9688
9689module.exports = hashHas;
9690
9691
9692/***/ }),
9693/* 143 */
9694/***/ (function(module, exports, __webpack_require__) {
9695
9696var nativeCreate = __webpack_require__(19);
9697
9698/** Used to stand-in for `undefined` hash values. */
9699var HASH_UNDEFINED = '__lodash_hash_undefined__';
9700
9701/**
9702 * Sets the hash `key` to `value`.
9703 *
9704 * @private
9705 * @name set
9706 * @memberOf Hash
9707 * @param {string} key The key of the value to set.
9708 * @param {*} value The value to set.
9709 * @returns {Object} Returns the hash instance.
9710 */
9711function hashSet(key, value) {
9712  var data = this.__data__;
9713  this.size += this.has(key) ? 0 : 1;
9714  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
9715  return this;
9716}
9717
9718module.exports = hashSet;
9719
9720
9721/***/ }),
9722/* 144 */
9723/***/ (function(module, exports, __webpack_require__) {
9724
9725var getMapData = __webpack_require__(20);
9726
9727/**
9728 * Removes `key` and its value from the map.
9729 *
9730 * @private
9731 * @name delete
9732 * @memberOf MapCache
9733 * @param {string} key The key of the value to remove.
9734 * @returns {boolean} Returns `true` if the entry was removed, else `false`.
9735 */
9736function mapCacheDelete(key) {
9737  var result = getMapData(this, key)['delete'](key);
9738  this.size -= result ? 1 : 0;
9739  return result;
9740}
9741
9742module.exports = mapCacheDelete;
9743
9744
9745/***/ }),
9746/* 145 */
9747/***/ (function(module, exports) {
9748
9749/**
9750 * Checks if `value` is suitable for use as unique object key.
9751 *
9752 * @private
9753 * @param {*} value The value to check.
9754 * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
9755 */
9756function isKeyable(value) {
9757  var type = typeof value;
9758  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
9759    ? (value !== '__proto__')
9760    : (value === null);
9761}
9762
9763module.exports = isKeyable;
9764
9765
9766/***/ }),
9767/* 146 */
9768/***/ (function(module, exports, __webpack_require__) {
9769
9770var getMapData = __webpack_require__(20);
9771
9772/**
9773 * Gets the map value for `key`.
9774 *
9775 * @private
9776 * @name get
9777 * @memberOf MapCache
9778 * @param {string} key The key of the value to get.
9779 * @returns {*} Returns the entry value.
9780 */
9781function mapCacheGet(key) {
9782  return getMapData(this, key).get(key);
9783}
9784
9785module.exports = mapCacheGet;
9786
9787
9788/***/ }),
9789/* 147 */
9790/***/ (function(module, exports, __webpack_require__) {
9791
9792var getMapData = __webpack_require__(20);
9793
9794/**
9795 * Checks if a map value for `key` exists.
9796 *
9797 * @private
9798 * @name has
9799 * @memberOf MapCache
9800 * @param {string} key The key of the entry to check.
9801 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
9802 */
9803function mapCacheHas(key) {
9804  return getMapData(this, key).has(key);
9805}
9806
9807module.exports = mapCacheHas;
9808
9809
9810/***/ }),
9811/* 148 */
9812/***/ (function(module, exports, __webpack_require__) {
9813
9814var getMapData = __webpack_require__(20);
9815
9816/**
9817 * Sets the map `key` to `value`.
9818 *
9819 * @private
9820 * @name set
9821 * @memberOf MapCache
9822 * @param {string} key The key of the value to set.
9823 * @param {*} value The value to set.
9824 * @returns {Object} Returns the map cache instance.
9825 */
9826function mapCacheSet(key, value) {
9827  var data = getMapData(this, key),
9828      size = data.size;
9829
9830  data.set(key, value);
9831  this.size += data.size == size ? 0 : 1;
9832  return this;
9833}
9834
9835module.exports = mapCacheSet;
9836
9837
9838/***/ }),
9839/* 149 */
9840/***/ (function(module, exports, __webpack_require__) {
9841
9842var Stack = __webpack_require__(65),
9843    equalArrays = __webpack_require__(70),
9844    equalByTag = __webpack_require__(155),
9845    equalObjects = __webpack_require__(159),
9846    getTag = __webpack_require__(43),
9847    isArray = __webpack_require__(1),
9848    isBuffer = __webpack_require__(37),
9849    isTypedArray = __webpack_require__(39);
9850
9851/** Used to compose bitmasks for value comparisons. */
9852var COMPARE_PARTIAL_FLAG = 1;
9853
9854/** `Object#toString` result references. */
9855var argsTag = '[object Arguments]',
9856    arrayTag = '[object Array]',
9857    objectTag = '[object Object]';
9858
9859/** Used for built-in method references. */
9860var objectProto = Object.prototype;
9861
9862/** Used to check objects for own properties. */
9863var hasOwnProperty = objectProto.hasOwnProperty;
9864
9865/**
9866 * A specialized version of `baseIsEqual` for arrays and objects which performs
9867 * deep comparisons and tracks traversed objects enabling objects with circular
9868 * references to be compared.
9869 *
9870 * @private
9871 * @param {Object} object The object to compare.
9872 * @param {Object} other The other object to compare.
9873 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
9874 * @param {Function} customizer The function to customize comparisons.
9875 * @param {Function} equalFunc The function to determine equivalents of values.
9876 * @param {Object} [stack] Tracks traversed `object` and `other` objects.
9877 * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
9878 */
9879function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
9880  var objIsArr = isArray(object),
9881      othIsArr = isArray(other),
9882      objTag = objIsArr ? arrayTag : getTag(object),
9883      othTag = othIsArr ? arrayTag : getTag(other);
9884
9885  objTag = objTag == argsTag ? objectTag : objTag;
9886  othTag = othTag == argsTag ? objectTag : othTag;
9887
9888  var objIsObj = objTag == objectTag,
9889      othIsObj = othTag == objectTag,
9890      isSameTag = objTag == othTag;
9891
9892  if (isSameTag && isBuffer(object)) {
9893    if (!isBuffer(other)) {
9894      return false;
9895    }
9896    objIsArr = true;
9897    objIsObj = false;
9898  }
9899  if (isSameTag && !objIsObj) {
9900    stack || (stack = new Stack);
9901    return (objIsArr || isTypedArray(object))
9902      ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)
9903      : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
9904  }
9905  if (!(bitmask & COMPARE_PARTIAL_FLAG)) {
9906    var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
9907        othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');
9908
9909    if (objIsWrapped || othIsWrapped) {
9910      var objUnwrapped = objIsWrapped ? object.value() : object,
9911          othUnwrapped = othIsWrapped ? other.value() : other;
9912
9913      stack || (stack = new Stack);
9914      return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
9915    }
9916  }
9917  if (!isSameTag) {
9918    return false;
9919  }
9920  stack || (stack = new Stack);
9921  return equalObjects(object, other, bitmask, customizer, equalFunc, stack);
9922}
9923
9924module.exports = baseIsEqualDeep;
9925
9926
9927/***/ }),
9928/* 150 */
9929/***/ (function(module, exports, __webpack_require__) {
9930
9931var MapCache = __webpack_require__(35),
9932    setCacheAdd = __webpack_require__(151),
9933    setCacheHas = __webpack_require__(152);
9934
9935/**
9936 *
9937 * Creates an array cache object to store unique values.
9938 *
9939 * @private
9940 * @constructor
9941 * @param {Array} [values] The values to cache.
9942 */
9943function SetCache(values) {
9944  var index = -1,
9945      length = values == null ? 0 : values.length;
9946
9947  this.__data__ = new MapCache;
9948  while (++index < length) {
9949    this.add(values[index]);
9950  }
9951}
9952
9953// Add methods to `SetCache`.
9954SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
9955SetCache.prototype.has = setCacheHas;
9956
9957module.exports = SetCache;
9958
9959
9960/***/ }),
9961/* 151 */
9962/***/ (function(module, exports) {
9963
9964/** Used to stand-in for `undefined` hash values. */
9965var HASH_UNDEFINED = '__lodash_hash_undefined__';
9966
9967/**
9968 * Adds `value` to the array cache.
9969 *
9970 * @private
9971 * @name add
9972 * @memberOf SetCache
9973 * @alias push
9974 * @param {*} value The value to cache.
9975 * @returns {Object} Returns the cache instance.
9976 */
9977function setCacheAdd(value) {
9978  this.__data__.set(value, HASH_UNDEFINED);
9979  return this;
9980}
9981
9982module.exports = setCacheAdd;
9983
9984
9985/***/ }),
9986/* 152 */
9987/***/ (function(module, exports) {
9988
9989/**
9990 * Checks if `value` is in the array cache.
9991 *
9992 * @private
9993 * @name has
9994 * @memberOf SetCache
9995 * @param {*} value The value to search for.
9996 * @returns {number} Returns `true` if `value` is found, else `false`.
9997 */
9998function setCacheHas(value) {
9999  return this.__data__.has(value);
10000}
10001
10002module.exports = setCacheHas;
10003
10004
10005/***/ }),
10006/* 153 */
10007/***/ (function(module, exports) {
10008
10009/**
10010 * A specialized version of `_.some` for arrays without support for iteratee
10011 * shorthands.
10012 *
10013 * @private
10014 * @param {Array} [array] The array to iterate over.
10015 * @param {Function} predicate The function invoked per iteration.
10016 * @returns {boolean} Returns `true` if any element passes the predicate check,
10017 *  else `false`.
10018 */
10019function arraySome(array, predicate) {
10020  var index = -1,
10021      length = array == null ? 0 : array.length;
10022
10023  while (++index < length) {
10024    if (predicate(array[index], index, array)) {
10025      return true;
10026    }
10027  }
10028  return false;
10029}
10030
10031module.exports = arraySome;
10032
10033
10034/***/ }),
10035/* 154 */
10036/***/ (function(module, exports) {
10037
10038/**
10039 * Checks if a `cache` value for `key` exists.
10040 *
10041 * @private
10042 * @param {Object} cache The cache to query.
10043 * @param {string} key The key of the entry to check.
10044 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
10045 */
10046function cacheHas(cache, key) {
10047  return cache.has(key);
10048}
10049
10050module.exports = cacheHas;
10051
10052
10053/***/ }),
10054/* 155 */
10055/***/ (function(module, exports, __webpack_require__) {
10056
10057var Symbol = __webpack_require__(11),
10058    Uint8Array = __webpack_require__(156),
10059    eq = __webpack_require__(33),
10060    equalArrays = __webpack_require__(70),
10061    mapToArray = __webpack_require__(157),
10062    setToArray = __webpack_require__(158);
10063
10064/** Used to compose bitmasks for value comparisons. */
10065var COMPARE_PARTIAL_FLAG = 1,
10066    COMPARE_UNORDERED_FLAG = 2;
10067
10068/** `Object#toString` result references. */
10069var boolTag = '[object Boolean]',
10070    dateTag = '[object Date]',
10071    errorTag = '[object Error]',
10072    mapTag = '[object Map]',
10073    numberTag = '[object Number]',
10074    regexpTag = '[object RegExp]',
10075    setTag = '[object Set]',
10076    stringTag = '[object String]',
10077    symbolTag = '[object Symbol]';
10078
10079var arrayBufferTag = '[object ArrayBuffer]',
10080    dataViewTag = '[object DataView]';
10081
10082/** Used to convert symbols to primitives and strings. */
10083var symbolProto = Symbol ? Symbol.prototype : undefined,
10084    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;
10085
10086/**
10087 * A specialized version of `baseIsEqualDeep` for comparing objects of
10088 * the same `toStringTag`.
10089 *
10090 * **Note:** This function only supports comparing values with tags of
10091 * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
10092 *
10093 * @private
10094 * @param {Object} object The object to compare.
10095 * @param {Object} other The other object to compare.
10096 * @param {string} tag The `toStringTag` of the objects to compare.
10097 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
10098 * @param {Function} customizer The function to customize comparisons.
10099 * @param {Function} equalFunc The function to determine equivalents of values.
10100 * @param {Object} stack Tracks traversed `object` and `other` objects.
10101 * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
10102 */
10103function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
10104  switch (tag) {
10105    case dataViewTag:
10106      if ((object.byteLength != other.byteLength) ||
10107          (object.byteOffset != other.byteOffset)) {
10108        return false;
10109      }
10110      object = object.buffer;
10111      other = other.buffer;
10112
10113    case arrayBufferTag:
10114      if ((object.byteLength != other.byteLength) ||
10115          !equalFunc(new Uint8Array(object), new Uint8Array(other))) {
10116        return false;
10117      }
10118      return true;
10119
10120    case boolTag:
10121    case dateTag:
10122    case numberTag:
10123      // Coerce booleans to `1` or `0` and dates to milliseconds.
10124      // Invalid dates are coerced to `NaN`.
10125      return eq(+object, +other);
10126
10127    case errorTag:
10128      return object.name == other.name && object.message == other.message;
10129
10130    case regexpTag:
10131    case stringTag:
10132      // Coerce regexes to strings and treat strings, primitives and objects,
10133      // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring
10134      // for more details.
10135      return object == (other + '');
10136
10137    case mapTag:
10138      var convert = mapToArray;
10139
10140    case setTag:
10141      var isPartial = bitmask & COMPARE_PARTIAL_FLAG;
10142      convert || (convert = setToArray);
10143
10144      if (object.size != other.size && !isPartial) {
10145        return false;
10146      }
10147      // Assume cyclic values are equal.
10148      var stacked = stack.get(object);
10149      if (stacked) {
10150        return stacked == other;
10151      }
10152      bitmask |= COMPARE_UNORDERED_FLAG;
10153
10154      // Recursively compare objects (susceptible to call stack limits).
10155      stack.set(object, other);
10156      var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);
10157      stack['delete'](object);
10158      return result;
10159
10160    case symbolTag:
10161      if (symbolValueOf) {
10162        return symbolValueOf.call(object) == symbolValueOf.call(other);
10163      }
10164  }
10165  return false;
10166}
10167
10168module.exports = equalByTag;
10169
10170
10171/***/ }),
10172/* 156 */
10173/***/ (function(module, exports, __webpack_require__) {
10174
10175var root = __webpack_require__(4);
10176
10177/** Built-in value references. */
10178var Uint8Array = root.Uint8Array;
10179
10180module.exports = Uint8Array;
10181
10182
10183/***/ }),
10184/* 157 */
10185/***/ (function(module, exports) {
10186
10187/**
10188 * Converts `map` to its key-value pairs.
10189 *
10190 * @private
10191 * @param {Object} map The map to convert.
10192 * @returns {Array} Returns the key-value pairs.
10193 */
10194function mapToArray(map) {
10195  var index = -1,
10196      result = Array(map.size);
10197
10198  map.forEach(function(value, key) {
10199    result[++index] = [key, value];
10200  });
10201  return result;
10202}
10203
10204module.exports = mapToArray;
10205
10206
10207/***/ }),
10208/* 158 */
10209/***/ (function(module, exports) {
10210
10211/**
10212 * Converts `set` to an array of its values.
10213 *
10214 * @private
10215 * @param {Object} set The set to convert.
10216 * @returns {Array} Returns the values.
10217 */
10218function setToArray(set) {
10219  var index = -1,
10220      result = Array(set.size);
10221
10222  set.forEach(function(value) {
10223    result[++index] = value;
10224  });
10225  return result;
10226}
10227
10228module.exports = setToArray;
10229
10230
10231/***/ }),
10232/* 159 */
10233/***/ (function(module, exports, __webpack_require__) {
10234
10235var getAllKeys = __webpack_require__(160);
10236
10237/** Used to compose bitmasks for value comparisons. */
10238var COMPARE_PARTIAL_FLAG = 1;
10239
10240/** Used for built-in method references. */
10241var objectProto = Object.prototype;
10242
10243/** Used to check objects for own properties. */
10244var hasOwnProperty = objectProto.hasOwnProperty;
10245
10246/**
10247 * A specialized version of `baseIsEqualDeep` for objects with support for
10248 * partial deep comparisons.
10249 *
10250 * @private
10251 * @param {Object} object The object to compare.
10252 * @param {Object} other The other object to compare.
10253 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
10254 * @param {Function} customizer The function to customize comparisons.
10255 * @param {Function} equalFunc The function to determine equivalents of values.
10256 * @param {Object} stack Tracks traversed `object` and `other` objects.
10257 * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
10258 */
10259function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
10260  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
10261      objProps = getAllKeys(object),
10262      objLength = objProps.length,
10263      othProps = getAllKeys(other),
10264      othLength = othProps.length;
10265
10266  if (objLength != othLength && !isPartial) {
10267    return false;
vendor: 1,526 bytes, lines 10268-10315
10268  }
10269  var index = objLength;
10270  while (index--) {
10271    var key = objProps[index];
10272    if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {
10273      return false;
10274    }
10275  }
10276  // Assume cyclic values are equal.
10277  var stacked = stack.get(object);
10278  if (stacked && stack.get(other)) {
10279    return stacked == other;
10280  }
10281  var result = true;
10282  stack.set(object, other);
10283  stack.set(other, object);
10284
10285  var skipCtor = isPartial;
10286  while (++index < objLength) {
10287    key = objProps[index];
10288    var objValue = object[key],
10289        othValue = other[key];
10290
10291    if (customizer) {
10292      var compared = isPartial
10293        ? customizer(othValue, objValue, key, other, object, stack)
10294        : customizer(objValue, othValue, key, object, other, stack);
10295    }
10296    // Recursively compare objects (susceptible to call stack limits).
10297    if (!(compared === undefined
10298          ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))
10299          : compared
10300        )) {
10301      result = false;
10302      break;
10303    }
10304    skipCtor || (skipCtor = key == 'constructor');
10305  }
10306  if (result && !skipCtor) {
10307    var objCtor = object.constructor,
10308        othCtor = other.constructor;
10309
10310    // Non `Object` object instances with different constructors are not equal.
10311    if (objCtor != othCtor &&
10312        ('constructor' in object && 'constructor' in other) &&
10313        !(typeof objCtor == 'function' && objCtor instanceof objCtor &&
10314          typeof othCtor == 'function' && othCtor instanceof othCtor)) {
10315      result = false;
vendor: 4,397 bytes, lines 10316-10496
10316    }
10317  }
10318  stack['delete'](object);
10319  stack['delete'](other);
10320  return result;
10321}
10322
10323module.exports = equalObjects;
10324
10325
10326/***/ }),
10327/* 160 */
10328/***/ (function(module, exports, __webpack_require__) {
10329
10330var baseGetAllKeys = __webpack_require__(71),
10331    getSymbols = __webpack_require__(72),
10332    keys = __webpack_require__(21);
10333
10334/**
10335 * Creates an array of own enumerable property names and symbols of `object`.
10336 *
10337 * @private
10338 * @param {Object} object The object to query.
10339 * @returns {Array} Returns the array of property names and symbols.
10340 */
10341function getAllKeys(object) {
10342  return baseGetAllKeys(object, keys, getSymbols);
10343}
10344
10345module.exports = getAllKeys;
10346
10347
10348/***/ }),
10349/* 161 */
10350/***/ (function(module, exports) {
10351
10352/**
10353 * A specialized version of `_.filter` for arrays without support for
10354 * iteratee shorthands.
10355 *
10356 * @private
10357 * @param {Array} [array] The array to iterate over.
10358 * @param {Function} predicate The function invoked per iteration.
10359 * @returns {Array} Returns the new filtered array.
10360 */
10361function arrayFilter(array, predicate) {
10362  var index = -1,
10363      length = array == null ? 0 : array.length,
10364      resIndex = 0,
10365      result = [];
10366
10367  while (++index < length) {
10368    var value = array[index];
10369    if (predicate(value, index, array)) {
10370      result[resIndex++] = value;
10371    }
10372  }
10373  return result;
10374}
10375
10376module.exports = arrayFilter;
10377
10378
10379/***/ }),
10380/* 162 */
10381/***/ (function(module, exports) {
10382
10383/**
10384 * The base implementation of `_.times` without support for iteratee shorthands
10385 * or max array length checks.
10386 *
10387 * @private
10388 * @param {number} n The number of times to invoke `iteratee`.
10389 * @param {Function} iteratee The function invoked per iteration.
10390 * @returns {Array} Returns the array of results.
10391 */
10392function baseTimes(n, iteratee) {
10393  var index = -1,
10394      result = Array(n);
10395
10396  while (++index < n) {
10397    result[index] = iteratee(index);
10398  }
10399  return result;
10400}
10401
10402module.exports = baseTimes;
10403
10404
10405/***/ }),
10406/* 163 */
10407/***/ (function(module, exports, __webpack_require__) {
10408
10409var baseGetTag = __webpack_require__(9),
10410    isObjectLike = __webpack_require__(8);
10411
10412/** `Object#toString` result references. */
10413var argsTag = '[object Arguments]';
10414
10415/**
10416 * The base implementation of `_.isArguments`.
10417 *
10418 * @private
10419 * @param {*} value The value to check.
10420 * @returns {boolean} Returns `true` if `value` is an `arguments` object,
10421 */
10422function baseIsArguments(value) {
10423  return isObjectLike(value) && baseGetTag(value) == argsTag;
10424}
10425
10426module.exports = baseIsArguments;
10427
10428
10429/***/ }),
10430/* 164 */
10431/***/ (function(module, exports) {
10432
10433/**
10434 * This method returns `false`.
10435 *
10436 * @static
10437 * @memberOf _
10438 * @since 4.13.0
10439 * @category Util
10440 * @returns {boolean} Returns `false`.
10441 * @example
10442 *
10443 * _.times(2, _.stubFalse);
10444 * // => [false, false]
10445 */
10446function stubFalse() {
10447  return false;
10448}
10449
10450module.exports = stubFalse;
10451
10452
10453/***/ }),
10454/* 165 */
10455/***/ (function(module, exports, __webpack_require__) {
10456
10457var baseGetTag = __webpack_require__(9),
10458    isLength = __webpack_require__(40),
10459    isObjectLike = __webpack_require__(8);
10460
10461/** `Object#toString` result references. */
10462var argsTag = '[object Arguments]',
10463    arrayTag = '[object Array]',
10464    boolTag = '[object Boolean]',
10465    dateTag = '[object Date]',
10466    errorTag = '[object Error]',
10467    funcTag = '[object Function]',
10468    mapTag = '[object Map]',
10469    numberTag = '[object Number]',
10470    objectTag = '[object Object]',
10471    regexpTag = '[object RegExp]',
10472    setTag = '[object Set]',
10473    stringTag = '[object String]',
10474    weakMapTag = '[object WeakMap]';
10475
10476var arrayBufferTag = '[object ArrayBuffer]',
10477    dataViewTag = '[object DataView]',
10478    float32Tag = '[object Float32Array]',
10479    float64Tag = '[object Float64Array]',
10480    int8Tag = '[object Int8Array]',
10481    int16Tag = '[object Int16Array]',
10482    int32Tag = '[object Int32Array]',
10483    uint8Tag = '[object Uint8Array]',
10484    uint8ClampedTag = '[object Uint8ClampedArray]',
10485    uint16Tag = '[object Uint16Array]',
10486    uint32Tag = '[object Uint32Array]';
10487
10488/** Used to identify `toStringTag` values of typed arrays. */
10489var typedArrayTags = {};
10490typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =
10491typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =
10492typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =
10493typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =
10494typedArrayTags[uint32Tag] = true;
10495typedArrayTags[argsTag] = typedArrayTags[arrayTag] =
10496typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =
vendor: 10,053 bytes, lines 10497-10881
10497typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =
10498typedArrayTags[errorTag] = typedArrayTags[funcTag] =
10499typedArrayTags[mapTag] = typedArrayTags[numberTag] =
10500typedArrayTags[objectTag] = typedArrayTags[regexpTag] =
10501typedArrayTags[setTag] = typedArrayTags[stringTag] =
10502typedArrayTags[weakMapTag] = false;
10503
10504/**
10505 * The base implementation of `_.isTypedArray` without Node.js optimizations.
10506 *
10507 * @private
10508 * @param {*} value The value to check.
10509 * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
10510 */
10511function baseIsTypedArray(value) {
10512  return isObjectLike(value) &&
10513    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
10514}
10515
10516module.exports = baseIsTypedArray;
10517
10518
10519/***/ }),
10520/* 166 */
10521/***/ (function(module, exports) {
10522
10523/**
10524 * The base implementation of `_.unary` without support for storing metadata.
10525 *
10526 * @private
10527 * @param {Function} func The function to cap arguments for.
10528 * @returns {Function} Returns the new capped function.
10529 */
10530function baseUnary(func) {
10531  return function(value) {
10532    return func(value);
10533  };
10534}
10535
10536module.exports = baseUnary;
10537
10538
10539/***/ }),
10540/* 167 */
10541/***/ (function(module, exports, __webpack_require__) {
10542
10543/* WEBPACK VAR INJECTION */(function(module) {var freeGlobal = __webpack_require__(67);
10544
10545/** Detect free variable `exports`. */
10546var freeExports =  true && exports && !exports.nodeType && exports;
10547
10548/** Detect free variable `module`. */
10549var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
10550
10551/** Detect the popular CommonJS extension `module.exports`. */
10552var moduleExports = freeModule && freeModule.exports === freeExports;
10553
10554/** Detect free variable `process` from Node.js. */
10555var freeProcess = moduleExports && freeGlobal.process;
10556
10557/** Used to access faster Node.js helpers. */
10558var nodeUtil = (function() {
10559  try {
10560    // Use `util.types` for Node.js 10+.
10561    var types = freeModule && freeModule.require && freeModule.require('util').types;
10562
10563    if (types) {
10564      return types;
10565    }
10566
10567    // Legacy `process.binding('util')` for Node.js < 10.
10568    return freeProcess && freeProcess.binding && freeProcess.binding('util');
10569  } catch (e) {}
10570}());
10571
10572module.exports = nodeUtil;
10573
10574/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(75)(module)))
10575
10576/***/ }),
10577/* 168 */
10578/***/ (function(module, exports, __webpack_require__) {
10579
10580var overArg = __webpack_require__(76);
10581
10582/* Built-in method references for those with the same name as other `lodash` methods. */
10583var nativeKeys = overArg(Object.keys, Object);
10584
10585module.exports = nativeKeys;
10586
10587
10588/***/ }),
10589/* 169 */
10590/***/ (function(module, exports, __webpack_require__) {
10591
10592var getNative = __webpack_require__(7),
10593    root = __webpack_require__(4);
10594
10595/* Built-in method references that are verified to be native. */
10596var DataView = getNative(root, 'DataView');
10597
10598module.exports = DataView;
10599
10600
10601/***/ }),
10602/* 170 */
10603/***/ (function(module, exports, __webpack_require__) {
10604
10605var getNative = __webpack_require__(7),
10606    root = __webpack_require__(4);
10607
10608/* Built-in method references that are verified to be native. */
10609var Promise = getNative(root, 'Promise');
10610
10611module.exports = Promise;
10612
10613
10614/***/ }),
10615/* 171 */
10616/***/ (function(module, exports, __webpack_require__) {
10617
10618var getNative = __webpack_require__(7),
10619    root = __webpack_require__(4);
10620
10621/* Built-in method references that are verified to be native. */
10622var Set = getNative(root, 'Set');
10623
10624module.exports = Set;
10625
10626
10627/***/ }),
10628/* 172 */
10629/***/ (function(module, exports, __webpack_require__) {
10630
10631var isStrictComparable = __webpack_require__(78),
10632    keys = __webpack_require__(21);
10633
10634/**
10635 * Gets the property names, values, and compare flags of `object`.
10636 *
10637 * @private
10638 * @param {Object} object The object to query.
10639 * @returns {Array} Returns the match data of `object`.
10640 */
10641function getMatchData(object) {
10642  var result = keys(object),
10643      length = result.length;
10644
10645  while (length--) {
10646    var key = result[length],
10647        value = object[key];
10648
10649    result[length] = [key, value, isStrictComparable(value)];
10650  }
10651  return result;
10652}
10653
10654module.exports = getMatchData;
10655
10656
10657/***/ }),
10658/* 173 */
10659/***/ (function(module, exports, __webpack_require__) {
10660
10661var baseIsEqual = __webpack_require__(69),
10662    get = __webpack_require__(23),
10663    hasIn = __webpack_require__(177),
10664    isKey = __webpack_require__(45),
10665    isStrictComparable = __webpack_require__(78),
10666    matchesStrictComparable = __webpack_require__(79),
10667    toKey = __webpack_require__(12);
10668
10669/** Used to compose bitmasks for value comparisons. */
10670var COMPARE_PARTIAL_FLAG = 1,
10671    COMPARE_UNORDERED_FLAG = 2;
10672
10673/**
10674 * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.
10675 *
10676 * @private
10677 * @param {string} path The path of the property to get.
10678 * @param {*} srcValue The value to match.
10679 * @returns {Function} Returns the new spec function.
10680 */
10681function baseMatchesProperty(path, srcValue) {
10682  if (isKey(path) && isStrictComparable(srcValue)) {
10683    return matchesStrictComparable(toKey(path), srcValue);
10684  }
10685  return function(object) {
10686    var objValue = get(object, path);
10687    return (objValue === undefined && objValue === srcValue)
10688      ? hasIn(object, path)
10689      : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);
10690  };
10691}
10692
10693module.exports = baseMatchesProperty;
10694
10695
10696/***/ }),
10697/* 174 */
10698/***/ (function(module, exports, __webpack_require__) {
10699
10700var memoizeCapped = __webpack_require__(175);
10701
10702/** Used to match property names within property paths. */
10703var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
10704
10705/** Used to match backslashes in property paths. */
10706var reEscapeChar = /\\(\\)?/g;
10707
10708/**
10709 * Converts `string` to a property path array.
10710 *
10711 * @private
10712 * @param {string} string The string to convert.
10713 * @returns {Array} Returns the property path array.
10714 */
10715var stringToPath = memoizeCapped(function(string) {
10716  var result = [];
10717  if (string.charCodeAt(0) === 46 /* . */) {
10718    result.push('');
10719  }
10720  string.replace(rePropName, function(match, number, quote, subString) {
10721    result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));
10722  });
10723  return result;
10724});
10725
10726module.exports = stringToPath;
10727
10728
10729/***/ }),
10730/* 175 */
10731/***/ (function(module, exports, __webpack_require__) {
10732
10733var memoize = __webpack_require__(176);
10734
10735/** Used as the maximum memoize cache size. */
10736var MAX_MEMOIZE_SIZE = 500;
10737
10738/**
10739 * A specialized version of `_.memoize` which clears the memoized function's
10740 * cache when it exceeds `MAX_MEMOIZE_SIZE`.
10741 *
10742 * @private
10743 * @param {Function} func The function to have its output memoized.
10744 * @returns {Function} Returns the new memoized function.
10745 */
10746function memoizeCapped(func) {
10747  var result = memoize(func, function(key) {
10748    if (cache.size === MAX_MEMOIZE_SIZE) {
10749      cache.clear();
10750    }
10751    return key;
10752  });
10753
10754  var cache = result.cache;
10755  return result;
10756}
10757
10758module.exports = memoizeCapped;
10759
10760
10761/***/ }),
10762/* 176 */
10763/***/ (function(module, exports, __webpack_require__) {
10764
10765var MapCache = __webpack_require__(35);
10766
10767/** Error message constants. */
10768var FUNC_ERROR_TEXT = 'Expected a function';
10769
10770/**
10771 * Creates a function that memoizes the result of `func`. If `resolver` is
10772 * provided, it determines the cache key for storing the result based on the
10773 * arguments provided to the memoized function. By default, the first argument
10774 * provided to the memoized function is used as the map cache key. The `func`
10775 * is invoked with the `this` binding of the memoized function.
10776 *
10777 * **Note:** The cache is exposed as the `cache` property on the memoized
10778 * function. Its creation may be customized by replacing the `_.memoize.Cache`
10779 * constructor with one whose instances implement the
10780 * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)
10781 * method interface of `clear`, `delete`, `get`, `has`, and `set`.
10782 *
10783 * @static
10784 * @memberOf _
10785 * @since 0.1.0
10786 * @category Function
10787 * @param {Function} func The function to have its output memoized.
10788 * @param {Function} [resolver] The function to resolve the cache key.
10789 * @returns {Function} Returns the new memoized function.
10790 * @example
10791 *
10792 * var object = { 'a': 1, 'b': 2 };
10793 * var other = { 'c': 3, 'd': 4 };
10794 *
10795 * var values = _.memoize(_.values);
10796 * values(object);
10797 * // => [1, 2]
10798 *
10799 * values(other);
10800 * // => [3, 4]
10801 *
10802 * object.a = 2;
10803 * values(object);
10804 * // => [1, 2]
10805 *
10806 * // Modify the result cache.
10807 * values.cache.set(object, ['a', 'b']);
10808 * values(object);
10809 * // => ['a', 'b']
10810 *
10811 * // Replace `_.memoize.Cache`.
10812 * _.memoize.Cache = WeakMap;
10813 */
10814function memoize(func, resolver) {
10815  if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {
10816    throw new TypeError(FUNC_ERROR_TEXT);
10817  }
10818  var memoized = function() {
10819    var args = arguments,
10820        key = resolver ? resolver.apply(this, args) : args[0],
10821        cache = memoized.cache;
10822
10823    if (cache.has(key)) {
10824      return cache.get(key);
10825    }
10826    var result = func.apply(this, args);
10827    memoized.cache = cache.set(key, result) || cache;
10828    return result;
10829  };
10830  memoized.cache = new (memoize.Cache || MapCache);
10831  return memoized;
10832}
10833
10834// Expose `MapCache`.
10835memoize.Cache = MapCache;
10836
10837module.exports = memoize;
10838
10839
10840/***/ }),
10841/* 177 */
10842/***/ (function(module, exports, __webpack_require__) {
10843
10844var baseHasIn = __webpack_require__(178),
10845    hasPath = __webpack_require__(179);
10846
10847/**
10848 * Checks if `path` is a direct or inherited property of `object`.
10849 *
10850 * @static
10851 * @memberOf _
10852 * @since 4.0.0
10853 * @category Object
10854 * @param {Object} object The object to query.
10855 * @param {Array|string} path The path to check.
10856 * @returns {boolean} Returns `true` if `path` exists, else `false`.
10857 * @example
10858 *
10859 * var object = _.create({ 'a': _.create({ 'b': 2 }) });
10860 *
10861 * _.hasIn(object, 'a');
10862 * // => true
10863 *
10864 * _.hasIn(object, 'a.b');
10865 * // => true
10866 *
10867 * _.hasIn(object, ['a', 'b']);
10868 * // => true
10869 *
10870 * _.hasIn(object, 'b');
10871 * // => false
10872 */
10873function hasIn(object, path) {
10874  return object != null && hasPath(object, path, baseHasIn);
10875}
10876
10877module.exports = hasIn;
10878
10879
10880/***/ }),
10881/* 178 */
10882/***/ (function(module, exports) {
10883
10884/**
10885 * The base implementation of `_.hasIn` without support for deep paths.
10886 *
10887 * @private
10888 * @param {Object} [object] The object to query.
10889 * @param {Array|string} key The key to check.
10890 * @returns {boolean} Returns `true` if `key` exists, else `false`.
10891 */
10892function baseHasIn(object, key) {
10893  return object != null && key in Object(object);
10894}
10895
10896module.exports = baseHasIn;
10897
10898
10899/***/ }),
10900/* 179 */
10901/***/ (function(module, exports, __webpack_require__) {
10902
10903var castPath = __webpack_require__(24),
10904    isArguments = __webpack_require__(22),
10905    isArray = __webpack_require__(1),
10906    isIndex = __webpack_require__(38),
10907    isLength = __webpack_require__(40),
10908    toKey = __webpack_require__(12);
10909
10910/**
10911 * Checks if `path` exists on `object`.
10912 *
10913 * @private
10914 * @param {Object} object The object to query.
10915 * @param {Array|string} path The path to check.
10916 * @param {Function} hasFunc The function to check properties.
10917 * @returns {boolean} Returns `true` if `path` exists, else `false`.
10918 */
10919function hasPath(object, path, hasFunc) {
10920  path = castPath(path, object);
10921
10922  var index = -1,
10923      length = path.length,
10924      result = false;
vendor: 4,462 bytes, lines 10925-11114
10925
10926  while (++index < length) {
10927    var key = toKey(path[index]);
10928    if (!(result = object != null && hasFunc(object, key))) {
10929      break;
10930    }
10931    object = object[key];
10932  }
10933  if (result || ++index != length) {
10934    return result;
10935  }
10936  length = object == null ? 0 : object.length;
10937  return !!length && isLength(length) && isIndex(key, length) &&
10938    (isArray(object) || isArguments(object));
10939}
10940
10941module.exports = hasPath;
10942
10943
10944/***/ }),
10945/* 180 */
10946/***/ (function(module, exports, __webpack_require__) {
10947
10948var baseProperty = __webpack_require__(83),
10949    basePropertyDeep = __webpack_require__(181),
10950    isKey = __webpack_require__(45),
10951    toKey = __webpack_require__(12);
10952
10953/**
10954 * Creates a function that returns the value at `path` of a given object.
10955 *
10956 * @static
10957 * @memberOf _
10958 * @since 2.4.0
10959 * @category Util
10960 * @param {Array|string} path The path of the property to get.
10961 * @returns {Function} Returns the new accessor function.
10962 * @example
10963 *
10964 * var objects = [
10965 *   { 'a': { 'b': 2 } },
10966 *   { 'a': { 'b': 1 } }
10967 * ];
10968 *
10969 * _.map(objects, _.property('a.b'));
10970 * // => [2, 1]
10971 *
10972 * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');
10973 * // => [1, 2]
10974 */
10975function property(path) {
10976  return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);
10977}
10978
10979module.exports = property;
10980
10981
10982/***/ }),
10983/* 181 */
10984/***/ (function(module, exports, __webpack_require__) {
10985
10986var baseGet = __webpack_require__(44);
10987
10988/**
10989 * A specialized version of `baseProperty` which supports deep paths.
10990 *
10991 * @private
10992 * @param {Array|string} path The path of the property to get.
10993 * @returns {Function} Returns the new accessor function.
10994 */
10995function basePropertyDeep(path) {
10996  return function(object) {
10997    return baseGet(object, path);
10998  };
10999}
11000
11001module.exports = basePropertyDeep;
11002
11003
11004/***/ }),
11005/* 182 */
11006/***/ (function(module, exports, __webpack_require__) {
11007
11008var baseFindIndex = __webpack_require__(84),
11009    baseIteratee = __webpack_require__(6),
11010    toInteger = __webpack_require__(47);
11011
11012/* Built-in method references for those with the same name as other `lodash` methods. */
11013var nativeMax = Math.max;
11014
11015/**
11016 * This method is like `_.find` except that it returns the index of the first
11017 * element `predicate` returns truthy for instead of the element itself.
11018 *
11019 * @static
11020 * @memberOf _
11021 * @since 1.1.0
11022 * @category Array
11023 * @param {Array} array The array to inspect.
11024 * @param {Function} [predicate=_.identity] The function invoked per iteration.
11025 * @param {number} [fromIndex=0] The index to search from.
11026 * @returns {number} Returns the index of the found element, else `-1`.
11027 * @example
11028 *
11029 * var users = [
11030 *   { 'user': 'barney',  'active': false },
11031 *   { 'user': 'fred',    'active': false },
11032 *   { 'user': 'pebbles', 'active': true }
11033 * ];
11034 *
11035 * _.findIndex(users, function(o) { return o.user == 'barney'; });
11036 * // => 0
11037 *
11038 * // The `_.matches` iteratee shorthand.
11039 * _.findIndex(users, { 'user': 'fred', 'active': false });
11040 * // => 1
11041 *
11042 * // The `_.matchesProperty` iteratee shorthand.
11043 * _.findIndex(users, ['active', false]);
11044 * // => 0
11045 *
11046 * // The `_.property` iteratee shorthand.
11047 * _.findIndex(users, 'active');
11048 * // => 2
11049 */
11050function findIndex(array, predicate, fromIndex) {
11051  var length = array == null ? 0 : array.length;
11052  if (!length) {
11053    return -1;
11054  }
11055  var index = fromIndex == null ? 0 : toInteger(fromIndex);
11056  if (index < 0) {
11057    index = nativeMax(length + index, 0);
11058  }
11059  return baseFindIndex(array, baseIteratee(predicate, 3), index);
11060}
11061
11062module.exports = findIndex;
11063
11064
11065/***/ }),
11066/* 183 */
11067/***/ (function(module, exports, __webpack_require__) {
11068
11069var toNumber = __webpack_require__(48);
11070
11071/** Used as references for various `Number` constants. */
11072var INFINITY = 1 / 0,
11073    MAX_INTEGER = 1.7976931348623157e+308;
11074
11075/**
11076 * Converts `value` to a finite number.
11077 *
11078 * @static
11079 * @memberOf _
11080 * @since 4.12.0
11081 * @category Lang
11082 * @param {*} value The value to convert.
11083 * @returns {number} Returns the converted number.
11084 * @example
11085 *
11086 * _.toFinite(3.2);
11087 * // => 3.2
11088 *
11089 * _.toFinite(Number.MIN_VALUE);
11090 * // => 5e-324
11091 *
11092 * _.toFinite(Infinity);
11093 * // => 1.7976931348623157e+308
11094 *
11095 * _.toFinite('3.2');
11096 * // => 3.2
11097 */
11098function toFinite(value) {
11099  if (!value) {
11100    return value === 0 ? value : 0;
11101  }
11102  value = toNumber(value);
11103  if (value === INFINITY || value === -INFINITY) {
11104    var sign = (value < 0 ? -1 : 1);
11105    return sign * MAX_INTEGER;
11106  }
11107  return value === value ? value : 0;
11108}
11109
11110module.exports = toFinite;
11111
11112
11113/***/ }),
11114/* 184 */
11115/***/ (function(module, exports) {
11116
11117/**
11118 * https://github.com/gre/bezier-easing
11119 * BezierEasing - use bezier curve for transition easing function
11120 * by Gaëtan Renaudeau 2014 - 2015 – MIT License
11121 */
11122
11123// These values are established by empiricism with tests (tradeoff: performance VS precision)
11124var NEWTON_ITERATIONS = 4;
11125var NEWTON_MIN_SLOPE = 0.001;
11126var SUBDIVISION_PRECISION = 0.0000001;
11127var SUBDIVISION_MAX_ITERATIONS = 10;
11128
11129var kSplineTableSize = 11;
11130var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);
11131
11132var float32ArraySupported = typeof Float32Array === 'function';
11133
11134function A (aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; }
11135function B (aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; }
11136function C (aA1)      { return 3.0 * aA1; }
11137
11138// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.
11139function calcBezier (aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT; }
11140
11141// Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.
11142function getSlope (aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1); }
11143
11144function binarySubdivide (aX, aA, aB, mX1, mX2) {
11145  var currentX, currentT, i = 0;
11146  do {
11147    currentT = aA + (aB - aA) / 2.0;
11148    currentX = calcBezier(currentT, mX1, mX2) - aX;
11149    if (currentX > 0.0) {
11150      aB = currentT;
11151    } else {
11152      aA = currentT;
11153    }
11154  } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);
11155  return currentT;
11156}
11157
11158function newtonRaphsonIterate (aX, aGuessT, mX1, mX2) {
11159 for (var i = 0; i < NEWTON_ITERATIONS; ++i) {
11160   var currentSlope = getSlope(aGuessT, mX1, mX2);
11161   if (currentSlope === 0.0) {
11162     return aGuessT;
11163   }
11164   var currentX = calcBezier(aGuessT, mX1, mX2) - aX;
11165   aGuessT -= currentX / currentSlope;
11166 }
11167 return aGuessT;
11168}
11169
11170module.exports = function bezier (mX1, mY1, mX2, mY2) {
11171  if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) {
11172    throw new Error('bezier x values must be in [0, 1] range');
11173  }
11174
11175  // Precompute samples table
11176  var sampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);
11177  if (mX1 !== mY1 || mX2 !== mY2) {
11178    for (var i = 0; i < kSplineTableSize; ++i) {
11179      sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);
11180    }
11181  }
11182
11183  function getTForX (aX) {
11184    var intervalStart = 0.0;
11185    var currentSample = 1;
11186    var lastSample = kSplineTableSize - 1;
11187
11188    for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {
11189      intervalStart += kSampleStepSize;
11190    }
11191    --currentSample;
11192
11193    // Interpolate to provide an initial guess for t
11194    var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);
11195    var guessForT = intervalStart + dist * kSampleStepSize;
11196
11197    var initialSlope = getSlope(guessForT, mX1, mX2);
11198    if (initialSlope >= NEWTON_MIN_SLOPE) {
11199      return newtonRaphsonIterate(aX, guessForT, mX1, mX2);
11200    } else if (initialSlope === 0.0) {
11201      return guessForT;
11202    } else {
11203      return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);
11204    }
11205  }
11206
11207  return function BezierEasing (x) {
11208    if (mX1 === mY1 && mX2 === mY2) {
11209      return x; // linear
11210    }
11211    // Because JavaScript number are imprecise, we should guarantee the extremes are right.
11212    if (x === 0) {
11213      return 0;
11214    }
11215    if (x === 1) {
11216      return 1;
11217    }
11218    return calcBezier(getTForX(x), mY1, mY2);
11219  };
11220};
11221
11222
11223/***/ }),
11224/* 185 */
11225/***/ (function(module, exports, __webpack_require__) {
11226
11227"use strict";
11228
11229
11230Object.defineProperty(exports, "__esModule", {
11231  value: true
11232});
11233exports.createElementState = createElementState;
11234exports.mergeActionState = mergeActionState;
11235exports.ixElements = void 0;
11236
11237var _timm = __webpack_require__(13);
11238
11239var _IX2EngineConstants = __webpack_require__(50);
11240
11241var _IX2EngineActionTypes = __webpack_require__(87);
11242
11243var initialState = {};
11244var refState = 'refState';
11245
11246var ixElements = function ixElements() {
11247  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
11248  var action = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
11249
11250  switch (action.type) {
11251    case _IX2EngineActionTypes.IX2_SESSION_STOPPED:
11252      {
11253        return initialState;
11254      }
11255
11256    case _IX2EngineActionTypes.IX2_INSTANCE_ADDED:
11257      {
11258        var _action$payload = action.payload,
11259            elementId = _action$payload.elementId,
11260            ref = _action$payload.element,
11261            origin = _action$payload.origin,
11262            actionItem = _action$payload.actionItem,
11263            refType = _action$payload.refType;
11264        var actionTypeId = actionItem.actionTypeId;
11265        var newState = state; // Create new ref entry if it doesn't exist
11266
11267        if ((0, _timm.getIn)(newState, [elementId, ref]) !== ref) {
11268          newState = createElementState(newState, ref, refType, elementId, actionItem);
11269        } // Merge origin values into ref state
11270
11271
11272        return mergeActionState(newState, elementId, actionTypeId, origin, actionItem);
11273      }
11274
11275    case _IX2EngineActionTypes.IX2_ELEMENT_STATE_CHANGED:
11276      {
11277        var _action$payload2 = action.payload,
11278            _elementId = _action$payload2.elementId,
11279            _actionTypeId = _action$payload2.actionTypeId,
11280            current = _action$payload2.current,
11281            _actionItem = _action$payload2.actionItem;
11282        return mergeActionState(state, _elementId, _actionTypeId, current, _actionItem);
11283      }
11284
11285    default:
11286      {
11287        return state;
11288      }
11289  }
11290};
11291
11292exports.ixElements = ixElements;
11293
11294function createElementState(state, ref, refType, elementId, actionItem) {
11295  var refId = refType === _IX2EngineConstants.PLAIN_OBJECT ? (0, _timm.getIn)(actionItem, ['config', 'target', 'objectId']) : null;
11296  return (0, _timm.mergeIn)(state, [elementId], {
11297    id: elementId,
11298    ref: ref,
11299    refId: refId,
11300    refType: refType
11301  });
11302}
11303
11304function mergeActionState(state, elementId, actionTypeId, actionState, // FIXME: weak type is used
11305actionItem) {
11306  var units = pickUnits(actionItem);
11307  var mergePath = [elementId, refState, actionTypeId];
11308  return (0, _timm.mergeIn)(state, mergePath, actionState, units);
11309}
11310
11311var valueUnitPairs = [[_IX2EngineConstants.CONFIG_X_VALUE, _IX2EngineConstants.CONFIG_X_UNIT], [_IX2EngineConstants.CONFIG_Y_VALUE, _IX2EngineConstants.CONFIG_Y_UNIT], [_IX2EngineConstants.CONFIG_Z_VALUE, _IX2EngineConstants.CONFIG_Z_UNIT], [_IX2EngineConstants.CONFIG_VALUE, _IX2EngineConstants.CONFIG_UNIT]]; // FIXME: weak type is used
11312// eslint-disable-next-line flowtype/no-weak-types
11313
11314function pickUnits(actionItem) {
11315  var config = actionItem.config;
11316  return valueUnitPairs.reduce(function (result, pair) {
11317    var valueKey = pair[0];
11318    var unitKey = pair[1];
11319    var configValue = config[valueKey];
11320    var configUnit = config[unitKey];
11321
11322    if (configValue != null && configUnit != null) {
11323      result[unitKey] = configUnit;
11324    }
11325
11326    return result;
11327  }, {});
11328}
11329
11330/***/ }),
11331/* 186 */
11332/***/ (function(module, exports, __webpack_require__) {
11333
11334"use strict";
11335
11336
11337Object.defineProperty(exports, "__esModule", {
11338  value: true
11339});
11340exports.clearPlugin = exports.renderPlugin = exports.createPluginInstance = exports.getPluginDestination = exports.getPluginOrigin = exports.getPluginConfig = void 0;
11341/* eslint-env browser */
11342
11343var getPluginConfig = function getPluginConfig(actionItemConfig) {
11344  return actionItemConfig.value;
11345};
11346
11347exports.getPluginConfig = getPluginConfig;
11348
11349var getPluginOrigin = function getPluginOrigin(refState) {
11350  return refState || {
11351    value: 0
11352  };
11353};
11354
11355exports.getPluginOrigin = getPluginOrigin;
11356
11357var getPluginDestination = function getPluginDestination(actionItemConfig) {
11358  return {
11359    value: actionItemConfig.value
11360  };
11361};
11362
11363exports.getPluginDestination = getPluginDestination;
11364
11365var createPluginInstance = function createPluginInstance(element) {
11366  var instance = window.Webflow.require('lottie').createInstance(element);
11367
11368  instance.pause();
11369  instance.setSubframe(true);
11370  return instance;
11371};
11372
11373exports.createPluginInstance = createPluginInstance;
11374
11375var renderPlugin = function renderPlugin(pluginInstance, refState, actionItem) {
11376  if (!pluginInstance) {
11377    return;
11378  }
11379
11380  var percent = refState[actionItem.actionTypeId].value / 100;
11381  pluginInstance.setCurrentRawFrameValue(pluginInstance.totalFrames * percent);
11382};
11383
11384exports.renderPlugin = renderPlugin;
11385
11386var clearPlugin = function clearPlugin(element) {
11387  var instance = window.Webflow.require('lottie').createInstance(element);
11388
11389  instance.stop();
11390};
11391
11392exports.clearPlugin = clearPlugin;
11393
11394/***/ }),
11395/* 187 */
11396/***/ (function(module, exports, __webpack_require__) {
11397
11398"use strict";
11399
11400
11401var _interopRequireDefault2 = __webpack_require__(0);
11402
11403var _typeof2 = _interopRequireDefault2(__webpack_require__(15));
11404
11405var _defineProperty2 = _interopRequireDefault2(__webpack_require__(14));
11406
11407var _Object$freeze, _Object$freeze2, _transformDefaults;
11408
11409var _interopRequireDefault = __webpack_require__(0);
11410
11411Object.defineProperty(exports, "__esModule", {
11412  value: true
11413});
11414exports.getInstanceId = getInstanceId;
11415exports.getElementId = getElementId;
11416exports.reifyState = reifyState;
11417exports.observeStore = observeStore;
11418exports.getAffectedElements = getAffectedElements;
11419exports.getComputedStyle = getComputedStyle;
11420exports.getInstanceOrigin = getInstanceOrigin;
11421exports.getDestinationValues = getDestinationValues;
11422exports.getRenderType = getRenderType;
11423exports.getStyleProp = getStyleProp;
11424exports.renderHTMLElement = renderHTMLElement;
11425exports.clearAllStyles = clearAllStyles;
11426exports.cleanupHTMLElement = cleanupHTMLElement;
11427exports.getMaxDurationItemIndex = getMaxDurationItemIndex;
11428exports.getActionListProgress = getActionListProgress;
11429exports.reduceListToGroup = reduceListToGroup;
11430exports.shouldNamespaceEventParameter = shouldNamespaceEventParameter;
11431exports.getNamespacedParameterId = getNamespacedParameterId;
11432exports.shouldAllowMediaQuery = shouldAllowMediaQuery;
11433exports.mediaQueriesEqual = mediaQueriesEqual;
11434exports.stringifyTarget = stringifyTarget;
11435exports.getItemConfigByKey = void 0;
11436
11437var _defaultTo = _interopRequireDefault(__webpack_require__(188));
11438
11439var _reduce = _interopRequireDefault(__webpack_require__(189));
11440
11441var _findLast = _interopRequireDefault(__webpack_require__(195));
11442
11443var _get = _interopRequireDefault(__webpack_require__(23));
11444
11445var _timm = __webpack_require__(13);
11446
11447var _shallowEqual = _interopRequireDefault(__webpack_require__(92));
11448
11449var _IX2EasingUtils = __webpack_require__(86);
11450
11451var _IX2VanillaPlugins = __webpack_require__(89);
11452
11453var _IX2EngineConstants = __webpack_require__(50);
11454
11455var _IX2EngineEventTypes = __webpack_require__(88);
11456
11457var _IX2EngineItemTypes = __webpack_require__(49);
11458
11459var _IX2BrowserSupport = __webpack_require__(32);
11460/* eslint-env browser */
11461
11462
11463var trim = function trim(v) {
11464  return v.trim();
11465};
11466
11467var colorStyleProps = Object.freeze((_Object$freeze = {}, (0, _defineProperty2["default"])(_Object$freeze, _IX2EngineItemTypes.STYLE_BACKGROUND_COLOR, _IX2EngineConstants.BACKGROUND_COLOR), (0, _defineProperty2["default"])(_Object$freeze, _IX2EngineItemTypes.STYLE_BORDER, _IX2EngineConstants.BORDER_COLOR), (0, _defineProperty2["default"])(_Object$freeze, _IX2EngineItemTypes.STYLE_TEXT_COLOR, _IX2EngineConstants.COLOR), _Object$freeze));
11468var willChangeProps = Object.freeze((_Object$freeze2 = {}, (0, _defineProperty2["default"])(_Object$freeze2, _IX2BrowserSupport.TRANSFORM_PREFIXED, _IX2EngineConstants.TRANSFORM), (0, _defineProperty2["default"])(_Object$freeze2, _IX2EngineConstants.BACKGROUND_COLOR, _IX2EngineConstants.BACKGROUND), (0, _defineProperty2["default"])(_Object$freeze2, _IX2EngineConstants.OPACITY, _IX2EngineConstants.OPACITY), (0, _defineProperty2["default"])(_Object$freeze2, _IX2EngineConstants.FILTER, _IX2EngineConstants.FILTER), (0, _defineProperty2["default"])(_Object$freeze2, _IX2EngineConstants.WIDTH, _IX2EngineConstants.WIDTH), (0, _defineProperty2["default"])(_Object$freeze2, _IX2EngineConstants.HEIGHT, _IX2EngineConstants.HEIGHT), _Object$freeze2));
11469var objectCache = {};
11470var instanceCount = 1;
11471
11472function getInstanceId() {
11473  return 'i' + instanceCount++;
11474}
11475
11476var elementCount = 1;
11477
11478function getElementId(ixElements, ref) {
11479  // TODO: optimize element lookup
11480  for (var key in ixElements) {
11481    var ixEl = ixElements[key];
11482
11483    if (ixEl && ixEl.ref === ref) {
11484      return ixEl.id;
11485    }
11486  }
11487
11488  return 'e' + elementCount++;
11489}
11490
11491function reifyState() {
11492  var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
11493      events = _ref.events,
11494      actionLists = _ref.actionLists,
11495      site = _ref.site;
11496
11497  var eventTypeMap = (0, _reduce["default"])(events, function (result, event) {
11498    var eventTypeId = event.eventTypeId;
11499
11500    if (!result[eventTypeId]) {
11501      result[eventTypeId] = {};
11502    }
11503
11504    result[eventTypeId][event.id] = event;
11505    return result;
11506  }, {});
11507  var mediaQueries = site && site.mediaQueries;
11508  var mediaQueryKeys = [];
11509
11510  if (mediaQueries) {
11511    mediaQueryKeys = mediaQueries.map(function (mq) {
11512      return mq.key;
11513    });
11514  } else {
11515    mediaQueries = [];
11516    console.warn("IX2 missing mediaQueries in site data");
11517  }
11518
11519  return {
11520    ixData: {
11521      events: events,
11522      actionLists: actionLists,
11523      eventTypeMap: eventTypeMap,
11524      mediaQueries: mediaQueries,
11525      mediaQueryKeys: mediaQueryKeys
11526    }
11527  };
11528}
11529
11530var strictEqual = function strictEqual(a, b) {
11531  return a === b;
11532};
11533
11534function observeStore(_ref2) {
11535  var store = _ref2.store,
11536      select = _ref2.select,
11537      onChange = _ref2.onChange,
11538      _ref2$comparator = _ref2.comparator,
11539      comparator = _ref2$comparator === void 0 ? strictEqual : _ref2$comparator;
11540  var getState = store.getState,
11541      subscribe = store.subscribe;
11542  var unsubscribe = subscribe(handleChange);
11543  var currentState = select(getState());
11544
11545  function handleChange() {
11546    var nextState = select(getState());
11547
11548    if (nextState == null) {
11549      unsubscribe();
11550      return;
11551    }
11552
11553    if (!comparator(nextState, currentState)) {
11554      currentState = nextState;
11555      onChange(currentState, store);
11556    }
11557  }
11558
11559  return unsubscribe;
11560}
11561
11562function normalizeTarget(target) {
11563  var type = (0, _typeof2["default"])(target);
11564
11565  if (type === 'string') {
11566    return {
11567      id: target
11568    };
11569  } else if (target != null && type === 'object') {
11570    var id = target.id,
11571        objectId = target.objectId,
11572        selector = target.selector,
11573        selectorGuids = target.selectorGuids,
11574        appliesTo = target.appliesTo,
11575        useEventTarget = target.useEventTarget;
11576    return {
11577      id: id,
11578      objectId: objectId,
11579      selector: selector,
11580      selectorGuids: selectorGuids,
11581      appliesTo: appliesTo,
11582      useEventTarget: useEventTarget
11583    };
11584  }
11585
11586  return {};
11587}
11588
11589function getAffectedElements(_ref3) {
11590  var config = _ref3.config,
11591      event = _ref3.event,
11592      eventTarget = _ref3.eventTarget,
11593      elementRoot = _ref3.elementRoot,
11594      elementApi = _ref3.elementApi;
11595
11596  if (!elementApi) {
11597    throw new Error('IX2 missing elementApi');
11598  }
11599
11600  var getValidDocument = elementApi.getValidDocument,
11601      getQuerySelector = elementApi.getQuerySelector,
11602      queryDocument = elementApi.queryDocument,
11603      getChildElements = elementApi.getChildElements,
11604      getSiblingElements = elementApi.getSiblingElements,
11605      matchSelector = elementApi.matchSelector,
11606      elementContains = elementApi.elementContains,
11607      isSiblingNode = elementApi.isSiblingNode;
11608  var target = config.target;
11609
11610  if (!target) {
11611    return [];
11612  }
11613
11614  var _normalizeTarget = normalizeTarget(target),
11615      id = _normalizeTarget.id,
11616      objectId = _normalizeTarget.objectId,
11617      selector = _normalizeTarget.selector,
11618      selectorGuids = _normalizeTarget.selectorGuids,
11619      appliesTo = _normalizeTarget.appliesTo,
11620      useEventTarget = _normalizeTarget.useEventTarget;
11621
11622  if (objectId) {
11623    var ref = objectCache[objectId] || (objectCache[objectId] = {});
11624    return [ref];
11625  }
11626
11627  if (appliesTo === _IX2EngineEventTypes.PAGE) {
11628    var doc = getValidDocument(id);
11629    return doc ? [doc] : [];
11630  }
11631
11632  var overrides = (0, _get["default"])(event, 'action.config.affectedElements', {});
11633  var override = overrides[id || selector] || {};
11634  var validOverride = Boolean(override.id || override.selector);
11635  var limitAffectedElements;
11636  var baseSelector;
11637  var finalSelector;
11638  var eventTargetSelector = event && getQuerySelector(normalizeTarget(event.target));
11639
11640  if (validOverride) {
11641    limitAffectedElements = override.limitAffectedElements;
11642    baseSelector = eventTargetSelector;
11643    finalSelector = getQuerySelector(override);
11644  } else {
11645    // pass in selectorGuids as well for server-side rendering.
11646    baseSelector = finalSelector = getQuerySelector({
11647      id: id,
11648      selector: selector,
11649      selectorGuids: selectorGuids
11650    });
11651  }
11652
11653  if (event && useEventTarget) {
11654    // eventTarget is not defined when this function is called in a clear request, so find
11655    // all target elements associated with the event data, and return affected elements.
11656    var eventTargets = eventTarget && (finalSelector || useEventTarget === true) ? [eventTarget] : queryDocument(eventTargetSelector);
11657
11658    if (finalSelector) {
11659      if (useEventTarget === _IX2EngineConstants.PARENT) {
11660        return queryDocument(finalSelector).filter(function (parentElement) {
11661          return eventTargets.some(function (targetElement) {
11662            return elementContains(parentElement, targetElement);
11663          });
11664        });
11665      }
11666
11667      if (useEventTarget === _IX2EngineConstants.CHILDREN) {
11668        return queryDocument(finalSelector).filter(function (childElement) {
11669          return eventTargets.some(function (targetElement) {
11670            return elementContains(targetElement, childElement);
11671          });
11672        });
11673      }
11674
11675      if (useEventTarget === _IX2EngineConstants.SIBLINGS) {
11676        return queryDocument(finalSelector).filter(function (siblingElement) {
11677          return eventTargets.some(function (targetElement) {
11678            return isSiblingNode(targetElement, siblingElement);
11679          });
11680        });
11681      }
11682    }
11683
11684    return eventTargets;
11685  }
11686
11687  if (baseSelector == null || finalSelector == null) {
11688    return [];
11689  }
11690
11691  if (_IX2BrowserSupport.IS_BROWSER_ENV && elementRoot) {
11692    return queryDocument(finalSelector).filter(function (element) {
11693      return elementRoot.contains(element);
11694    });
11695  }
11696
11697  if (limitAffectedElements === _IX2EngineConstants.CHILDREN) {
11698    return queryDocument(baseSelector, finalSelector);
11699  } else if (limitAffectedElements === _IX2EngineConstants.IMMEDIATE_CHILDREN) {
11700    return getChildElements(queryDocument(baseSelector)).filter(matchSelector(finalSelector));
11701  } else if (limitAffectedElements === _IX2EngineConstants.SIBLINGS) {
11702    return getSiblingElements(queryDocument(baseSelector)).filter(matchSelector(finalSelector));
11703  } else {
11704    return queryDocument(finalSelector);
11705  }
11706}
11707
11708function getComputedStyle(_ref4) {
11709  var element = _ref4.element,
11710      actionItem = _ref4.actionItem;
11711
11712  if (!_IX2BrowserSupport.IS_BROWSER_ENV) {
11713    return {};
11714  }
11715
11716  var actionTypeId = actionItem.actionTypeId;
11717
11718  switch (actionTypeId) {
11719    case _IX2EngineItemTypes.STYLE_SIZE:
11720    case _IX2EngineItemTypes.STYLE_BACKGROUND_COLOR:
11721    case _IX2EngineItemTypes.STYLE_BORDER:
11722    case _IX2EngineItemTypes.STYLE_TEXT_COLOR:
11723    case _IX2EngineItemTypes.GENERAL_DISPLAY:
11724      return window.getComputedStyle(element);
11725
11726    default:
11727      return {};
11728  }
11729}
11730
11731var pxValueRegex = /px/;
11732
11733var getFilterDefaults = function getFilterDefaults(actionState, filters) {
11734  return filters.reduce(function (result, filter) {
11735    if (result[filter.type] == null) {
11736      result[filter.type] = filterDefaults[filter.type];
11737    }
11738
11739    return result;
11740  }, actionState || {});
11741};
11742
11743function getInstanceOrigin(element) {
11744  var refState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
11745  var computedStyle = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
11746  var actionItem = arguments.length > 3 ? arguments[3] : undefined;
11747  var elementApi = arguments.length > 4 ? arguments[4] : undefined;
11748  var getStyle = elementApi.getStyle;
11749  var actionTypeId = actionItem.actionTypeId,
11750      config = actionItem.config;
11751
11752  if ((0, _IX2VanillaPlugins.isPluginType)(actionTypeId)) {
11753    return (0, _IX2VanillaPlugins.getPluginOrigin)(actionTypeId)(refState[actionTypeId]);
11754  }
11755
11756  switch (actionTypeId) {
11757    case _IX2EngineItemTypes.TRANSFORM_MOVE:
11758    case _IX2EngineItemTypes.TRANSFORM_SCALE:
11759    case _IX2EngineItemTypes.TRANSFORM_ROTATE:
11760    case _IX2EngineItemTypes.TRANSFORM_SKEW:
11761      return refState[actionTypeId] || transformDefaults[actionTypeId];
11762
11763    case _IX2EngineItemTypes.STYLE_FILTER:
11764      return getFilterDefaults(refState[actionTypeId], actionItem.config.filters);
11765
11766    case _IX2EngineItemTypes.STYLE_OPACITY:
11767      return {
11768        value: (0, _defaultTo["default"])(parseFloat(getStyle(element, _IX2EngineConstants.OPACITY)), 1.0)
11769      };
11770
11771    case _IX2EngineItemTypes.STYLE_SIZE:
11772      {
11773        var inlineWidth = getStyle(element, _IX2EngineConstants.WIDTH);
11774        var inlineHeight = getStyle(element, _IX2EngineConstants.HEIGHT);
11775        var widthValue;
11776        var heightValue; // When destination unit is 'AUTO', ensure origin values are in px
11777
11778        if (config.widthUnit === _IX2EngineConstants.AUTO) {
11779          widthValue = pxValueRegex.test(inlineWidth) ? parseFloat(inlineWidth) : parseFloat(computedStyle.width);
11780        } else {
11781          widthValue = (0, _defaultTo["default"])(parseFloat(inlineWidth), parseFloat(computedStyle.width));
11782        }
11783
11784        if (config.heightUnit === _IX2EngineConstants.AUTO) {
11785          heightValue = pxValueRegex.test(inlineHeight) ? parseFloat(inlineHeight) : parseFloat(computedStyle.height);
11786        } else {
11787          heightValue = (0, _defaultTo["default"])(parseFloat(inlineHeight), parseFloat(computedStyle.height));
11788        }
11789
11790        return {
11791          widthValue: widthValue,
11792          heightValue: heightValue
11793        };
11794      }
11795
11796    case _IX2EngineItemTypes.STYLE_BACKGROUND_COLOR:
11797    case _IX2EngineItemTypes.STYLE_BORDER:
11798    case _IX2EngineItemTypes.STYLE_TEXT_COLOR:
11799      return parseColor({
11800        element: element,
11801        actionTypeId: actionTypeId,
11802        computedStyle: computedStyle,
11803        getStyle: getStyle
11804      });
11805
11806    case _IX2EngineItemTypes.GENERAL_DISPLAY:
11807      return {
11808        value: (0, _defaultTo["default"])(getStyle(element, _IX2EngineConstants.DISPLAY), computedStyle.display)
11809      };
11810
11811    case _IX2EngineItemTypes.OBJECT_VALUE:
11812      return refState[actionTypeId] || {
11813        value: 0
11814      };
11815
11816    default:
11817      return;
11818  }
11819}
11820
11821var reduceFilters = function reduceFilters(result, filter) {
11822  if (filter) {
11823    result[filter.type] = filter.value || 0;
11824  }
11825
11826  return result;
11827};
11828
11829var getItemConfigByKey = function getItemConfigByKey(actionTypeId, key, config) {
11830  if ((0, _IX2VanillaPlugins.isPluginType)(actionTypeId)) {
11831    return (0, _IX2VanillaPlugins.getPluginConfig)(actionTypeId)(config, key);
11832  }
11833
11834  switch (actionTypeId) {
11835    case _IX2EngineItemTypes.STYLE_FILTER:
11836      {
11837        var filter = (0, _findLast["default"])(config.filters, function (_ref5) {
11838          var type = _ref5.type;
11839          return type === key;
11840        });
11841        return filter ? filter.value : 0;
11842      }
11843
11844    default:
11845      return config[key];
11846  }
11847};
11848
11849exports.getItemConfigByKey = getItemConfigByKey;
11850
11851function getDestinationValues(_ref6) {
11852  var element = _ref6.element,
11853      actionItem = _ref6.actionItem,
11854      elementApi = _ref6.elementApi;
11855  var actionTypeId = actionItem.actionTypeId;
11856
11857  if ((0, _IX2VanillaPlugins.isPluginType)(actionTypeId)) {
11858    return (0, _IX2VanillaPlugins.getPluginDestination)(actionTypeId)(actionItem.config);
11859  }
11860
11861  switch (actionTypeId) {
11862    case _IX2EngineItemTypes.TRANSFORM_MOVE:
11863    case _IX2EngineItemTypes.TRANSFORM_SCALE:
11864    case _IX2EngineItemTypes.TRANSFORM_ROTATE:
11865    case _IX2EngineItemTypes.TRANSFORM_SKEW:
11866      {
11867        var _actionItem$config = actionItem.config,
11868            xValue = _actionItem$config.xValue,
11869            yValue = _actionItem$config.yValue,
11870            zValue = _actionItem$config.zValue;
11871        return {
11872          xValue: xValue,
11873          yValue: yValue,
11874          zValue: zValue
11875        };
11876      }
11877
11878    case _IX2EngineItemTypes.STYLE_SIZE:
11879      {
11880        var getStyle = elementApi.getStyle,
11881            setStyle = elementApi.setStyle,
11882            getProperty = elementApi.getProperty;
11883        var _actionItem$config2 = actionItem.config,
11884            widthUnit = _actionItem$config2.widthUnit,
11885            heightUnit = _actionItem$config2.heightUnit;
11886        var _actionItem$config3 = actionItem.config,
11887            widthValue = _actionItem$config3.widthValue,
11888            heightValue = _actionItem$config3.heightValue;
11889
11890        if (!_IX2BrowserSupport.IS_BROWSER_ENV) {
11891          return {
11892            widthValue: widthValue,
11893            heightValue: heightValue
11894          };
11895        }
11896
11897        if (widthUnit === _IX2EngineConstants.AUTO) {
11898          var temp = getStyle(element, _IX2EngineConstants.WIDTH);
11899          setStyle(element, _IX2EngineConstants.WIDTH, '');
11900          widthValue = getProperty(element, 'offsetWidth');
11901          setStyle(element, _IX2EngineConstants.WIDTH, temp);
11902        }
11903
11904        if (heightUnit === _IX2EngineConstants.AUTO) {
11905          var _temp = getStyle(element, _IX2EngineConstants.HEIGHT);
11906
11907          setStyle(element, _IX2EngineConstants.HEIGHT, '');
11908          heightValue = getProperty(element, 'offsetHeight');
11909          setStyle(element, _IX2EngineConstants.HEIGHT, _temp);
11910        }
11911
11912        return {
11913          widthValue: widthValue,
11914          heightValue: heightValue
11915        };
11916      }
11917
11918    case _IX2EngineItemTypes.STYLE_BACKGROUND_COLOR:
11919    case _IX2EngineItemTypes.STYLE_BORDER:
11920    case _IX2EngineItemTypes.STYLE_TEXT_COLOR:
11921      {
11922        var _actionItem$config4 = actionItem.config,
11923            rValue = _actionItem$config4.rValue,
11924            gValue = _actionItem$config4.gValue,
11925            bValue = _actionItem$config4.bValue,
11926            aValue = _actionItem$config4.aValue;
11927        return {
11928          rValue: rValue,
11929          gValue: gValue,
11930          bValue: bValue,
11931          aValue: aValue
11932        };
11933      }
11934
11935    case _IX2EngineItemTypes.STYLE_FILTER:
11936      {
11937        return actionItem.config.filters.reduce(reduceFilters, {});
11938      }
11939
11940    default:
11941      {
11942        var value = actionItem.config.value;
11943        return {
11944          value: value
11945        };
11946      }
11947  }
11948}
11949
11950function getRenderType(actionTypeId) {
11951  if (/^TRANSFORM_/.test(actionTypeId)) {
11952    return _IX2EngineConstants.RENDER_TRANSFORM;
11953  }
11954
11955  if (/^STYLE_/.test(actionTypeId)) {
11956    return _IX2EngineConstants.RENDER_STYLE;
11957  }
11958
11959  if (/^GENERAL_/.test(actionTypeId)) {
11960    return _IX2EngineConstants.RENDER_GENERAL;
11961  }
11962
11963  if (/^PLUGIN_/.test(actionTypeId)) {
11964    return _IX2EngineConstants.RENDER_PLUGIN;
11965  }
11966}
11967
11968function getStyleProp(renderType, actionTypeId) {
11969  return renderType === _IX2EngineConstants.RENDER_STYLE ? actionTypeId.replace('STYLE_', '').toLowerCase() : null;
11970}
11971
11972function renderHTMLElement(element, refState, actionState, eventId, actionItem, styleProp, elementApi, renderType, pluginInstance) {
11973  switch (renderType) {
11974    case _IX2EngineConstants.RENDER_TRANSFORM:
11975      {
11976        return renderTransform(element, refState, actionState, actionItem, elementApi);
11977      }
11978
11979    case _IX2EngineConstants.RENDER_STYLE:
11980      {
11981        return renderStyle(element, refState, actionState, actionItem, styleProp, elementApi);
11982      }
11983
11984    case _IX2EngineConstants.RENDER_GENERAL:
11985      {
11986        return renderGeneral(element, actionItem, elementApi);
11987      }
11988
11989    case _IX2EngineConstants.RENDER_PLUGIN:
11990      {
11991        var actionTypeId = actionItem.actionTypeId;
11992
11993        if ((0, _IX2VanillaPlugins.isPluginType)(actionTypeId)) {
11994          return (0, _IX2VanillaPlugins.renderPlugin)(actionTypeId)(pluginInstance, refState, actionItem);
11995        }
11996      }
11997  }
11998}
11999
12000var transformDefaults = (_transformDefaults = {}, (0, _defineProperty2["default"])(_transformDefaults, _IX2EngineItemTypes.TRANSFORM_MOVE, Object.freeze({
12001  xValue: 0,
12002  yValue: 0,
12003  zValue: 0
12004})), (0, _defineProperty2["default"])(_transformDefaults, _IX2EngineItemTypes.TRANSFORM_SCALE, Object.freeze({
12005  xValue: 1,
12006  yValue: 1,
12007  zValue: 1
12008})), (0, _defineProperty2["default"])(_transformDefaults, _IX2EngineItemTypes.TRANSFORM_ROTATE, Object.freeze({
12009  xValue: 0,
12010  yValue: 0,
12011  zValue: 0
12012})), (0, _defineProperty2["default"])(_transformDefaults, _IX2EngineItemTypes.TRANSFORM_SKEW, Object.freeze({
12013  xValue: 0,
12014  yValue: 0
12015})), _transformDefaults);
12016var filterDefaults = Object.freeze({
12017  blur: 0,
12018  'hue-rotate': 0,
12019  invert: 0,
12020  grayscale: 0,
12021  saturate: 100,
12022  sepia: 0,
12023  contrast: 100,
12024  brightness: 100
12025});
12026
12027var getFilterUnit = function getFilterUnit(filterType, actionItemConfig) {
12028  var filter = (0, _findLast["default"])(actionItemConfig.filters, function (_ref7) {
12029    var type = _ref7.type;
12030    return type === filterType;
12031  });
12032
12033  if (filter && filter.unit) {
12034    return filter.unit;
12035  }
12036
12037  switch (filterType) {
12038    case 'blur':
12039      return 'px';
12040
12041    case 'hue-rotate':
12042      return 'deg';
12043
12044    default:
12045      return '%';
12046  }
12047};
12048
12049var transformKeys = Object.keys(transformDefaults);
12050
12051function renderTransform(element, refState, actionState, actionItem, elementApi) {
12052  var newTransform = transformKeys.map(function (actionTypeId) {
12053    var defaults = transformDefaults[actionTypeId];
12054
12055    var _ref8 = refState[actionTypeId] || {},
12056        _ref8$xValue = _ref8.xValue,
12057        xValue = _ref8$xValue === void 0 ? defaults.xValue : _ref8$xValue,
12058        _ref8$yValue = _ref8.yValue,
12059        yValue = _ref8$yValue === void 0 ? defaults.yValue : _ref8$yValue,
12060        _ref8$zValue = _ref8.zValue,
12061        zValue = _ref8$zValue === void 0 ? defaults.zValue : _ref8$zValue,
12062        _ref8$xUnit = _ref8.xUnit,
12063        xUnit = _ref8$xUnit === void 0 ? '' : _ref8$xUnit,
12064        _ref8$yUnit = _ref8.yUnit,
12065        yUnit = _ref8$yUnit === void 0 ? '' : _ref8$yUnit,
12066        _ref8$zUnit = _ref8.zUnit,
12067        zUnit = _ref8$zUnit === void 0 ? '' : _ref8$zUnit;
12068
12069    switch (actionTypeId) {
12070      case _IX2EngineItemTypes.TRANSFORM_MOVE:
12071        return "".concat(_IX2EngineConstants.TRANSLATE_3D, "(").concat(xValue).concat(xUnit, ", ").concat(yValue).concat(yUnit, ", ").concat(zValue).concat(zUnit, ")");
12072
12073      case _IX2EngineItemTypes.TRANSFORM_SCALE:
12074        return "".concat(_IX2EngineConstants.SCALE_3D, "(").concat(xValue).concat(xUnit, ", ").concat(yValue).concat(yUnit, ", ").concat(zValue).concat(zUnit, ")");
12075
12076      case _IX2EngineItemTypes.TRANSFORM_ROTATE:
12077        return "".concat(_IX2EngineConstants.ROTATE_X, "(").concat(xValue).concat(xUnit, ") ").concat(_IX2EngineConstants.ROTATE_Y, "(").concat(yValue).concat(yUnit, ") ").concat(_IX2EngineConstants.ROTATE_Z, "(").concat(zValue).concat(zUnit, ")");
12078
12079      case _IX2EngineItemTypes.TRANSFORM_SKEW:
12080        return "".concat(_IX2EngineConstants.SKEW, "(").concat(xValue).concat(xUnit, ", ").concat(yValue).concat(yUnit, ")");
12081
12082      default:
12083        return '';
12084    }
12085  }).join(' ');
12086  var setStyle = elementApi.setStyle;
12087  addWillChange(element, _IX2BrowserSupport.TRANSFORM_PREFIXED, elementApi);
12088  setStyle(element, _IX2BrowserSupport.TRANSFORM_PREFIXED, newTransform); // Set transform-style: preserve-3d
12089
12090  if (hasDefined3dTransform(actionItem, actionState)) {
12091    setStyle(element, _IX2BrowserSupport.TRANSFORM_STYLE_PREFIXED, _IX2EngineConstants.PRESERVE_3D);
12092  }
12093}
12094
12095function renderFilter(element, actionState, actionItemConfig, elementApi) {
12096  var filterValue = (0, _reduce["default"])(actionState, function (result, value, type) {
12097    return "".concat(result, " ").concat(type, "(").concat(value).concat(getFilterUnit(type, actionItemConfig), ")");
12098  }, '');
12099  var setStyle = elementApi.setStyle;
12100  addWillChange(element, _IX2EngineConstants.FILTER, elementApi);
12101  setStyle(element, _IX2EngineConstants.FILTER, filterValue);
12102}
12103
12104function hasDefined3dTransform(_ref9, _ref10) {
12105  var actionTypeId = _ref9.actionTypeId;
12106  var xValue = _ref10.xValue,
12107      yValue = _ref10.yValue,
12108      zValue = _ref10.zValue;
12109  // TRANSLATE_Z
12110  return actionTypeId === _IX2EngineItemTypes.TRANSFORM_MOVE && zValue !== undefined || // SCALE_Z
12111  actionTypeId === _IX2EngineItemTypes.TRANSFORM_SCALE && zValue !== undefined || // ROTATE_X or ROTATE_Y
12112  actionTypeId === _IX2EngineItemTypes.TRANSFORM_ROTATE && (xValue !== undefined || yValue !== undefined);
12113}
12114
12115var paramCapture = '\\(([^)]+)\\)';
12116var rgbValidRegex = /^rgb/;
12117var rgbMatchRegex = RegExp("rgba?".concat(paramCapture));
12118
12119function getFirstMatch(regex, value) {
12120  var match = regex.exec(value);
12121  return match ? match[1] : '';
12122}
12123
12124function parseColor(_ref11) {
12125  var element = _ref11.element,
12126      actionTypeId = _ref11.actionTypeId,
12127      computedStyle = _ref11.computedStyle,
12128      getStyle = _ref11.getStyle;
12129  var prop = colorStyleProps[actionTypeId];
12130  var inlineValue = getStyle(element, prop);
12131  var value = rgbValidRegex.test(inlineValue) ? inlineValue : computedStyle[prop];
12132  var matches = getFirstMatch(rgbMatchRegex, value).split(_IX2EngineConstants.COMMA_DELIMITER);
12133  return {
12134    rValue: (0, _defaultTo["default"])(parseInt(matches[0], 10), 255),
12135    gValue: (0, _defaultTo["default"])(parseInt(matches[1], 10), 255),
12136    bValue: (0, _defaultTo["default"])(parseInt(matches[2], 10), 255),
12137    aValue: (0, _defaultTo["default"])(parseFloat(matches[3]), 1)
12138  };
12139}
12140
12141function renderStyle(element, refState, actionState, actionItem, styleProp, elementApi) {
12142  var setStyle = elementApi.setStyle;
12143  var actionTypeId = actionItem.actionTypeId,
12144      config = actionItem.config;
12145
12146  switch (actionTypeId) {
12147    case _IX2EngineItemTypes.STYLE_SIZE:
12148      {
12149        var _actionItem$config5 = actionItem.config,
12150            _actionItem$config5$w = _actionItem$config5.widthUnit,
12151            widthUnit = _actionItem$config5$w === void 0 ? '' : _actionItem$config5$w,
12152            _actionItem$config5$h = _actionItem$config5.heightUnit,
12153            heightUnit = _actionItem$config5$h === void 0 ? '' : _actionItem$config5$h;
12154        var widthValue = actionState.widthValue,
12155            heightValue = actionState.heightValue;
12156
12157        if (widthValue !== undefined) {
12158          if (widthUnit === _IX2EngineConstants.AUTO) {
12159            widthUnit = 'px';
12160          }
12161
12162          addWillChange(element, _IX2EngineConstants.WIDTH, elementApi);
12163          setStyle(element, _IX2EngineConstants.WIDTH, widthValue + widthUnit);
12164        }
12165
12166        if (heightValue !== undefined) {
12167          if (heightUnit === _IX2EngineConstants.AUTO) {
12168            heightUnit = 'px';
12169          }
12170
12171          addWillChange(element, _IX2EngineConstants.HEIGHT, elementApi);
12172          setStyle(element, _IX2EngineConstants.HEIGHT, heightValue + heightUnit);
12173        }
12174
12175        break;
12176      }
12177
12178    case _IX2EngineItemTypes.STYLE_FILTER:
12179      {
12180        renderFilter(element, actionState, config, elementApi);
12181        break;
12182      }
12183
12184    case _IX2EngineItemTypes.STYLE_BACKGROUND_COLOR:
12185    case _IX2EngineItemTypes.STYLE_BORDER:
12186    case _IX2EngineItemTypes.STYLE_TEXT_COLOR:
12187      {
12188        var prop = colorStyleProps[actionTypeId];
12189        var rValue = Math.round(actionState.rValue);
12190        var gValue = Math.round(actionState.gValue);
12191        var bValue = Math.round(actionState.bValue);
12192        var aValue = actionState.aValue;
12193        addWillChange(element, prop, elementApi);
12194        setStyle(element, prop, aValue >= 1 ? "rgb(".concat(rValue, ",").concat(gValue, ",").concat(bValue, ")") : "rgba(".concat(rValue, ",").concat(gValue, ",").concat(bValue, ",").concat(aValue, ")"));
12195        break;
12196      }
12197
12198    default:
12199      {
12200        var _config$unit = config.unit,
12201            unit = _config$unit === void 0 ? '' : _config$unit;
12202        addWillChange(element, styleProp, elementApi);
12203        setStyle(element, styleProp, actionState.value + unit);
12204        break;
12205      }
12206  }
12207}
12208
12209function renderGeneral(element, actionItem, elementApi) {
12210  var setStyle = elementApi.setStyle;
12211
12212  switch (actionItem.actionTypeId) {
12213    case _IX2EngineItemTypes.GENERAL_DISPLAY:
12214      {
12215        var value = actionItem.config.value;
12216
12217        if (value === _IX2EngineConstants.FLEX && _IX2BrowserSupport.IS_BROWSER_ENV) {
12218          setStyle(element, _IX2EngineConstants.DISPLAY, _IX2BrowserSupport.FLEX_PREFIXED);
12219        } else {
12220          setStyle(element, _IX2EngineConstants.DISPLAY, value);
12221        }
12222
12223        return;
12224      }
12225  }
12226}
12227
12228function addWillChange(element, prop, elementApi) {
12229  if (!_IX2BrowserSupport.IS_BROWSER_ENV) {
12230    return;
12231  }
12232
12233  var validProp = willChangeProps[prop];
12234
12235  if (!validProp) {
12236    return;
12237  }
12238
12239  var getStyle = elementApi.getStyle,
12240      setStyle = elementApi.setStyle;
12241  var value = getStyle(element, _IX2EngineConstants.WILL_CHANGE);
12242
12243  if (!value) {
12244    setStyle(element, _IX2EngineConstants.WILL_CHANGE, validProp);
12245    return;
12246  }
12247
12248  var values = value.split(_IX2EngineConstants.COMMA_DELIMITER).map(trim);
12249
12250  if (values.indexOf(validProp) === -1) {
12251    setStyle(element, _IX2EngineConstants.WILL_CHANGE, values.concat(validProp).join(_IX2EngineConstants.COMMA_DELIMITER));
12252  }
12253}
12254
12255function removeWillChange(element, prop, elementApi) {
12256  if (!_IX2BrowserSupport.IS_BROWSER_ENV) {
12257    return;
12258  }
12259
12260  var validProp = willChangeProps[prop];
12261
12262  if (!validProp) {
12263    return;
12264  }
12265
12266  var getStyle = elementApi.getStyle,
12267      setStyle = elementApi.setStyle;
12268  var value = getStyle(element, _IX2EngineConstants.WILL_CHANGE);
12269
12270  if (!value || value.indexOf(validProp) === -1) {
12271    return;
12272  }
12273
12274  setStyle(element, _IX2EngineConstants.WILL_CHANGE, value.split(_IX2EngineConstants.COMMA_DELIMITER).map(trim).filter(function (v) {
12275    return v !== validProp;
12276  }).join(_IX2EngineConstants.COMMA_DELIMITER));
12277}
12278
12279function clearAllStyles(_ref12) {
12280  var store = _ref12.store,
12281      elementApi = _ref12.elementApi;
12282
12283  var _store$getState = store.getState(),
12284      ixData = _store$getState.ixData;
12285
12286  var _ixData$events = ixData.events,
12287      events = _ixData$events === void 0 ? {} : _ixData$events,
12288      _ixData$actionLists = ixData.actionLists,
12289      actionLists = _ixData$actionLists === void 0 ? {} : _ixData$actionLists;
12290  Object.keys(events).forEach(function (eventId) {
12291    var event = events[eventId];
12292    var config = event.action.config;
12293    var actionListId = config.actionListId;
12294    var actionList = actionLists[actionListId];
12295
12296    if (actionList) {
12297      clearActionListStyles({
12298        actionList: actionList,
12299        event: event,
12300        elementApi: elementApi
12301      });
12302    }
12303  });
12304  Object.keys(actionLists).forEach(function (actionListId) {
12305    clearActionListStyles({
12306      actionList: actionLists[actionListId],
12307      elementApi: elementApi
12308    });
12309  });
12310}
12311
12312function clearActionListStyles(_ref13) {
12313  var _ref13$actionList = _ref13.actionList,
12314      actionList = _ref13$actionList === void 0 ? {} : _ref13$actionList,
12315      event = _ref13.event,
12316      elementApi = _ref13.elementApi;
12317  var actionItemGroups = actionList.actionItemGroups,
12318      continuousParameterGroups = actionList.continuousParameterGroups;
12319  actionItemGroups && actionItemGroups.forEach(function (actionGroup) {
12320    clearActionGroupStyles({
12321      actionGroup: actionGroup,
12322      event: event,
12323      elementApi: elementApi
12324    });
12325  });
12326  continuousParameterGroups && continuousParameterGroups.forEach(function (paramGroup) {
12327    var continuousActionGroups = paramGroup.continuousActionGroups;
12328    continuousActionGroups.forEach(function (actionGroup) {
12329      clearActionGroupStyles({
12330        actionGroup: actionGroup,
12331        event: event,
12332        elementApi: elementApi
12333      });
12334    });
12335  });
12336}
12337
12338function clearActionGroupStyles(_ref14) {
12339  var actionGroup = _ref14.actionGroup,
12340      event = _ref14.event,
12341      elementApi = _ref14.elementApi;
12342  var actionItems = actionGroup.actionItems;
12343  actionItems.forEach(function (_ref15) {
12344    var actionTypeId = _ref15.actionTypeId,
12345        config = _ref15.config;
12346    var clearElement;
12347
12348    if ((0, _IX2VanillaPlugins.isPluginType)(actionTypeId)) {
12349      clearElement = (0, _IX2VanillaPlugins.clearPlugin)(actionTypeId);
12350    } else {
12351      clearElement = processElementByType({
12352        effect: clearStyleProp,
12353        actionTypeId: actionTypeId,
12354        elementApi: elementApi
12355      });
12356    }
12357
12358    getAffectedElements({
12359      config: config,
12360      event: event,
12361      elementApi: elementApi
12362    }
12362).forEach(clearElement);
12363  });
12364}
12365
12366function cleanupHTMLElement(element, actionItem, elementApi) {
12367  var setStyle = elementApi.setStyle,
12368      getStyle = elementApi.getStyle;
12369  var actionTypeId = actionItem.actionTypeId;
12370
12371  if (actionTypeId === _IX2EngineItemTypes.STYLE_SIZE) {
12372    var config = actionItem.config;
12373
12374    if (config.widthUnit === _IX2EngineConstants.AUTO) {
12375      setStyle(element, _IX2EngineConstants.WIDTH, '');
12376    }
12377
12378    if (config.heightUnit === _IX2EngineConstants.AUTO) {
12379      setStyle(element, _IX2EngineConstants.HEIGHT, '');
12380    }
12381  }
12382
12383  if (getStyle(element, _IX2EngineConstants.WILL_CHANGE)) {
12384    processElementByType({
12385      effect: removeWillChange,
12386      actionTypeId: actionTypeId,
12387      elementApi: elementApi
12388    })(element);
12389  }
12390}
12391
12392var processElementByType = function processElementByType(_ref16) {
12393  var effect = _ref16.effect,
12394      actionTypeId = _ref16.actionTypeId,
12395      elementApi = _ref16.elementApi;
12396  return function (element) {
12397    switch (actionTypeId) {
12398      case _IX2EngineItemTypes.TRANSFORM_MOVE:
12399      case _IX2EngineItemTypes.TRANSFORM_SCALE:
12400      case _IX2EngineItemTypes.TRANSFORM_ROTATE:
12401      case _IX2EngineItemTypes.TRANSFORM_SKEW:
12402        effect(element, _IX2BrowserSupport.TRANSFORM_PREFIXED, elementApi);
12403        break;
12404
12405      case _IX2EngineItemTypes.STYLE_FILTER:
12406        effect(element, _IX2EngineConstants.FILTER, elementApi);
12407        break;
12408
12409      case _IX2EngineItemTypes.STYLE_OPACITY:
12410        effect(element, _IX2EngineConstants.OPACITY, elementApi);
12411        break;
12412
12413      case _IX2EngineItemTypes.STYLE_SIZE:
12414        effect(element, _IX2EngineConstants.WIDTH, elementApi);
12415        effect(element, _IX2EngineConstants.HEIGHT, elementApi);
12416        break;
12417
12418      case _IX2EngineItemTypes.STYLE_BACKGROUND_COLOR:
12419      case _IX2EngineItemTypes.STYLE_BORDER:
12420      case _IX2EngineItemTypes.STYLE_TEXT_COLOR:
12421        effect(element, colorStyleProps[actionTypeId], elementApi);
12422        break;
12423
12424      case _IX2EngineItemTypes.GENERAL_DISPLAY:
12425        effect(element, _IX2EngineConstants.DISPLAY, elementApi);
12426        break;
12427    }
12428  };
12429};
12430
12431function clearStyleProp(element, prop, elementApi) {
12432  var setStyle = elementApi.setStyle;
12433  removeWillChange(element, prop, elementApi);
12434  setStyle(element, prop, ''); // Clear transform-style: preserve-3d
12435
12436  if (prop === _IX2BrowserSupport.TRANSFORM_PREFIXED) {
12437    setStyle(element, _IX2BrowserSupport.TRANSFORM_STYLE_PREFIXED, '');
12438  }
12439}
12440
12441function getMaxDurationItemIndex(actionItems) {
12442  var maxDuration = 0;
12443  var resultIndex = 0;
12444  actionItems.forEach(function (actionItem, index) {
12445    var config = actionItem.config;
12446    var total = config.delay + config.duration;
12447
12448    if (total >= maxDuration) {
12449      maxDuration = total;
12450      resultIndex = index;
12451    }
12452  });
12453  return resultIndex;
12454}
12455
12456function getActionListProgress(actionList, instance) {
12457  var actionItemGroups = actionList.actionItemGroups,
12458      useFirstGroupAsInitialState = actionList.useFirstGroupAsInitialState;
12459  var instanceItem = instance.actionItem,
12460      _instance$verboseTime = instance.verboseTimeElapsed,
12461      verboseTimeElapsed = _instance$verboseTime === void 0 ? 0 : _instance$verboseTime;
12462  var totalDuration = 0;
12463  var elapsedDuration = 0;
12464  actionItemGroups.forEach(function (group, index) {
12465    if (useFirstGroupAsInitialState && index === 0) {
12466      return;
12467    }
12468
12469    var actionItems = group.actionItems;
12470    var carrierItem = actionItems[getMaxDurationItemIndex(actionItems)];
12471    var config = carrierItem.config,
12472        actionTypeId = carrierItem.actionTypeId;
12473
12474    if (instanceItem.id === carrierItem.id) {
12475      elapsedDuration = totalDuration + verboseTimeElapsed;
12476    }
12477
12478    var duration = getRenderType(actionTypeId) === _IX2EngineConstants.RENDER_GENERAL ? 0 : config.duration;
12479    totalDuration += config.delay + duration;
12480  });
12481  return totalDuration > 0 ? (0, _IX2EasingUtils.optimizeFloat)(elapsedDuration / totalDuration) : 0;
12482}
12483
12484function reduceListToGroup(_ref17) {
12485  var actionListId = _ref17.actionListId,
12486      actionItemId = _ref17.actionItemId,
12487      rawData = _ref17.rawData;
12488  var actionLists = rawData.actionLists;
12489  var actionList = actionLists[actionListId];
12490  var actionItemGroups = actionList.actionItemGroups,
12491      continuousParameterGroups = actionList.continuousParameterGroups;
12492  var newActionItems = [];
12493
12494  var takeItemUntilMatch = function takeItemUntilMatch(actionItem) {
12495    newActionItems.push((0, _timm.mergeIn)(actionItem, ['config'], {
12496      delay: 0,
12497      duration: 0
12498    }));
12499    return actionItem.id === actionItemId;
12500  };
12501
12502  actionItemGroups && actionItemGroups.some(function (_ref18) {
12503    var actionItems = _ref18.actionItems;
12504    return actionItems.some(takeItemUntilMatch);
12505  });
12506  continuousParameterGroups && continuousParameterGroups.some(function (paramGroup) {
12507    var continuousActionGroups = paramGroup.continuousActionGroups;
12508    return continuousActionGroups.some(function (_ref19) {
12509      var actionItems = _ref19.actionItems;
12510      return actionItems.some(takeItemUntilMatch);
12511    });
12512  });
12513  return (0, _timm.setIn)(rawData, ['actionLists'], (0, _defineProperty2["default"])({}, actionListId, {
12514    id: actionListId,
12515    actionItemGroups: [{
12516      actionItems: newActionItems
12517    }]
12518  }));
12519}
12520
12521function shouldNamespaceEventParameter(eventTypeId, _ref21) {
12522  var basedOn = _ref21.basedOn;
12523  return eventTypeId === _IX2EngineEventTypes.SCROLLING_IN_VIEW && (basedOn === _IX2EngineEventTypes.ELEMENT || basedOn == null) || eventTypeId === _IX2EngineEventTypes.MOUSE_MOVE && basedOn === _IX2EngineEventTypes.ELEMENT;
12524}
12525
12526function getNamespacedParameterId(eventStateKey, continuousParameterGroupId) {
12527  return eventStateKey + _IX2EngineConstants.COLON_DELIMITER + continuousParameterGroupId;
12528}
12529
12530function shouldAllowMediaQuery(mediaQueries, mediaQueryKey) {
12531  // During design mode, current media query key does not exist
12532  if (mediaQueryKey == null) {
12533    return true;
12534  }
12535
12536  return mediaQueries.indexOf(mediaQueryKey) !== -1;
12537}
12538
12539function mediaQueriesEqual(listA, listB) {
12540  return (0, _shallowEqual["default"])(listA && listA.sort(), listB && listB.sort());
12541}
12542
12543function stringifyTarget(target) {
12544  if (typeof target === 'string') {
12545    return target;
12546  }
12547
12548  var _target$id = target.id,
12549      id = _target$id === void 0 ? '' : _target$id,
12550      _target$selector = target.selector,
12551      selector = _target$selector === void 0 ? '' : _target$selector,
12552      _target$useEventTarge = target.useEventTarget,
12553      useEventTarget = _target$useEventTarge === void 0 ? '' : _target$useEventTarge;
12554  return id + _IX2EngineConstants.BAR_DELIMITER + selector + _IX2EngineConstants.BAR_DELIMITER + useEventTarget;
12555}
12556
12557/***/ }),
12558/* 188 */
vendor: 5,733 bytes, lines 12559-12769
12559/***/ (function(module, exports) {
12560
12561/**
12562 * Checks `value` to determine whether a default value should be returned in
12563 * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,
12564 * or `undefined`.
12565 *
12566 * @static
12567 * @memberOf _
12568 * @since 4.14.0
12569 * @category Util
12570 * @param {*} value The value to check.
12571 * @param {*} defaultValue The default value.
12572 * @returns {*} Returns the resolved value.
12573 * @example
12574 *
12575 * _.defaultTo(1, 10);
12576 * // => 1
12577 *
12578 * _.defaultTo(undefined, 10);
12579 * // => 10
12580 */
12581function defaultTo(value, defaultValue) {
12582  return (value == null || value !== value) ? defaultValue : value;
12583}
12584
12585module.exports = defaultTo;
12586
12587
12588/***/ }),
12589/* 189 */
12590/***/ (function(module, exports, __webpack_require__) {
12591
12592var arrayReduce = __webpack_require__(190),
12593    baseEach = __webpack_require__(90),
12594    baseIteratee = __webpack_require__(6),
12595    baseReduce = __webpack_require__(194),
12596    isArray = __webpack_require__(1);
12597
12598/**
12599 * Reduces `collection` to a value which is the accumulated result of running
12600 * each element in `collection` thru `iteratee`, where each successive
12601 * invocation is supplied the return value of the previous. If `accumulator`
12602 * is not given, the first element of `collection` is used as the initial
12603 * value. The iteratee is invoked with four arguments:
12604 * (accumulator, value, index|key, collection).
12605 *
12606 * Many lodash methods are guarded to work as iteratees for methods like
12607 * `_.reduce`, `_.reduceRight`, and `_.transform`.
12608 *
12609 * The guarded methods are:
12610 * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,
12611 * and `sortBy`
12612 *
12613 * @static
12614 * @memberOf _
12615 * @since 0.1.0
12616 * @category Collection
12617 * @param {Array|Object} collection The collection to iterate over.
12618 * @param {Function} [iteratee=_.identity] The function invoked per iteration.
12619 * @param {*} [accumulator] The initial value.
12620 * @returns {*} Returns the accumulated value.
12621 * @see _.reduceRight
12622 * @example
12623 *
12624 * _.reduce([1, 2], function(sum, n) {
12625 *   return sum + n;
12626 * }, 0);
12627 * // => 3
12628 *
12629 * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {
12630 *   (result[value] || (result[value] = [])).push(key);
12631 *   return result;
12632 * }, {});
12633 * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)
12634 */
12635function reduce(collection, iteratee, accumulator) {
12636  var func = isArray(collection) ? arrayReduce : baseReduce,
12637      initAccum = arguments.length < 3;
12638
12639  return func(collection, baseIteratee(iteratee, 4), accumulator, initAccum, baseEach);
12640}
12641
12642module.exports = reduce;
12643
12644
12645/***/ }),
12646/* 190 */
12647/***/ (function(module, exports) {
12648
12649/**
12650 * A specialized version of `_.reduce` for arrays without support for
12651 * iteratee shorthands.
12652 *
12653 * @private
12654 * @param {Array} [array] The array to iterate over.
12655 * @param {Function} iteratee The function invoked per iteration.
12656 * @param {*} [accumulator] The initial value.
12657 * @param {boolean} [initAccum] Specify using the first element of `array` as
12658 *  the initial value.
12659 * @returns {*} Returns the accumulated value.
12660 */
12661function arrayReduce(array, iteratee, accumulator, initAccum) {
12662  var index = -1,
12663      length = array == null ? 0 : array.length;
12664
12665  if (initAccum && length) {
12666    accumulator = array[++index];
12667  }
12668  while (++index < length) {
12669    accumulator = iteratee(accumulator, array[index], index, array);
12670  }
12671  return accumulator;
12672}
12673
12674module.exports = arrayReduce;
12675
12676
12677/***/ }),
12678/* 191 */
12679/***/ (function(module, exports, __webpack_require__) {
12680
12681var createBaseFor = __webpack_require__(192);
12682
12683/**
12684 * The base implementation of `baseForOwn` which iterates over `object`
12685 * properties returned by `keysFunc` and invokes `iteratee` for each property.
12686 * Iteratee functions may exit iteration early by explicitly returning `false`.
12687 *
12688 * @private
12689 * @param {Object} object The object to iterate over.
12690 * @param {Function} iteratee The function invoked per iteration.
12691 * @param {Function} keysFunc The function to get the keys of `object`.
12692 * @returns {Object} Returns `object`.
12693 */
12694var baseFor = createBaseFor();
12695
12696module.exports = baseFor;
12697
12698
12699/***/ }),
12700/* 192 */
12701/***/ (function(module, exports) {
12702
12703/**
12704 * Creates a base function for methods like `_.forIn` and `_.forOwn`.
12705 *
12706 * @private
12707 * @param {boolean} [fromRight] Specify iterating from right to left.
12708 * @returns {Function} Returns the new base function.
12709 */
12710function createBaseFor(fromRight) {
12711  return function(object, iteratee, keysFunc) {
12712    var index = -1,
12713        iterable = Object(object),
12714        props = keysFunc(object),
12715        length = props.length;
12716
12717    while (length--) {
12718      var key = props[fromRight ? length : ++index];
12719      if (iteratee(iterable[key], key, iterable) === false) {
12720        break;
12721      }
12722    }
12723    return object;
12724  };
12725}
12726
12727module.exports = createBaseFor;
12728
12729
12730/***/ }),
12731/* 193 */
12732/***/ (function(module, exports, __webpack_require__) {
12733
12734var isArrayLike = __webpack_require__(10);
12735
12736/**
12737 * Creates a `baseEach` or `baseEachRight` function.
12738 *
12739 * @private
12740 * @param {Function} eachFunc The function to iterate over a collection.
12741 * @param {boolean} [fromRight] Specify iterating from right to left.
12742 * @returns {Function} Returns the new base function.
12743 */
12744function createBaseEach(eachFunc, fromRight) {
12745  return function(collection, iteratee) {
12746    if (collection == null) {
12747      return collection;
12748    }
12749    if (!isArrayLike(collection)) {
12750      return eachFunc(collection, iteratee);
12751    }
12752    var length = collection.length,
12753        index = fromRight ? length : -1,
12754        iterable = Object(collection);
12755
12756    while ((fromRight ? index-- : ++index < length)) {
12757      if (iteratee(iterable[index], index, iterable) === false) {
12758        break;
12759      }
12760    }
12761    return collection;
12762  };
12763}
12764
12765module.exports = createBaseEach;
12766
12767
12768/***/ }),
12769/* 194 */
vendor: 4,473 bytes, lines 12770-12931
12770/***/ (function(module, exports) {
12771
12772/**
12773 * The base implementation of `_.reduce` and `_.reduceRight`, without support
12774 * for iteratee shorthands, which iterates over `collection` using `eachFunc`.
12775 *
12776 * @private
12777 * @param {Array|Object} collection The collection to iterate over.
12778 * @param {Function} iteratee The function invoked per iteration.
12779 * @param {*} accumulator The initial value.
12780 * @param {boolean} initAccum Specify using the first or last element of
12781 *  `collection` as the initial value.
12782 * @param {Function} eachFunc The function to iterate over `collection`.
12783 * @returns {*} Returns the accumulated value.
12784 */
12785function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {
12786  eachFunc(collection, function(value, index, collection) {
12787    accumulator = initAccum
12788      ? (initAccum = false, value)
12789      : iteratee(accumulator, value, index, collection);
12790  });
12791  return accumulator;
12792}
12793
12794module.exports = baseReduce;
12795
12796
12797/***/ }),
12798/* 195 */
12799/***/ (function(module, exports, __webpack_require__) {
12800
12801var createFind = __webpack_require__(64),
12802    findLastIndex = __webpack_require__(196);
12803
12804/**
12805 * This method is like `_.find` except that it iterates over elements of
12806 * `collection` from right to left.
12807 *
12808 * @static
12809 * @memberOf _
12810 * @since 2.0.0
12811 * @category Collection
12812 * @param {Array|Object} collection The collection to inspect.
12813 * @param {Function} [predicate=_.identity] The function invoked per iteration.
12814 * @param {number} [fromIndex=collection.length-1] The index to search from.
12815 * @returns {*} Returns the matched element, else `undefined`.
12816 * @example
12817 *
12818 * _.findLast([1, 2, 3, 4], function(n) {
12819 *   return n % 2 == 1;
12820 * });
12821 * // => 3
12822 */
12823var findLast = createFind(findLastIndex);
12824
12825module.exports = findLast;
12826
12827
12828/***/ }),
12829/* 196 */
12830/***/ (function(module, exports, __webpack_require__) {
12831
12832var baseFindIndex = __webpack_require__(84),
12833    baseIteratee = __webpack_require__(6),
12834    toInteger = __webpack_require__(47);
12835
12836/* Built-in method references for those with the same name as other `lodash` methods. */
12837var nativeMax = Math.max,
12838    nativeMin = Math.min;
12839
12840/**
12841 * This method is like `_.findIndex` except that it iterates over elements
12842 * of `collection` from right to left.
12843 *
12844 * @static
12845 * @memberOf _
12846 * @since 2.0.0
12847 * @category Array
12848 * @param {Array} array The array to inspect.
12849 * @param {Function} [predicate=_.identity] The function invoked per iteration.
12850 * @param {number} [fromIndex=array.length-1] The index to search from.
12851 * @returns {number} Returns the index of the found element, else `-1`.
12852 * @example
12853 *
12854 * var users = [
12855 *   { 'user': 'barney',  'active': true },
12856 *   { 'user': 'fred',    'active': false },
12857 *   { 'user': 'pebbles', 'active': false }
12858 * ];
12859 *
12860 * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });
12861 * // => 2
12862 *
12863 * // The `_.matches` iteratee shorthand.
12864 * _.findLastIndex(users, { 'user': 'barney', 'active': true });
12865 * // => 0
12866 *
12867 * // The `_.matchesProperty` iteratee shorthand.
12868 * _.findLastIndex(users, ['active', false]);
12869 * // => 2
12870 *
12871 * // The `_.property` iteratee shorthand.
12872 * _.findLastIndex(users, 'active');
12873 * // => 0
12874 */
12875function findLastIndex(array, predicate, fromIndex) {
12876  var length = array == null ? 0 : array.length;
12877  if (!length) {
12878    return -1;
12879  }
12880  var index = length - 1;
12881  if (fromIndex !== undefined) {
12882    index = toInteger(fromIndex);
12883    index = fromIndex < 0
12884      ? nativeMax(length + index, 0)
12885      : nativeMin(index, length - 1);
12886  }
12887  return baseFindIndex(array, baseIteratee(predicate, 3), index, true);
12888}
12889
12890module.exports = findLastIndex;
12891
12892
12893/***/ }),
12894/* 197 */
12895/***/ (function(module, exports, __webpack_require__) {
12896
12897"use strict";
12898/**
12899 * Copyright (c) 2013-present, Facebook, Inc.
12900 *
12901 * This source code is licensed under the MIT license found in the
12902 * LICENSE file in the root directory of this source tree.
12903 *
12904 * @typechecks
12905 * 
12906 */
12907
12908/*eslint-disable no-self-compare */
12909
12910
12911
12912var hasOwnProperty = Object.prototype.hasOwnProperty;
12913
12914/**
12915 * inlined Object.is polyfill to avoid requiring consumers ship their own
12916 * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is
12917 */
12918function is(x, y) {
12919  // SameValue algorithm
12920  if (x === y) {
12921    // Steps 1-5, 7-10
12922    // Steps 6.b-6.e: +0 != -0
12923    // Added the nonzero y check to make Flow happy, but it is redundant
12924    return x !== 0 || y !== 0 || 1 / x === 1 / y;
12925  } else {
12926    // Step 6.a: NaN == NaN
12927    return x !== x && y !== y;
12928  }
12929}
12930
12931/**
12932 * Performs equality by iterating through keys on an object and returning false
12933 * when any key has values which are not strictly equal between the arguments.
12934 * Returns true when the values of all keys are strictly equal.
12935 */
12936function shallowEqual(objA, objB) {
12937  if (is(objA, objB)) {
12938    return true;
12939  }
12940
12941  if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {
12942    return false;
12943  }
12944
12945  var keysA = Object.keys(objA);
12946  var keysB = Object.keys(objB);
12947
12948  if (keysA.length !== keysB.length) {
12949    return false;
12950  }
12951
12952  // Test for A's keys different from B.
12953  for (var i = 0; i < keysA.length; i++) {
12954    if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {
12955      return false;
12956    }
12957  }
12958
12959  return true;
12960}
12961
12962module.exports = shallowEqual;
12963
12964/***/ }),
12965/* 198 */
12966/***/ (function(module, exports, __webpack_require__) {
12967
12968"use strict";
12969
12970
12971var _interopRequireDefault2 = __webpack_require__(0);
12972
12973var _defineProperty2 = _interopRequireDefault2(__webpack_require__(14));
12974
12975var _Object$create;
12976
12977var _interopRequireDefault = __webpack_require__(0);
12978
12979Object.defineProperty(exports, "__esModule", {
12980  value: true
12981});
12982exports.ixRequest = void 0;
12983
12984var _objectSpread2 = _interopRequireDefault(__webpack_require__(26));
12985
12986var _shared = __webpack_require__(3);
12987
12988var _timm = __webpack_require__(13);
12989
12990var _shared$IX2EngineActi = _shared.IX2EngineActionTypes,
12991    IX2_PREVIEW_REQUESTED = _shared$IX2EngineActi.IX2_PREVIEW_REQUESTED,
12992    IX2_PLAYBACK_REQUESTED = _shared$IX2EngineActi.IX2_PLAYBACK_REQUESTED,
12993    IX2_STOP_REQUESTED = _shared$IX2EngineActi.IX2_STOP_REQUESTED,
12994    IX2_CLEAR_REQUESTED = _shared$IX2EngineActi.IX2_CLEAR_REQUESTED;
12995var initialState = {
12996  preview: {},
12997  playback: {},
12998  stop: {},
12999  clear: {}
13000};
13001var stateKeys = Object.create(null, (_Object$create = {}, (0, _defineProperty2["default"])(_Object$create, IX2_PREVIEW_REQUESTED, {
13002  value: 'preview'
13003}), (0, _defineProperty2["default"])(_Object$create, IX2_PLAYBACK_REQUESTED, {
13004  value: 'playback'
13005}), (0, _defineProperty2["default"])(_Object$create, IX2_STOP_REQUESTED, {
13006  value: 'stop'
13007}), (0, _defineProperty2["default"])(_Object$create, IX2_CLEAR_REQUESTED, {
13008  value: 'clear'
13009}), _Object$create));
13010
13011var ixRequest = function ixRequest() {
13012  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
13013  var action = arguments.length > 1 ? arguments[1] : undefined;
13014
13015  if (action.type in stateKeys) {
13016    var key = [stateKeys[action.type]];
13017    return (0, _timm.setIn)(state, [key], (0, _objectSpread2["default"])({}, action.payload));
13018  }
13019
13020  return state;
13021};
13022
13023exports.ixRequest = ixRequest;
13024
13025/***/ }),
13026/* 199 */
13027/***/ (function(module, exports, __webpack_require__) {
13028
13029"use strict";
13030
13031
13032Object.defineProperty(exports, "__esModule", {
13033  value: true
13034});
13035exports.ixSession = void 0;
13036
13037var _shared = __webpack_require__(3);
13038
13039var _timm = __webpack_require__(13);
13040
13041var _shared$IX2EngineActi = _shared.IX2EngineActionTypes,
13042    IX2_SESSION_INITIALIZED = _shared$IX2EngineActi.IX2_SESSION_INITIALIZED,
13043    IX2_SESSION_STARTED = _shared$IX2EngineActi.IX2_SESSION_STARTED,
13044    IX2_TEST_FRAME_RENDERED = _shared$IX2EngineActi.IX2_TEST_FRAME_RENDERED,
13045    IX2_SESSION_STOPPED = _shared$IX2EngineActi.IX2_SESSION_STOPPED,
13046    IX2_EVENT_LISTENER_ADDED = _shared$IX2EngineActi.IX2_EVENT_LISTENER_ADDED,
13047    IX2_EVENT_STATE_CHANGED = _shared$IX2EngineActi.IX2_EVENT_STATE_CHANGED,
13048    IX2_ANIMATION_FRAME_CHANGED = _shared$IX2EngineActi.IX2_ANIMATION_FRAME_CHANGED,
13049    IX2_ACTION_LIST_PLAYBACK_CHANGED = _shared$IX2EngineActi.IX2_ACTION_LIST_PLAYBACK_CHANGED,
13050    IX2_VIEWPORT_WIDTH_CHANGED = _shared$IX2EngineActi.IX2_VIEWPORT_WIDTH_CHANGED,
13051    IX2_MEDIA_QUERIES_DEFINED = _shared$IX2EngineActi.IX2_MEDIA_QUERIES_DEFINED;
13052var initialState = {
13053  active: false,
13054  tick: 0,
13055  eventListeners: [],
13056  eventState: {},
13057  playbackState: {},
13058  viewportWidth: 0,
13059  mediaQueryKey: null,
13060  hasBoundaryNodes: false,
13061  hasDefinedMediaQueries: false
13062};
13063var TEST_FRAME_STEPS_SIZE = 20;
13064
13065var ixSession = function ixSession() {
13066  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
13067  var action = arguments.length > 1 ? arguments[1] : undefined;
13068
13069  switch (action.type) {
13070    case IX2_SESSION_INITIALIZED:
13071      {
13072        var hasBoundaryNodes = action.payload.hasBoundaryNodes;
13073        return (0, _timm.set)(state, 'hasBoundaryNodes', hasBoundaryNodes);
13074      }
13075
13076    case IX2_SESSION_STARTED:
13077      {
13078        return (0, _timm.set)(state, 'active', true);
13079      }
13080
13081    case IX2_TEST_FRAME_RENDERED:
13082      {
13083        var _action$payload$step = action.payload.step,
13084            step = _action$payload$step === void 0 ? TEST_FRAME_STEPS_SIZE : _action$payload$step;
13085        return (0, _timm.set)(state, 'tick', state.tick + step);
13086      }
13087
13088    case IX2_SESSION_STOPPED:
13089      {
13090        return initialState;
13091      }
13092
13093    case IX2_ANIMATION_FRAME_CHANGED:
13094      {
13095        var now = action.payload.now;
13096        return (0, _timm.set)(state, 'tick', now);
13097      }
13098
13099    case IX2_EVENT_LISTENER_ADDED:
13100      {
13101        var eventListeners = (0, _timm.addLast)(state.eventListeners, action.payload);
13102        return (0, _timm.set)(state, 'eventListeners', eventListeners);
13103      }
13104
13105    case IX2_EVENT_STATE_CHANGED:
13106      {
13107        var _action$payload = action.payload,
13108            stateKey = _action$payload.stateKey,
13109            newState = _action$payload.newState;
13110        return (0, _timm.setIn)(state, ['eventState', stateKey], newState);
13111      }
13112
13113    case IX2_ACTION_LIST_PLAYBACK_CHANGED:
13114      {
13115        var _action$payload2 = action.payload,
13116            actionListId = _action$payload2.actionListId,
13117            isPlaying = _action$payload2.isPlaying;
13118        return (0, _timm.setIn)(state, ['playbackState', actionListId], isPlaying);
13119      }
13120
13121    case IX2_VIEWPORT_WIDTH_CHANGED:
13122      {
13123        var _action$payload3 = action.payload,
13124            width = _action$payload3.width,
13125            mediaQueries = _action$payload3.mediaQueries;
13126        var mediaQueryCount = mediaQueries.length;
13127        var mediaQueryKey = null;
13128
13129        for (var i = 0; i < mediaQueryCount; i++) {
13130          var _mediaQueries$i = mediaQueries[i],
13131              key = _mediaQueries$i.key,
13132              min = _mediaQueries$i.min,
13133              max = _mediaQueries$i.max;
13134
13135          if (width >= min && width <= max) {
13136            mediaQueryKey = key;
13137            break;
13138          }
13139        }
13140
13141        return (0, _timm.merge)(state, {
13142          viewportWidth: width,
13143          mediaQueryKey: mediaQueryKey
13144        });
13145      }
13146
13147    case IX2_MEDIA_QUERIES_DEFINED:
13148      {
13149        return (0, _timm.set)(state, 'hasDefinedMediaQueries', true);
13150      }
13151
13152    default:
13153      {
13154        return state;
13155      }
13156  }
13157};
13158
13159exports.ixSession = ixSession;
13160
13161/***/ }),
13162/* 200 */
13163/***/ (function(module, exports, __webpack_require__) {
13164
13165"use strict";
13166
13167
13168Object.defineProperty(exports, "__esModule", {
13169  value: true
13170});
13171exports.ixInstances = void 0;
13172
13173var _shared = __webpack_require__(3);
13174
13175var _timm = __webpack_require__(13);
13176/* eslint-env browser */
13177
13178
13179var _shared$IX2EngineActi = _shared.IX2EngineActionTypes,
13180    IX2_RAW_DATA_IMPORTED = _shared$IX2EngineActi.IX2_RAW_DATA_IMPORTED,
13181    IX2_SESSION_STOPPED = _shared$IX2EngineActi.IX2_SESSION_STOPPED,
13182    IX2_INSTANCE_ADDED = _shared$IX2EngineActi.IX2_INSTANCE_ADDED,
13183    IX2_INSTANCE_STARTED = _shared$IX2EngineActi.IX2_INSTANCE_STARTED,
13184    IX2_INSTANCE_REMOVED = _shared$IX2EngineActi.IX2_INSTANCE_REMOVED,
13185    IX2_ANIMATION_FRAME_CHANGED = _shared$IX2EngineActi.IX2_ANIMATION_FRAME_CHANGED;
13186var _shared$IX2EasingUtil = _shared.IX2EasingUtils,
13187    optimizeFloat = _shared$IX2EasingUtil.optimizeFloat,
13188    applyEasing = _shared$IX2EasingUtil.applyEasing;
13189var RENDER_GENERAL = _shared.IX2EngineConstants.RENDER_GENERAL;
13190var _shared$IX2VanillaUti = _shared.IX2VanillaUtils,
13191    getItemConfigByKey = _shared$IX2VanillaUti.getItemConfigByKey,
13192    getRenderType = _shared$IX2VanillaUti.getRenderType,
13193    getStyleProp = _shared$IX2VanillaUti.getStyleProp;
13194
13195var continuousInstance = function continuousInstance(state, action) {
13196  var lastPosition = state.position,
13197      parameterId = state.parameterId,
13198      actionGroups = state.actionGroups,
13199      destinationKeys = state.destinationKeys,
13200      smoothing = state.smoothing,
13201      restingValue = state.restingValue,
13202      actionTypeId = state.actionTypeId;
13203  var parameters = action.payload.parameters;
13204  var velocity = Math.max(1 - smoothing, 0.01);
13205  var paramValue = parameters[parameterId];
13206
13207  if (paramValue == null) {
13208    velocity = 1;
13209    paramValue = restingValue;
13210  }
13211
13212  var nextPosition = Math.max(paramValue, 0) || 0;
13213  var positionDiff = optimizeFloat(nextPosition - lastPosition);
13214  var position = optimizeFloat(lastPosition + positionDiff * velocity);
13215  var keyframePosition = position * 100;
13216
13217  if (position === lastPosition && state.current) {
13218    return state;
13219  }
13220
13221  var fromActionItem;
13222  var toActionItem;
13223  var positionOffset;
13224  var positionRange;
13225
13226  for (var i = 0, length = actionGroups.length; i < length; i++) {
13227    var _actionGroups$i = actionGroups[i],
13228        keyframe = _actionGroups$i.keyframe,
13229        actionItems = _actionGroups$i.actionItems;
13230
13231    if (i === 0) {
13232      fromActionItem = actionItems[0];
13233    }
13234
13235    if (keyframePosition >= keyframe) {
13236      fromActionItem = actionItems[0];
13237      var nextGroup = actionGroups[i + 1];
13238      var hasNextItem = nextGroup && keyframePosition !== keyframe;
13239      toActionItem = hasNextItem ? nextGroup.actionItems[0] : null;
13240
13241      if (hasNextItem) {
13242        positionOffset = keyframe / 100;
13243        positionRange = (nextGroup.keyframe - keyframe) / 100;
13244      }
13245    }
13246  }
13247
13248  var current = {};
13249
13250  if (fromActionItem && !toActionItem) {
13251    for (var _i = 0, _length = destinationKeys.length; _i < _length; _i++) {
13252      var key = destinationKeys[_i];
13253      current[key] = getItemConfigByKey(actionTypeId, key, fromActionItem.config);
13254    }
13255  } else if (fromActionItem && toActionItem) {
13256    var localPosition = (position - positionOffset) / positionRange;
13257    var easing = fromActionItem.config.easing;
13258    var eased = applyEasing(easing, localPosition);
13259
13260    for (var _i2 = 0, _length2 = destinationKeys.length; _i2 < _length2; _i2++) {
13261      var _key = destinationKeys[_i2];
13262      var fromVal = getItemConfigByKey(actionTypeId, _key, fromActionItem.config);
13263      var toVal = getItemConfigByKey(actionTypeId, _key, toActionItem.config);
13264      var diff = toVal - fromVal;
13265      var value = diff * eased + fromVal;
13266      current[_key] = value;
13267    }
13268  }
13269
13270  return (0, _timm.merge)(state, {
13271    position: position,
13272    current: current
13273  });
13274};
13275
13276var timedInstance = function timedInstance(state, action) {
13277  var _state = state,
13278      active = _state.active,
13279      origin = _state.origin,
13280      start = _state.start,
13281      immediate = _state.immediate,
13282      renderType = _state.renderType,
13283      verbose = _state.verbose,
13284      actionItem = _state.actionItem,
13285      destination = _state.destination,
13286      destinationKeys = _state.destinationKeys,
13287      instanceDelay = _state.instanceDelay;
13288  var easing = actionItem.config.easing;
13289  var _actionItem$config = actionItem.config,
13290      duration = _actionItem$config.duration,
13291      delay = _actionItem$config.delay;
13292  delay = instanceDelay != null ? instanceDelay : delay;
13293
13294  if (renderType === RENDER_GENERAL) {
13295    duration = 0;
13296  } else if (immediate) {
13297    duration = delay = 0;
13298  }
13299
13300  var now = action.payload.now;
13301
13302  if (active && origin) {
13303    var delta = now - (start + delay);
13304
13305    if (verbose) {
13306      var verboseDelta = now - start;
13307      var verboseDuration = duration + delay;
13308      var verbosePosition = optimizeFloat(Math.min(Math.max(0, verboseDelta / verboseDuration), 1));
13309      state = (0, _timm.set)(state, 'verboseTimeElapsed', verboseDuration * verbosePosition);
13310    }
13311
13312    if (delta < 0) {
13313      return state;
13314    }
13315
13316    var position = optimizeFloat(Math.min(Math.max(0, delta / duration), 1));
13317    var eased = applyEasing(easing, position);
13318    var newProps = {};
13319    var current = null;
13320
13321    if (destinationKeys.length) {
13322      current = destinationKeys.reduce(function (result, key) {
13323        var destValue = destination[key];
13324        var originVal = parseFloat(origin[key]) || 0;
13325        var diff = parseFloat(destValue) - originVal;
13326        var value = diff * eased + originVal;
13327        result[key] = value;
13328        return result;
13329      }, {});
13330    }
13331
13332    newProps.current = current;
13333    newProps.position = position;
13334
13335    if (position === 1) {
13336      newProps.active = false;
13337      newProps.complete = true;
13338    }
13339
13340    return (0, _timm.merge)(state, newProps);
13341  }
13342
13343  return state;
13344};
13345
13346var ixInstances = function ixInstances() {
13347  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Object.freeze({});
13348  var action = arguments.length > 1 ? arguments[1] : undefined;
13349
13350  switch (action.type) {
13351    case IX2_RAW_DATA_IMPORTED:
13352      {
13353        return action.payload.ixInstances || Object.freeze({});
13354      }
13355
13356    case IX2_SESSION_STOPPED:
13357      {
13358        return Object.freeze({});
13359      }
13360
13361    case IX2_INSTANCE_ADDED:
13362      {
13363        var _action$payload = action.payload,
13364            instanceId = _action$payload.instanceId,
13365            elementId = _action$payload.elementId,
13366            actionItem = _action$payload.actionItem,
13367            eventId = _action$payload.eventId,
13368            eventTarget = _action$payload.eventTarget,
13369            eventStateKey = _action$payload.eventStateKey,
13370            actionListId = _action$payload.actionListId,
13371            groupIndex = _action$payload.groupIndex,
13372            isCarrier = _action$payload.isCarrier,
13373            origin = _action$payload.origin,
13374            destination = _action$payload.destination,
13375            immediate = _action$payload.immediate,
13376            verbose = _action$payload.verbose,
13377            continuous = _action$payload.continuous,
13378            parameterId = _action$payload.parameterId,
13379            actionGroups = _action$payload.actionGroups,
13380            smoothing = _action$payload.smoothing,
13381            restingValue = _action$payload.restingValue,
13382            pluginInstance = _action$payload.pluginInstance,
13383            instanceDelay = _action$payload.instanceDelay;
13384        var actionTypeId = actionItem.actionTypeId;
13385        var renderType = getRenderType(actionTypeId);
13386        var styleProp = getStyleProp(renderType, actionTypeId);
13387        var destinationKeys = Object.keys(destination).filter(function (key) {
13388          return destination[key] != null;
13389        });
13390        return (0, _timm.set)(state, instanceId, {
13391          id: instanceId,
13392          elementId: elementId,
13393          active: false,
13394          position: 0,
13395          start: 0,
13396          origin: origin,
13397          destination: destination,
13398          destinationKeys: destinationKeys,
13399          immediate: immediate,
13400          verbose: verbose,
13401          current: null,
13402          actionItem: actionItem,
13403          actionTypeId: actionTypeId,
13404          eventId: eventId,
13405          eventTarget: eventTarget,
13406          eventStateKey: eventStateKey,
13407          actionListId: actionListId,
13408          groupIndex: groupIndex,
13409          renderType: renderType,
13410          isCarrier: isCarrier,
13411          styleProp: styleProp,
13412          continuous: continuous,
13413          parameterId: parameterId,
13414          actionGroups: actionGroups,
13415          smoothing: smoothing,
13416          restingValue: restingValue,
13417          pluginInstance: pluginInstance,
13418          instanceDelay: instanceDelay
13419        });
13420      }
13421
13422    case IX2_INSTANCE_STARTED:
13423      {
13424        var _action$payload2 = action.payload,
13425            _instanceId = _action$payload2.instanceId,
13426            time = _action$payload2.time;
13427        return (0, _timm.mergeIn)(state, [_instanceId], {
13428          active: true,
13429          complete: false,
13430          start: time
13431        });
13432      }
13433
13434    case IX2_INSTANCE_REMOVED:
13435      {
13436        var _instanceId2 = action.payload.instanceId;
13437
13438        if (!state[_instanceId2]) {
13439          return state;
13440        }
13441
13442        var newState = {};
13443        var keys = Object.keys(state);
13444        var length = keys.length;
13445
13446        for (var i = 0; i < length; i++) {
13447          var key = keys[i];
13448
13449          if (key !== _instanceId2) {
13450            newState[key] = state[key];
13451          }
13452        }
13453
13454        return newState;
13455      }
13456
13457    case IX2_ANIMATION_FRAME_CHANGED:
13458      {
13459        var _newState = state;
13460
13461        var _keys = Object.keys(state);
13462
13463        var _length3 = _keys.length;
13464
13465        for (var _i3 = 0; _i3 < _length3; _i3++) {
13466          var _key2 = _keys[_i3];
13467          var instance = state[_key2];
13468          var reducer = instance.continuous ? continuousInstance : timedInstance;
13469          _newState = (0, _timm.set)(_newState, _key2, reducer(instance, action));
13470        }
13471
13472        return _newState;
13473      }
13474
13475    default:
13476      {
13477        return state;
13478      }
13479  }
13480};
13481
13482exports.ixInstances = ixInstances;
13483
13484/***/ }),
13485/* 201 */
13486/***/ (function(module, exports, __webpack_require__) {
13487
13488"use strict";
13489
13490
13491Object.defineProperty(exports, "__esModule", {
13492  value: true
13493});
13494exports.ixParameters = void 0;
13495
13496var _shared = __webpack_require__(3);
13497
13498var _shared$IX2EngineActi = _shared.IX2EngineActionTypes,
13499    IX2_RAW_DATA_IMPORTED = _shared$IX2EngineActi.IX2_RAW_DATA_IMPORTED,
13500    IX2_SESSION_STOPPED = _shared$IX2EngineActi.IX2_SESSION_STOPPED,
13501    IX2_PARAMETER_CHANGED = _shared$IX2EngineActi.IX2_PARAMETER_CHANGED; // prettier-ignore
13502
13503var ixParameters = function ixParameters() {
13504  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
13505    /*mutable flat state*/
13506  };
13507  var action = arguments.length > 1 ? arguments[1] : undefined;
13508
13509  switch (action.type) {
13510    case IX2_RAW_DATA_IMPORTED:
13511      {
13512        return action.payload.ixParameters || {
13513          /*mutable flat state*/
13514        };
13515      }
13516
13517    case IX2_SESSION_STOPPED:
13518      {
13519        return {
13520          /*mutable flat state*/
13521        };
13522      }
13523
13524    case IX2_PARAMETER_CHANGED:
13525      {
13526        var _action$payload = action.payload,
13527            key = _action$payload.key,
13528            value = _action$payload.value;
13529        state[key] = value;
13530        return state;
13531      }
13532
13533    default:
13534      {
13535        return state;
13536      }
13537  }
13538};
13539
13540exports.ixParameters = ixParameters;
13541
13542/***/ }),
13543/* 202 */
13544/***/ (function(module, exports, __webpack_require__) {
13545
13546var arrayWithoutHoles = __webpack_require__(203);
13547
13548var iterableToArray = __webpack_require__(204);
13549
13550var nonIterableSpread = __webpack_require__(205);
13551
13552function _toConsumableArray(arr) {
13553  return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();
13554}
13555
13556module.exports = _toConsumableArray;
13557
13558/***/ }),
13559/* 203 */
13560/***/ (function(module, exports) {
13561
13562function _arrayWithoutHoles(arr) {
13563  if (Array.isArray(arr)) {
13564    for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {
13565      arr2[i] = arr[i];
13566    }
13567
13568    return arr2;
13569  }
13570}
13571
13572module.exports = _arrayWithoutHoles;
13573
13574/***/ }),
13575/* 204 */
13576/***/ (function(module, exports) {
13577
13578function _iterableToArray(iter) {
13579  if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter);
13580}
13581
13582module.exports = _iterableToArray;
13583
13584/***/ }),
13585/* 205 */
13586/***/ (function(module, exports) {
13587
13588function _nonIterableSpread() {
13589  throw new TypeError("Invalid attempt to spread non-iterable instance");
13590}
13591
13592module.exports = _nonIterableSpread;
13593
13594/***/ }),
13595/* 206 */
13596/***/ (function(module, exports, __webpack_require__) {
13597
13598var objectWithoutPropertiesLoose = __webpack_require__(207);
13599
13600function _objectWithoutProperties(source, excluded) {
13601  if (source == null) return {};
13602  var target = objectWithoutPropertiesLoose(source, excluded);
13603  var key, i;
13604
13605  if (Object.getOwnPropertySymbols) {
13606    var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
13607
13608    for (i = 0; i < sourceSymbolKeys.length; i++) {
13609      key = sourceSymbolKeys[i];
13610      if (excluded.indexOf(key) >= 0) continue;
13611      if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
13612      target[key] = source[key];
13613    }
13614  }
13615
13616  return target;
13617}
13618
13619module.exports = _objectWithoutProperties;
13620
13621/***/ }),
13622/* 207 */
13623/***/ (function(module, exports) {
13624
13625function _objectWithoutPropertiesLoose(source, excluded) {
13626  if (source == null) return {};
13627  var target = {};
13628  var sourceKeys = Object.keys(source);
13629  var key, i;
13630
13631  for (i = 0; i < sourceKeys.length; i++) {
13632    key = sourceKeys[i];
13633    if (excluded.indexOf(key) >= 0) continue;
13634    target[key] = source[key];
13635  }
13636
13637  return target;
13638}
13639
13640module.exports = _objectWithoutPropertiesLoose;
13641
13642/***/ }),
13643/* 208 */
13644/***/ (function(module, exports, __webpack_require__) {
13645
13646var baseKeys = __webpack_require__(41),
13647    getTag = __webpack_require__(43),
13648    isArrayLike = __webpack_require__(10),
13649    isString = __webpack_require__(209),
13650    stringSize = __webpack_require__(210);
13651
13652/** `Object#toString` result references. */
13653var mapTag = '[object Map]',
13654    setTag = '[object Set]';
13655
13656/**
13657 * Gets the size of `collection` by returning its length for array-like
13658 * values or the number of own enumerable string keyed properties for objects.
13659 *
13660 * @static
13661 * @memberOf _
13662 * @since 0.1.0
13663 * @category Collection
13664 * @param {Array|Object|string} collection The collection to inspect.
13665 * @returns {number} Returns the collection size.
13666 * @example
13667 *
13668 * _.size([1, 2, 3]);
13669 * // => 3
13670 *
13671 * _.size({ 'a': 1, 'b': 2 });
13672 * // => 2
13673 *
13674 * _.size('pebbles');
13675 * // => 7
13676 */
13677function size(collection) {
13678  if (collection == null) {
13679    return 0;
13680  }
13681  if (isArrayLike(collection)) {
13682    return isString(collection) ? stringSize(collection) : collection.length;
13683  }
13684  var tag = getTag(collection);
13685  if (tag == mapTag || tag == setTag) {
13686    return collection.size;
13687  }
13688  return baseKeys(collection).length;
13689}
13690
13691module.exports = size;
13692
13693
13694/***/ }),
13695/* 209 */
13696/***/ (function(module, exports, __webpack_require__) {
13697
13698var baseGetTag = __webpack_require__(9),
13699    isArray = __webpack_require__(1),
13700    isObjectLike = __webpack_require__(8);
13701
13702/** `Object#toString` result references. */
13703var stringTag = '[object String]';
13704
13705/**
13706 * Checks if `value` is classified as a `String` primitive or object.
13707 *
13708 * @static
13709 * @since 0.1.0
13710 * @memberOf _
13711 * @category Lang
13712 * @param {*} value The value to check.
13713 * @returns {boolean} Returns `true` if `value` is a string, else `false`.
13714 * @example
13715 *
13716 * _.isString('abc');
13717 * // => true
13718 *
13719 * _.isString(1);
13720 * // => false
13721 */
13722function isString(value) {
13723  return typeof value == 'string' ||
13724    (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);
13725}
13726
13727module.exports = isString;
13728
13729
13730/***/ }),
13731/* 210 */
13732/***/ (function(module, exports, __webpack_require__) {
13733
13734var asciiSize = __webpack_require__(211),
13735    hasUnicode = __webpack_require__(212),
13736    unicodeSize = __webpack_require__(213);
13737
13738/**
13739 * Gets the number of symbols in `string`.
13740 *
13741 * @private
13742 * @param {string} string The string to inspect.
13743 * @returns {number} Returns the string size.
13744 */
13745function stringSize(string) {
13746  return hasUnicode(string)
13747    ? unicodeSize(string)
13748    : asciiSize(string);
13749}
13750
13751module.exports = stringSize;
13752
13753
13754/***/ }),
13755/* 211 */
13756/***/ (function(module, exports, __webpack_require__) {
13757
13758var baseProperty = __webpack_require__(83);
13759
13760/**
13761 * Gets the size of an ASCII `string`.
13762 *
13763 * @private
13764 * @param {string} string The string inspect.
13765 * @returns {number} Returns the string size.
13766 */
13767var asciiSize = baseProperty('length');
13768
13769module.exports = asciiSize;
13770
13771
13772/***/ }),
13773/* 212 */
vendor: 2,920 bytes, lines 13774-13863
13774/***/ (function(module, exports) {
13775
13776/** Used to compose unicode character classes. */
13777var rsAstralRange = '\\ud800-\\udfff',
13778    rsComboMarksRange = '\\u0300-\\u036f',
13779    reComboHalfMarksRange = '\\ufe20-\\ufe2f',
13780    rsComboSymbolsRange = '\\u20d0-\\u20ff',
13781    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
13782    rsVarRange = '\\ufe0e\\ufe0f';
13783
13784/** Used to compose unicode capture groups. */
13785var rsZWJ = '\\u200d';
13786
13787/** 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/). */
13788var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboRange + rsVarRange + ']');
13789
13790/**
13791 * Checks if `string` contains Unicode symbols.
13792 *
13793 * @private
13794 * @param {string} string The string to inspect.
13795 * @returns {boolean} Returns `true` if a symbol is found, else `false`.
13796 */
13797function hasUnicode(string) {
13798  return reHasUnicode.test(string);
13799}
13800
13801module.exports = hasUnicode;
13802
13803
13804/***/ }),
13805/* 213 */
13806/***/ (function(module, exports) {
13807
13808/** Used to compose unicode character classes. */
13809var rsAstralRange = '\\ud800-\\udfff',
13810    rsComboMarksRange = '\\u0300-\\u036f',
13811    reComboHalfMarksRange = '\\ufe20-\\ufe2f',
13812    rsComboSymbolsRange = '\\u20d0-\\u20ff',
13813    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
13814    rsVarRange = '\\ufe0e\\ufe0f';
13815
13816/** Used to compose unicode capture groups. */
13817var rsAstral = '[' + rsAstralRange + ']',
13818    rsCombo = '[' + rsComboRange + ']',
13819    rsFitz = '\\ud83c[\\udffb-\\udfff]',
13820    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',
13821    rsNonAstral = '[^' + rsAstralRange + ']',
13822    rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}',
13823    rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]',
13824    rsZWJ = '\\u200d';
13825
13826/** Used to compose unicode regexes. */
13827var reOptMod = rsModifier + '?',
13828    rsOptVar = '[' + rsVarRange + ']?',
13829    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',
13830    rsSeq = rsOptVar + reOptMod + rsOptJoin,
13831    rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';
13832
13833/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */
13834var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');
13835
13836/**
13837 * Gets the size of a Unicode `string`.
13838 *
13839 * @private
13840 * @param {string} string The string inspect.
13841 * @returns {number} Returns the string size.
13842 */
13843function unicodeSize(string) {
13844  var result = reUnicode.lastIndex = 0;
13845  while (reUnicode.test(string)) {
13846    ++result;
13847  }
13848  return result;
13849}
13850
13851module.exports = unicodeSize;
13852
13853
13854/***/ }),
13855/* 214 */
13856/***/ (function(module, exports, __webpack_require__) {
13857
13858var baseIteratee = __webpack_require__(6),
13859    negate = __webpack_require__(215),
13860    pickBy = __webpack_require__(216);
13861
13862/**
13863 * The opposite of `_.pickBy`;
13863 this method creates an object composed of
13864 * the own and inherited enumerable string keyed properties of `object` that
13865 * `predicate` doesn't return truthy for. The predicate is invoked with two
13866 * arguments: (value, key).
13867 *
13868 * @static
13869 * @memberOf _
13870 * @since 4.0.0
13871 * @category Object
13872 * @param {Object} object The source object.
13873 * @param {Function} [predicate=_.identity] The function invoked per property.
13874 * @returns {Object} Returns the new object.
13875 * @example
13876 *
13877 * var object = { 'a': 1, 'b': '2', 'c': 3 };
13878 *
13879 * _.omitBy(object, _.isNumber);
13880 * // => { 'b': '2' }
13881 */
13882function omitBy(object, predicate) {
13883  return pickBy(object, negate(baseIteratee(predicate)));
13884}
13885
13886module.exports = omitBy;
13887
13888
13889/***/ }),
13890/* 215 */
13891/***/ (function(module, exports) {
13892
13893/** Error message constants. */
13894var FUNC_ERROR_TEXT = 'Expected a function';
13895
13896/**
13897 * Creates a function that negates the result of the predicate `func`. The
13898 * `func` predicate is invoked with the `this` binding and arguments of the
13899 * created function.
13900 *
13901 * @static
13902 * @memberOf _
13903 * @since 3.0.0
13904 * @category Function
13905 * @param {Function} predicate The predicate to negate.
13906 * @returns {Function} Returns the new negated function.
13907 * @example
13908 *
13909 * function isEven(n) {
13910 *   return n % 2 == 0;
13911 * }
13912 *
13913 * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));
13914 * // => [1, 3, 5]
13915 */
13916function negate(predicate) {
13917  if (typeof predicate != 'function') {
13918    throw new TypeError(FUNC_ERROR_TEXT);
13919  }
13920  return function() {
13921    var args = arguments;
13922    switch (args.length) {
13923      case 0: return !predicate.call(this);
13924      case 1: return !predicate.call(this, args[0]);
13925      case 2: return !predicate.call(this, args[0], args[1]);
13926      case 3: return !predicate.call(this, args[0], args[1], args[2]);
13927    }
13928    return !predicate.apply(this, args);
13929  };
13930}
13931
13932module.exports = negate;
13933
13934
13935/***/ }),
13936/* 216 */
13937/***/ (function(module, exports, __webpack_require__) {
13938
13939var arrayMap = __webpack_require__(82),
13940    baseIteratee = __webpack_require__(6),
13941    basePickBy = __webpack_require__(217),
13942    getAllKeysIn = __webpack_require__(220);
13943
13944/**
13945 * Creates an object composed of the `object` properties `predicate` returns
13946 * truthy for. The predicate is invoked with two arguments: (value, key).
13947 *
13948 * @static
13949 * @memberOf _
13950 * @since 4.0.0
13951 * @category Object
13952 * @param {Object} object The source object.
13953 * @param {Function} [predicate=_.identity] The function invoked per property.
13954 * @returns {Object} Returns the new object.
13955 * @example
13956 *
13957 * var object = { 'a': 1, 'b': '2', 'c': 3 };
13958 *
13959 * _.pickBy(object, _.isNumber);
13960 * // => { 'a': 1, 'c': 3 }
13961 */
13962function pickBy(object, predicate) {
13963  if (object == null) {
13964    return {};
13965  }
13966  var props = arrayMap(getAllKeysIn(object), function(prop) {
13967    return [prop];
13968  });
13969  predicate = baseIteratee(predicate);
13970  return basePickBy(object, props, function(value, path) {
13971    return predicate(value, path[0]);
13972  });
13973}
13974
13975module.exports = pickBy;
13976
13977
13978/***/ }),
13979/* 217 */
13980/***/ (function(module, exports, __webpack_require__) {
13981
13982var baseGet = __webpack_require__(44),
13983    baseSet = __webpack_require__(218),
13984    castPath = __webpack_require__(24);
13985
13986/**
13987 * The base implementation of  `_.pickBy` without support for iteratee shorthands.
13988 *
13989 * @private
13990 * @param {Object} object The source object.
13991 * @param {string[]} paths The property paths to pick.
13992 * @param {Function} predicate The function invoked per property.
13993 * @returns {Object} Returns the new object.
13994 */
13995function basePickBy(object, paths, predicate) {
13996  var index = -1,
13997      length = paths.length,
13998      result = {};
13999
14000  while (++index < length) {
14001    var path = paths[index],
14002        value = baseGet(object, path);
14003
14004    if (predicate(value, path)) {
14005      baseSet(result, castPath(path, object), value);
14006    }
14007  }
14008  return result;
14009}
14010
14011module.exports = basePickBy;
14012
14013
14014/***/ }),
14015/* 218 */
14016/***/ (function(module, exports, __webpack_require__) {
14017
14018var assignValue = __webpack_require__(219),
14019    castPath = __webpack_require__(24),
14020    isIndex = __webpack_require__(38),
14021    isObject = __webpack_require__(5),
14022    toKey = __webpack_require__(12);
14023
14024/**
14025 * The base implementation of `_.set`.
14026 *
14027 * @private
14028 * @param {Object} object The object to modify.
14029 * @param {Array|string} path The path of the property to set.
14030 * @param {*} value The value to set.
14031 * @param {Function} [customizer] The function to customize path creation.
14032 * @returns {Object} Returns `object`.
14033 */
14034function baseSet(object, path, value, customizer) {
14035  if (!isObject(object)) {
14036    return object;
14037  }
14038  path = castPath(path, object);
14039
14040  var index = -1,
14041      length = path.length,
14042      lastIndex = length - 1,
14043      nested = object;
14044
14045  while (nested != null && ++index < length) {
14046    var key = toKey(path[index]),
14047        newValue = value;
14048
14049    if (index != lastIndex) {
14050      var objValue = nested[key];
14051      newValue = customizer ? customizer(objValue, key, nested) : undefined;
14052      if (newValue === undefined) {
14053        newValue = isObject(objValue)
14054          ? objValue
14055          : (isIndex(path[index + 1]) ? [] : {});
14056      }
14057    }
14058    assignValue(nested, key, newValue);
14059    nested = nested[key];
14060  }
14061  return object;
14062}
14063
14064module.exports = baseSet;
14065
14066
14067/***/ }),
14068/* 219 */
14069/***/ (function(module, exports, __webpack_require__) {
14070
14071var baseAssignValue = __webpack_require__(94),
14072    eq = __webpack_require__(33);
14073
14074/** Used for built-in method references. */
14075var objectProto = Object.prototype;
14076
14077/** Used to check objects for own properties. */
14078var hasOwnProperty = objectProto.hasOwnProperty;
14079
14080/**
14081 * Assigns `value` to `key` of `object` if the existing value is not equivalent
14082 * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
14083 * for equality comparisons.
14084 *
14085 * @private
14086 * @param {Object} object The object to modify.
14087 * @param {string} key The key of the property to assign.
14088 * @param {*} value The value to assign.
14089 */
14090function assignValue(object, key, value) {
14091  var objValue = object[key];
14092  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||
14093      (value === undefined && !(key in object))) {
14094    baseAssignValue(object, key, value);
14095  }
14096}
14097
14098module.exports = assignValue;
14099
14100
14101/***/ }),
14102/* 220 */
14103/***/ (function(module, exports, __webpack_require__) {
14104
14105var baseGetAllKeys = __webpack_require__(71),
14106    getSymbolsIn = __webpack_require__(221),
14107    keysIn = __webpack_require__(223);
14108
14109/**
14110 * Creates an array of own and inherited enumerable property names and
14111 * symbols of `object`.
14112 *
14113 * @private
14114 * @param {Object} object The object to query.
14115 * @returns {Array} Returns the array of property names and symbols.
14116 */
14117function getAllKeysIn(object) {
14118  return baseGetAllKeys(object, keysIn, getSymbolsIn);
14119}
14120
14121module.exports = getAllKeysIn;
14122
14123
14124/***/ }),
14125/* 221 */
14126/***/ (function(module, exports, __webpack_require__) {
14127
14128var arrayPush = __webpack_require__(36),
14129    getPrototype = __webpack_require__(222),
14130    getSymbols = __webpack_require__(72),
14131    stubArray = __webpack_require__(73);
14132
14133/* Built-in method references for those with the same name as other `lodash` methods. */
14134var nativeGetSymbols = Object.getOwnPropertySymbols;
14135
14136/**
14137 * Creates an array of the own and inherited enumerable symbols of `object`.
14138 *
14139 * @private
14140 * @param {Object} object The object to query.
14141 * @returns {Array} Returns the array of symbols.
14142 */
14143var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {
14144  var result = [];
14145  while (object) {
vendor: 9,224 bytes, lines 14146-14516
14146    arrayPush(result, getSymbols(object));
14147    object = getPrototype(object);
14148  }
14149  return result;
14150};
14151
14152module.exports = getSymbolsIn;
14153
14154
14155/***/ }),
14156/* 222 */
14157/***/ (function(module, exports, __webpack_require__) {
14158
14159var overArg = __webpack_require__(76);
14160
14161/** Built-in value references. */
14162var getPrototype = overArg(Object.getPrototypeOf, Object);
14163
14164module.exports = getPrototype;
14165
14166
14167/***/ }),
14168/* 223 */
14169/***/ (function(module, exports, __webpack_require__) {
14170
14171var arrayLikeKeys = __webpack_require__(74),
14172    baseKeysIn = __webpack_require__(224),
14173    isArrayLike = __webpack_require__(10);
14174
14175/**
14176 * Creates an array of the own and inherited enumerable property names of `object`.
14177 *
14178 * **Note:** Non-object values are coerced to objects.
14179 *
14180 * @static
14181 * @memberOf _
14182 * @since 3.0.0
14183 * @category Object
14184 * @param {Object} object The object to query.
14185 * @returns {Array} Returns the array of property names.
14186 * @example
14187 *
14188 * function Foo() {
14189 *   this.a = 1;
14190 *   this.b = 2;
14191 * }
14192 *
14193 * Foo.prototype.c = 3;
14194 *
14195 * _.keysIn(new Foo);
14196 * // => ['a', 'b', 'c'] (iteration order is not guaranteed)
14197 */
14198function keysIn(object) {
14199  return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);
14200}
14201
14202module.exports = keysIn;
14203
14204
14205/***/ }),
14206/* 224 */
14207/***/ (function(module, exports, __webpack_require__) {
14208
14209var isObject = __webpack_require__(5),
14210    isPrototype = __webpack_require__(42),
14211    nativeKeysIn = __webpack_require__(225);
14212
14213/** Used for built-in method references. */
14214var objectProto = Object.prototype;
14215
14216/** Used to check objects for own properties. */
14217var hasOwnProperty = objectProto.hasOwnProperty;
14218
14219/**
14220 * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.
14221 *
14222 * @private
14223 * @param {Object} object The object to query.
14224 * @returns {Array} Returns the array of property names.
14225 */
14226function baseKeysIn(object) {
14227  if (!isObject(object)) {
14228    return nativeKeysIn(object);
14229  }
14230  var isProto = isPrototype(object),
14231      result = [];
14232
14233  for (var key in object) {
14234    if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {
14235      result.push(key);
14236    }
14237  }
14238  return result;
14239}
14240
14241module.exports = baseKeysIn;
14242
14243
14244/***/ }),
14245/* 225 */
14246/***/ (function(module, exports) {
14247
14248/**
14249 * This function is like
14250 * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
14251 * except that it includes inherited enumerable properties.
14252 *
14253 * @private
14254 * @param {Object} object The object to query.
14255 * @returns {Array} Returns the array of property names.
14256 */
14257function nativeKeysIn(object) {
14258  var result = [];
14259  if (object != null) {
14260    for (var key in Object(object)) {
14261      result.push(key);
14262    }
14263  }
14264  return result;
14265}
14266
14267module.exports = nativeKeysIn;
14268
14269
14270/***/ }),
14271/* 226 */
14272/***/ (function(module, exports, __webpack_require__) {
14273
14274var baseKeys = __webpack_require__(41),
14275    getTag = __webpack_require__(43),
14276    isArguments = __webpack_require__(22),
14277    isArray = __webpack_require__(1),
14278    isArrayLike = __webpack_require__(10),
14279    isBuffer = __webpack_require__(37),
14280    isPrototype = __webpack_require__(42),
14281    isTypedArray = __webpack_require__(39);
14282
14283/** `Object#toString` result references. */
14284var mapTag = '[object Map]',
14285    setTag = '[object Set]';
14286
14287/** Used for built-in method references. */
14288var objectProto = Object.prototype;
14289
14290/** Used to check objects for own properties. */
14291var hasOwnProperty = objectProto.hasOwnProperty;
14292
14293/**
14294 * Checks if `value` is an empty object, collection, map, or set.
14295 *
14296 * Objects are considered empty if they have no own enumerable string keyed
14297 * properties.
14298 *
14299 * Array-like values such as `arguments` objects, arrays, buffers, strings, or
14300 * jQuery-like collections are considered empty if they have a `length` of `0`.
14301 * Similarly, maps and sets are considered empty if they have a `size` of `0`.
14302 *
14303 * @static
14304 * @memberOf _
14305 * @since 0.1.0
14306 * @category Lang
14307 * @param {*} value The value to check.
14308 * @returns {boolean} Returns `true` if `value` is empty, else `false`.
14309 * @example
14310 *
14311 * _.isEmpty(null);
14312 * // => true
14313 *
14314 * _.isEmpty(true);
14315 * // => true
14316 *
14317 * _.isEmpty(1);
14318 * // => true
14319 *
14320 * _.isEmpty([1, 2, 3]);
14321 * // => false
14322 *
14323 * _.isEmpty({ 'a': 1 });
14324 * // => false
14325 */
14326function isEmpty(value) {
14327  if (value == null) {
14328    return true;
14329  }
14330  if (isArrayLike(value) &&
14331      (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||
14332        isBuffer(value) || isTypedArray(value) || isArguments(value))) {
14333    return !value.length;
14334  }
14335  var tag = getTag(value);
14336  if (tag == mapTag || tag == setTag) {
14337    return !value.size;
14338  }
14339  if (isPrototype(value)) {
14340    return !baseKeys(value).length;
14341  }
14342  for (var key in value) {
14343    if (hasOwnProperty.call(value, key)) {
14344      return false;
14345    }
14346  }
14347  return true;
14348}
14349
14350module.exports = isEmpty;
14351
14352
14353/***/ }),
14354/* 227 */
14355/***/ (function(module, exports, __webpack_require__) {
14356
14357var baseAssignValue = __webpack_require__(94),
14358    baseForOwn = __webpack_require__(91),
14359    baseIteratee = __webpack_require__(6);
14360
14361/**
14362 * Creates an object with the same keys as `object` and values generated
14363 * by running each own enumerable string keyed property of `object` thru
14364 * `iteratee`. The iteratee is invoked with three arguments:
14365 * (value, key, object).
14366 *
14367 * @static
14368 * @memberOf _
14369 * @since 2.4.0
14370 * @category Object
14371 * @param {Object} object The object to iterate over.
14372 * @param {Function} [iteratee=_.identity] The function invoked per iteration.
14373 * @returns {Object} Returns the new mapped object.
14374 * @see _.mapKeys
14375 * @example
14376 *
14377 * var users = {
14378 *   'fred':    { 'user': 'fred',    'age': 40 },
14379 *   'pebbles': { 'user': 'pebbles', 'age': 1 }
14380 * };
14381 *
14382 * _.mapValues(users, function(o) { return o.age; });
14383 * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
14384 *
14385 * // The `_.property` iteratee shorthand.
14386 * _.mapValues(users, 'age');
14387 * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
14388 */
14389function mapValues(object, iteratee) {
14390  var result = {};
14391  iteratee = baseIteratee(iteratee, 3);
14392
14393  baseForOwn(object, function(value, key, object) {
14394    baseAssignValue(result, key, iteratee(value, key, object));
14395  });
14396  return result;
14397}
14398
14399module.exports = mapValues;
14400
14401
14402/***/ }),
14403/* 228 */
14404/***/ (function(module, exports, __webpack_require__) {
14405
14406var arrayEach = __webpack_require__(229),
14407    baseEach = __webpack_require__(90),
14408    castFunction = __webpack_require__(230),
14409    isArray = __webpack_require__(1);
14410
14411/**
14412 * Iterates over elements of `collection` and invokes `iteratee` for each element.
14413 * The iteratee is invoked with three arguments: (value, index|key, collection).
14414 * Iteratee functions may exit iteration early by explicitly returning `false`.
14415 *
14416 * **Note:** As with other "Collections" methods, objects with a "length"
14417 * property are iterated like arrays. To avoid this behavior use `_.forIn`
14418 * or `_.forOwn` for object iteration.
14419 *
14420 * @static
14421 * @memberOf _
14422 * @since 0.1.0
14423 * @alias each
14424 * @category Collection
14425 * @param {Array|Object} collection The collection to iterate over.
14426 * @param {Function} [iteratee=_.identity] The function invoked per iteration.
14427 * @returns {Array|Object} Returns `collection`.
14428 * @see _.forEachRight
14429 * @example
14430 *
14431 * _.forEach([1, 2], function(value) {
14432 *   console.log(value);
14433 * });
14434 * // => Logs `1` then `2`.
14435 *
14436 * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {
14437 *   console.log(key);
14438 * });
14439 * // => Logs 'a' then 'b' (iteration order is not guaranteed).
14440 */
14441function forEach(collection, iteratee) {
14442  var func = isArray(collection) ? arrayEach : baseEach;
14443  return func(collection, castFunction(iteratee));
14444}
14445
14446module.exports = forEach;
14447
14448
14449/***/ }),
14450/* 229 */
14451/***/ (function(module, exports) {
14452
14453/**
14454 * A specialized version of `_.forEach` for arrays without support for
14455 * iteratee shorthands.
14456 *
14457 * @private
14458 * @param {Array} [array] The array to iterate over.
14459 * @param {Function} iteratee The function invoked per iteration.
14460 * @returns {Array} Returns `array`.
14461 */
14462function arrayEach(array, iteratee) {
14463  var index = -1,
14464      length = array == null ? 0 : array.length;
14465
14466  while (++index < length) {
14467    if (iteratee(array[index], index, array) === false) {
14468      break;
14469    }
14470  }
14471  return array;
14472}
14473
14474module.exports = arrayEach;
14475
14476
14477/***/ }),
14478/* 230 */
14479/***/ (function(module, exports, __webpack_require__) {
14480
14481var identity = __webpack_require__(46);
14482
14483/**
14484 * Casts `value` to `identity` if it's not a function.
14485 *
14486 * @private
14487 * @param {*} value The value to inspect.
14488 * @returns {Function} Returns cast function.
14489 */
14490function castFunction(value) {
14491  return typeof value == 'function' ? value : identity;
14492}
14493
14494module.exports = castFunction;
14495
14496
14497/***/ }),
14498/* 231 */
14499/***/ (function(module, exports, __webpack_require__) {
14500
14501var baseClamp = __webpack_require__(96),
14502    baseToString = __webpack_require__(81),
14503    toInteger = __webpack_require__(47),
14504    toString = __webpack_require__(80);
14505
14506/**
14507 * Checks if `string` ends with the given target string.
14508 *
14509 * @static
14510 * @memberOf _
14511 * @since 3.0.0
14512 * @category String
14513 * @param {string} [string=''] The string to inspect.
14514 * @param {string} [target] The string to search for.
14515 * @param {number} [position=string.length] The position to search up to.
14516 * @returns {boolean}
14516 Returns `true` if `string` ends with `target`,
14517 *  else `false`.
14518 * @example
14519 *
14520 * _.endsWith('abc', 'c');
14521 * // => true
14522 *
14523 * _.endsWith('abc', 'b');
14524 * // => false
14525 *
14526 * _.endsWith('abc', 'b', 2);
14527 * // => true
14528 */
14529function endsWith(string, target, position) {
14530  string = toString(string);
14531  target = baseToString(target);
14532
14533  var length = string.length;
14534  position = position === undefined
14535    ? length
14536    : baseClamp(toInteger(position), 0, length);
14537
14538  var end = position;
14539  position -= target.length;
14540  return position >= 0 && string.slice(position, end) == target;
14541}
14542
14543module.exports = endsWith;
14544
14545
14546/***/ }),
14547/* 232 */
14548/***/ (function(module, exports, __webpack_require__) {
14549
14550var debounce = __webpack_require__(233),
14551    isObject = __webpack_require__(5);
14552
14553/** Error message constants. */
14554var FUNC_ERROR_TEXT = 'Expected a function';
14555
14556/**
14557 * Creates a throttled function that only invokes `func` at most once per
14558 * every `wait` milliseconds. The throttled function comes with a `cancel`
14559 * method to cancel delayed `func` invocations and a `flush` method to
14560 * immediately invoke them. Provide `options` to indicate whether `func`
14561 * should be invoked on the leading and/or trailing edge of the `wait`
14562 * timeout. The `func` is invoked with the last arguments provided to the
14563 * throttled function. Subsequent calls to the throttled function return the
14564 * result of the last `func` invocation.
14565 *
14566 * **Note:** If `leading` and `trailing` options are `true`, `func` is
14567 * invoked on the trailing edge of the timeout only if the throttled function
14568 * is invoked more than once during the `wait` timeout.
14569 *
14570 * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
14571 * until to the next tick, similar to `setTimeout` with a timeout of `0`.
14572 *
14573 * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
14574 * for details over the differences between `_.throttle` and `_.debounce`.
14575 *
14576 * @static
14577 * @memberOf _
14578 * @since 0.1.0
14579 * @category Function
14580 * @param {Function} func The function to throttle.
14581 * @param {number} [wait=0] The number of milliseconds to throttle invocations to.
14582 * @param {Object} [options={}] The options object.
14583 * @param {boolean} [options.leading=true]
14584 *  Specify invoking on the leading edge of the timeout.
14585 * @param {boolean} [options.trailing=true]
14586 *  Specify invoking on the trailing edge of the timeout.
14587 * @returns {Function} Returns the new throttled function.
14588 * @example
14589 *
14590 * // Avoid excessively updating the position while scrolling.
14591 * jQuery(window).on('scroll', _.throttle(updatePosition, 100));
14592 *
14593 * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.
14594 * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });
14595 * jQuery(element).on('click', throttled);
14596 *
14597 * // Cancel the trailing throttled invocation.
14598 * jQuery(window).on('popstate', throttled.cancel);
14599 */
14600function throttle(func, wait, options) {
14601  var leading = true,
14602      trailing = true;
14603
14604  if (typeof func != 'function') {
14605    throw new TypeError(FUNC_ERROR_TEXT);
14606  }
14607  if (isObject(options)) {
14608    leading = 'leading' in options ? !!options.leading : leading;
14609    trailing = 'trailing' in options ? !!options.trailing : trailing;
14610  }
14611  return debounce(func, wait, {
14612    'leading': leading,
14613    'maxWait': wait,
14614    'trailing': trailing
14615  });
14616}
14617
14618module.exports = throttle;
14619
14620
14621/***/ }),
14622/* 233 */
14623/***/ (function(module, exports, __webpack_require__) {
14624
14625var isObject = __webpack_require__(5),
14626    now = __webpack_require__(234),
14627    toNumber = __webpack_require__(48);
14628
14629/** Error message constants. */
14630var FUNC_ERROR_TEXT = 'Expected a function';
14631
14632/* Built-in method references for those with the same name as other `lodash` methods. */
14633var nativeMax = Math.max,
14634    nativeMin = Math.min;
14635
14636/**
14637 * Creates a debounced function that delays invoking `func` until after `wait`
14638 * milliseconds have elapsed since the last time the debounced function was
14639 * invoked. The debounced function comes with a `cancel` method to cancel
14640 * delayed `func` invocations and a `flush` method to immediately invoke them.
14641 * Provide `options` to indicate whether `func` should be invoked on the
14642 * leading and/or trailing edge of the `wait` timeout. The `func` is invoked
14643 * with the last arguments provided to the debounced function. Subsequent
14644 * calls to the debounced function return the result of the last `func`
14645 * invocation.
14646 *
14647 * **Note:** If `leading` and `trailing` options are `true`, `func` is
14648 * invoked on the trailing edge of the timeout only if the debounced function
14649 * is invoked more than once during the `wait` timeout.
14650 *
14651 * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
14652 * until to the next tick, similar to `setTimeout` with a timeout of `0`.
14653 *
14654 * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
14655 * for details over the differences between `_.debounce` and `_.throttle`.
14656 *
14657 * @static
14658 * @memberOf _
14659 * @since 0.1.0
14660 * @category Function
14661 * @param {Function} func The function to debounce.
14662 * @param {number} [wait=0] The number of milliseconds to delay.
14663 * @param {Object} [options={}] The options object.
14664 * @param {boolean} [options.leading=false]
14665 *  Specify invoking on the leading edge of the timeout.
14666 * @param {number} [options.maxWait]
14667 *  The maximum time `func` is allowed to be delayed before it's invoked.
14668 * @param {boolean} [options.trailing=true]
14669 *  Specify invoking on the trailing edge of the timeout.
14670 * @returns {Function} Returns the new debounced function.
14671 * @example
14672 *
14673 * // Avoid costly calculations while the window size is in flux.
14674 * jQuery(window).on('resize', _.debounce(calculateLayout, 150));
14675 *
14676 * // Invoke `sendMail` when clicked, debouncing subsequent calls.
14677 * jQuery(element).on('click', _.debounce(sendMail, 300, {
14678 *   'leading': true,
14679 *   'trailing': false
14680 * }));
14681 *
14682 * // Ensure `batchLog` is invoked once after 1 second of debounced calls.
14683 * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });
14684 * var source = new EventSource('/stream');
14685 * jQuery(source).on('message', debounced);
14686 *
14687 * // Cancel the trailing debounced invocation.
14688 * jQuery(window).on('popstate', debounced.cancel);
14689 */
14690function debounce(func, wait, options) {
14691  var lastArgs,
14692      lastThis,
14693      maxWait,
14694      result,
14695      timerId,
14696      lastCallTime,
14697      lastInvokeTime = 0,
14698      leading = false,
14699      maxing = false,
14700      trailing = true;
14701
14702  if (typeof func != 'function') {
14703    throw new TypeError(FUNC_ERROR_TEXT);
14704  }
14705  wait = toNumber(wait) || 0;
14706  if (isObject(options)) {
14707    leading = !!options.leading;
14708    maxing = 'maxWait' in options;
14709    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;
14710    trailing = 'trailing' in options ? !!options.trailing : trailing;
14711  }
14712
14713  function invokeFunc(time) {
14714    var args = lastArgs,
14715        thisArg = lastThis;
14716
14717    lastArgs = lastThis = undefined;
14718    lastInvokeTime = time;
14719    result = func.apply(thisArg, args);
14720    return result;
14721  }
14722
14723  function leadingEdge(time) {
14724    // Reset any `maxWait` timer.
14725    lastInvokeTime = time;
14726    // Start the timer for the trailing edge.
14727    timerId = setTimeout(timerExpired, wait);
14728    // Invoke the leading edge.
14729    return leading ? invokeFunc(time) : result;
14730  }
14731
14732  function remainingWait(time) {
14733    var timeSinceLastCall = time - lastCallTime,
14734        timeSinceLastInvoke = time - lastInvokeTime,
14735        timeWaiting = wait - timeSinceLastCall;
14736
14737    return maxing
14738      ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)
14739      : timeWaiting;
14740  }
14741
14742  function shouldInvoke(time) {
14743    var timeSinceLastCall = time - lastCallTime,
14744        timeSinceLastInvoke = time - lastInvokeTime;
14745
14746    // Either this is the first call, activity has stopped and we're at the
14747    // trailing edge, the system time has gone backwards and we're treating
14748    // it as the trailing edge, or we've hit the `maxWait` limit.
14749    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||
14750      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));
14751  }
14752
14753  function timerExpired() {
14754    var time = now();
14755    if (shouldInvoke(time)) {
14756      return trailingEdge(time);
14757    }
14758    // Restart the timer.
14759    timerId = setTimeout(timerExpired, remainingWait(time));
14760  }
14761
14762  function trailingEdge(time) {
14763    timerId = undefined;
14764
14765    // Only invoke if we have `lastArgs` which means `func` has been
14766    // debounced at least once.
14767    if (trailing && lastArgs) {
14768      return invokeFunc(time);
14769    }
14770    lastArgs = lastThis = undefined;
14771    return result;
14772  }
14773
14774  function cancel() {
14775    if (timerId !== undefined) {
14776      clearTimeout(timerId);
14777    }
14778    lastInvokeTime = 0;
14779    lastArgs = lastCallTime = lastThis = timerId = undefined;
14780  }
14781
14782  function flush() {
14783    return timerId === undefined ? result : trailingEdge(now());
14784  }
14785
14786  function debounced() {
14787    var time = now(),
14788        isInvoking = shouldInvoke(time);
14789
14790    lastArgs = arguments;
14791    lastThis = this;
14792    lastCallTime = time;
14793
14794    if (isInvoking) {
14795      if (timerId === undefined) {
14796        return leadingEdge(lastCallTime);
14797      }
14798      if (maxing) {
14799        // Handle invocations in a tight loop.
14800        timerId = setTimeout(timerExpired, wait);
14801        return invokeFunc(lastCallTime);
14802      }
14803    }
14804    if (timerId === undefined) {
14805      timerId = setTimeout(timerExpired, wait);
14806    }
14807    return result;
14808  }
14809  debounced.cancel = cancel;
14810  debounced.flush = flush;
14811  return debounced;
14812}
14813
14814module.exports = debounce;
14815
14816
14817/***/ }),
14818/* 234 */
14819/***/ (function(module, exports, __webpack_require__) {
14820
14821var root = __webpack_require__(4);
14822
14823/**
14824 * Gets the timestamp of the number of milliseconds that have elapsed since
14825 * the Unix epoch (1 January 1970 00:00:00 UTC).
14826 *
14827 * @static
14828 * @memberOf _
14829 * @since 2.4.0
14830 * @category Date
14831 * @returns {number} Returns the timestamp.
14832 * @example
14833 *
14834 * _.defer(function(stamp) {
14835 *   console.log(_.now() - stamp);
14836 * }, _.now());
14837 * // => Logs the number of milliseconds it took for the deferred invocation.
14838 */
14839var now = function() {
14840  return root.Date.now();
14841};
14842
14843module.exports = now;
14844
14845
14846/***/ }),
14847/* 235 */
14848/***/ (function(module, exports, __webpack_require__) {
14849
14850"use strict";
14851
14852
14853var _interopRequireDefault = __webpack_require__(0);
14854
14855var _typeof2 = _interopRequireDefault(__webpack_require__(15));
14856
14857Object.defineProperty(exports, "__esModule", {
14858  value: true
14859});
14860exports.setStyle = setStyle;
14861exports.getStyle = getStyle;
14862exports.getProperty = getProperty;
14863exports.matchSelector = matchSelector;
14864exports.getQuerySelector = getQuerySelector;
14865exports.getValidDocument = getValidDocument;
14866exports.queryDocument = queryDocument;
14867exports.elementContains = elementContains;
14868exports.isSiblingNode = isSiblingNode;
14869exports.getChildElements = getChildElements;
14870exports.getSiblingElements = getSiblingElements;
14871exports.getRefType = getRefType;
14872exports.getClosestElement = void 0;
14873
14874var _shared = __webpack_require__(3);
14875/* eslint-env browser */
14876
14877
14878var ELEMENT_MATCHES = _shared.IX2BrowserSupport.ELEMENT_MATCHES;
14879var _shared$IX2EngineCons = _shared.IX2EngineConstants,
14880    IX2_ID_DELIMITER = _shared$IX2EngineCons.IX2_ID_DELIMITER,
14881    HTML_ELEMENT = _shared$IX2EngineCons.HTML_ELEMENT,
14882    PLAIN_OBJECT = _shared$IX2EngineCons.PLAIN_OBJECT,
14883    WF_PAGE = _shared$IX2EngineCons.WF_PAGE;
14884
14885function setStyle(element, prop, value) {
14886  element.style[prop] = value;
14887}
14888
14889function getStyle(element, prop) {
14890  return element.style[prop];
14891}
14892
14893function getProperty(element, prop) {
14894  return element[prop];
14895}
14896
14897function matchSelector(selector) {
14898  return function (element) {
14899    return element[ELEMENT_MATCHES](selector);
14900  };
14901}
14902
14903function getQuerySelector(_ref) {
14904  var id = _ref.id,
14905      selector = _ref.selector;
14906
14907  if (id) {
14908    var nodeId = id;
14909
14910    if (id.indexOf(IX2_ID_DELIMITER) !== -1) {
14911      var pair = id.split(IX2_ID_DELIMITER);
14912      var pageId = pair[0];
14913      nodeId = pair[1]; // Short circuit query if we're on the wrong page
14914
14915      if (pageId !== document.documentElement.getAttribute(WF_PAGE)) {
14916        return null;
14917      }
14918    }
14919
14920    return "[data-w-id^=\"".concat(nodeId, "\"]");
14921  }
14922
14923  return selector;
14924}
14925
14926function getValidDocument(pageId) {
14927  if (pageId == null || pageId === document.documentElement.getAttribute(WF_PAGE)) {
14928    return document;
14929  }
14930
14931  return null;
14932}
14933
14934function queryDocument(baseSelector, descendantSelector) {
14935  return Array.prototype.slice.call(document.querySelectorAll(descendantSelector ? baseSelector + ' ' + descendantSelector : baseSelector));
14936}
14937
14938function elementContains(parent, child) {
14939  return parent.contains(child);
14940}
14941
14942function isSiblingNode(a, b) {
14943  return a !== b && a.parentNode === b.parentNode;
14944}
14945
14946function getChildElements() {
14947  var sourceElements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
14948  var elements = [];
14949
14950  for (var i = 0, length = sourceElements.length; i < length; i++) {
14951    var children = sourceElements[i].children;
14952    var childCount = children.length;
14953
14954    if (!childCount) {
14955      continue;
14956    }
14957
14958    for (var j = 0; j < childCount; j++) {
14959      elements.push(children[j]);
14960    }
14961  }
14962
14963  return elements;
14964}
14965
14966function getSiblingElements() {
14967  var sourceElements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
14968  var elements = [];
14969  var parentCache = [];
14970
14971  for (var i = 0, length = sourceElements.length; i < length; i++) {
14972    var parentNode = sourceElements[i].parentNode;
14973
14974    if (!parentNode || !parentNode.children || !parentNode.children.length) {
14975      continue;
14976    }
14977
14978    if (parentCache.indexOf(parentNode) !== -1) {
14979      continue;
14980    }
14981
14982    parentCache.push(parentNode);
14983    var el = parentNode.firstElementChild;
14984
14985    while (el != null) {
14986      if (sourceElements.indexOf(el) === -1) {
14987        elements.push(el);
14988      }
14989
14990      el = el.nextElementSibling;
14991    }
14992  }
14993
14994  return elements;
14995} // eslint complains about prettier's formatting
14996
14997/* eslint-disable indent */
14998
14999
15000var getClosestElement = Element.prototype.closest ? function (element, selector) {
15001  if (!document.documentElement.contains(element)) {
15002    return null;
15003  }
15004
15005  return element.closest(selector);
15006} : function (element, selector) {
15007  if (!document.documentElement.contains(element)) {
15008    return null;
15009  }
15010
15011  var el = element;
15012
15013  do {
15014    if (el[ELEMENT_MATCHES] && el[ELEMENT_MATCHES](selector)) {
15015      return el;
15016    }
15017
15018    el = el.parentNode;
15019  } while (el != null);
15020
15021  return null;
15022};
15023/* eslint-enable indent */
15024
15025exports.getClosestElement = getClosestElement;
15026
15027function getRefType(ref) {
15028  if (ref != null && (0, _typeof2["default"])(ref) == 'object') {
15029    return ref instanceof Element ? HTML_ELEMENT : PLAIN_OBJECT;
15030  }
15031
15032  return null;
15033}
15034
15035/***/ }),
15036/* 236 */
15037/***/ (function(module, exports, __webpack_require__) {
15038
15039"use strict";
15040
15041
15042var _interopRequireDefault2 = __webpack_require__(0);
15043
15044var _defineProperty2 = _interopRequireDefault2(__webpack_require__(14));
15045
15046var _typeof2 = _interopRequireDefault2(__webpack_require__(15));
15047
15048var _default2;
15049
15050var _interopRequireDefault = __webpack_require__(0);
15051
15052Object.defineProperty(exports, "__esModule", {
15053  value: true
15054});
15055exports["default"] = void 0;
15056
15057var _objectSpread2 = _interopRequireDefault(__webpack_require__(26));
15058
15059var _flow = _interopRequireDefault(__webpack_require__(237));
15060
15061var _get = _interopRequireDefault(__webpack_require__(23));
15062
15063var _clamp = _interopRequireDefault(__webpack_require__(256));
15064
15065var _IX2VanillaEngine = __webpack_require__(93);
15066
15067var _IX2EngineActions = __webpack_require__(51);
15068
15069var _shared = __webpack_require__(3);
15070/* eslint-env browser */
15071
15072
15073var _shared$IX2EngineEven = _shared.IX2EngineEventTypes,
15074    MOUSE_CLICK = _shared$IX2EngineEven.MOUSE_CLICK,
15075    MOUSE_SECOND_CLICK = _shared$IX2EngineEven.MOUSE_SECOND_CLICK,
15076    MOUSE_DOWN = _shared$IX2EngineEven.MOUSE_DOWN,
15077    MOUSE_UP = _shared$IX2EngineEven.MOUSE_UP,
15078    MOUSE_OVER = _shared$IX2EngineEven.MOUSE_OVER,
15079    MOUSE_OUT = _shared$IX2EngineEven.MOUSE_OUT,
15080    DROPDOWN_CLOSE = _shared$IX2EngineEven.DROPDOWN_CLOSE,
15081    DROPDOWN_OPEN = _shared$IX2EngineEven.DROPDOWN_OPEN,
15082    SLIDER_ACTIVE = _shared$IX2EngineEven.SLIDER_ACTIVE,
15083    SLIDER_INACTIVE = _shared$IX2EngineEven.SLIDER_INACTIVE,
15084    TAB_ACTIVE = _shared$IX2EngineEven.TAB_ACTIVE,
15085    TAB_INACTIVE = _shared$IX2EngineEven.TAB_INACTIVE,
15086    NAVBAR_CLOSE = _shared$IX2EngineEven.NAVBAR_CLOSE,
15087    NAVBAR_OPEN = _shared$IX2EngineEven.NAVBAR_OPEN,
15088    MOUSE_MOVE = _shared$IX2EngineEven.MOUSE_MOVE,
15089    PAGE_SCROLL_DOWN = _shared$IX2EngineEven.PAGE_SCROLL_DOWN,
15090    SCROLL_INTO_VIEW = _shared$IX2EngineEven.SCROLL_INTO_VIEW,
15091    COMPONENT_ACTIVE = _shared$IX2EngineEven.COMPONENT_ACTIVE,
15092    COMPONENT_INACTIVE = _shared$IX2EngineEven.COMPONENT_INACTIVE,
15093    SCROLL_OUT_OF_VIEW = _shared$IX2EngineEven.SCROLL_OUT_OF_VIEW,
15094    PAGE_SCROLL_UP = _shared$IX2EngineEven.PAGE_SCROLL_UP,
15095    SCROLLING_IN_VIEW = _shared$IX2EngineEven.SCROLLING_IN_VIEW,
15096    PAGE_FINISH = _shared$IX2EngineEven.PAGE_FINISH,
15097    ECOMMERCE_CART_CLOSE = _shared$IX2EngineEven.ECOMMERCE_CART_CLOSE,
15098    ECOMMERCE_CART_OPEN = _shared$IX2EngineEven.ECOMMERCE_CART_OPEN,
15099    PAGE_START = _shared$IX2EngineEven.PAGE_START,
15100    PAGE_SCROLL = _shared$IX2EngineEven.PAGE_SCROLL,
15101    ELEMENT = _shared$IX2EngineEven.ELEMENT,
15102    VIEWPORT = _shared$IX2EngineEven.VIEWPORT,
15103    PAGE = _shared$IX2EngineEven.PAGE;
15104var COLON_DELIMITER = _shared.IX2EngineConstants.COLON_DELIMITER;
15105var getNamespacedParameterId = _shared.IX2VanillaUtils.getNamespacedParameterId;
15106
15107var composableFilter = function composableFilter(predicate) {
15108  return function (options) {
15109    if ((0, _typeof2["default"])(options) === 'object' && predicate(options)) {
15110      return true;
15111    }
15112
15113    return options;
15114  };
15115};
15116
15117var isElement = composableFilter(function (_ref) {
15118  var element = _ref.element,
15119      nativeEvent = _ref.nativeEvent;
15120  return element === nativeEvent.target;
15121});
15122var containsElement = composableFilter(function (_ref2) {
15123  var element = _ref2.element,
15124      nativeEvent = _ref2.nativeEvent;
15125  return element.contains(nativeEvent.target);
15126});
15127var isOrContainsElement = (0, _flow["default"])([isElement, containsElement]);
15128
15129var getAutoStopEvent = function getAutoStopEvent(store, autoStopEventId) {
15130  if (autoStopEventId) {
15131    var _store$getState = store.getState(),
15132        ixData = _store$getState.ixData;
15133
15134    var events = ixData.events;
15135    var eventToStop = events[autoStopEventId];
15136
15137    if (eventToStop && !AUTO_STOP_DISABLED_EVENTS[eventToStop.eventTypeId]) {
15138      return eventToStop;
15139    }
15140  }
15141
15142  return null;
15143};
15144
15145var hasAutoStopEvent = function hasAutoStopEvent(_ref3) {
15146  var store = _ref3.store,
15147      event = _ref3.event;
15148  var eventAction = event.action;
15149  var autoStopEventId = eventAction.config.autoStopEventId;
15150  return Boolean(getAutoStopEvent(store, autoStopEventId));
15151};
15152
15153var actionGroupCreator = function actionGroupCreator(_ref4, state) {
15154  var store = _ref4.store,
15155      event = _ref4.event,
15156      element = _ref4.element,
15157      eventStateKey = _ref4.eventStateKey;
15158  var eventAction = event.action,
15159      eventId = event.id;
15160  var _eventAction$config = eventAction.config,
15161      actionListId = _eventAction$config.actionListId,
15162      autoStopEventId = _eventAction$config.autoStopEventId;
15163  var eventToStop = getAutoStopEvent(store, autoStopEventId);
15164
15165  if (eventToStop) {
15166    (0, _IX2VanillaEngine.stopActionGroup)({
15167      store: store,
15168      eventId: autoStopEventId,
15169      eventTarget: element,
15170      eventStateKey: autoStopEventId + COLON_DELIMITER + eventStateKey.split(COLON_DELIMITER)[1],
15171      actionListId: (0, _get["default"])(eventToStop, 'action.config.actionListId')
15172    });
15173  }
15174
15175  (0, _IX2VanillaEngine.stopActionGroup)({
15176    store: store,
15177    eventId: eventId,
15178    eventTarget: element,
15179    eventStateKey: eventStateKey,
15180    actionListId: actionListId
15181  });
15182  (0, _IX2VanillaEngine.startActionGroup)({
15183    store: store,
15184    eventId: eventId,
15185    eventTarget: element,
15186    eventStateKey: eventStateKey,
15187    actionListId: actionListId
15188  });
15189  return state;
15190};
15191
15192var withFilter = function withFilter(filter, handler) {
15193  return function (options, state) {
15194    return filter(options, state) === true ? handler(options, state) : state;
15195  };
15196};
15197
15198var baseActionGroupOptions = {
15199  handler: withFilter(isOrContainsElement, actionGroupCreator)
15200};
15201var baseActivityActionGroupOptions = (0, _objectSpread2["default"])({}, baseActionGroupOptions, {
15202  types: [COMPONENT_ACTIVE, COMPONENT_INACTIVE].join(' ')
15203});
15204var CONTINUOUS_SCROLL_EVENT_TYPES = [{
15205  target: window,
15206  types: 'resize orientationchange',
15207  throttle: true
15208}, {
15209  target: document,
15210  types: 'scroll wheel readystatechange IX2_PAGE_UPDATE',
15211  throttle: true
15212}];
15213var TRIGGERED_SCROLL_EVENT_TYPES = [{
15214  target: document,
15215  types: 'scroll wheel',
15216  throttle: true
15217}];
15218var MOUSE_OVER_OUT_TYPES = 'mouseover mouseout';
15219var baseScrollActionGroupOptions = {
15220  types: TRIGGERED_SCROLL_EVENT_TYPES
15221};
15222var AUTO_STOP_DISABLED_EVENTS = {
15223  PAGE_START: PAGE_START,
15224  PAGE_FINISH: PAGE_FINISH
15225};
15226
15227var getDocumentState = function () {
15228  var supportOffset = window.pageXOffset !== undefined;
15229  var isCSS1Compat = document.compatMode === 'CSS1Compat';
15230  var rootElement = isCSS1Compat ? document.documentElement : document.body;
15231  return function () {
15232    return {
15233      scrollLeft: supportOffset ? window.pageXOffset : rootElement.scrollLeft,
15234      scrollTop: supportOffset ? window.pageYOffset : rootElement.scrollTop,
15235      // required to remove elasticity in Safari scrolling.
15236      stiffScrollTop: (0, _clamp["default"])(supportOffset ? window.pageYOffset : rootElement.scrollTop, 0, rootElement.scrollHeight - window.innerHeight),
15237      scrollWidth: rootElement.scrollWidth,
15238      scrollHeight: rootElement.scrollHeight,
15239      clientWidth: rootElement.clientWidth,
15240      clientHeight: rootElement.clientHeight,
15241      innerWidth: window.innerWidth,
15242      innerHeight: window.innerHeight
15243    };
15244  };
15245}();
15246
15247var areBoxesIntersecting = function areBoxesIntersecting(a, b) {
15248  return !(a.left > b.right || a.right < b.left || a.top > b.bottom || a.bottom < b.top);
15249};
15250
15251var isElementHovered = function isElementHovered(_ref5) {
15252  var element = _ref5.element,
15253      nativeEvent = _ref5.nativeEvent;
15254  var type = nativeEvent.type,
15255      target = nativeEvent.target,
15256      relatedTarget = nativeEvent.relatedTarget;
15257  var containsTarget = element.contains(target);
15258
15259  if (type === 'mouseover' && containsTarget) {
15260    return true;
15261  }
15262
15263  var containsRelated = element.contains(relatedTarget);
15264
15265  if (type === 'mouseout' && containsTarget && containsRelated) {
15266    return true;
15267  }
15268
15269  return false;
15270};
15271
15272var isElementVisible = function isElementVisible(options) {
15273  var element = options.element,
15274      config = options.event.config;
15275
15276  var _getDocumentState = getDocumentState(),
15277      clientWidth = _getDocumentState.clientWidth,
15278      clientHeight = _getDocumentState.clientHeight;
15279
15280  var scrollOffsetValue = config.scrollOffsetValue;
15281  var scrollOffsetUnit = config.scrollOffsetUnit;
15282  var isPX = scrollOffsetUnit === 'PX';
15283  var offsetPadding = isPX ? scrollOffsetValue : clientHeight * (scrollOffsetValue || 0) / 100;
15284  return areBoxesIntersecting(element.getBoundingClientRect(), {
15285    left: 0,
15286    top: offsetPadding,
15287    right: clientWidth,
15288    bottom: clientHeight - offsetPadding
15289  });
15290};
15291
15292var whenComponentActiveChange = function whenComponentActiveChange(handler) {
15293  return function (options, oldState) {
15294    var type = options.nativeEvent.type; // prettier-ignore
15295
15296    var isActive = [COMPONENT_ACTIVE, COMPONENT_INACTIVE].indexOf(type) !== -1 ? type === COMPONENT_ACTIVE : oldState.isActive;
15297    var newState = (0, _objectSpread2["default"])({}, oldState, {
15298      isActive: isActive
15299    });
15300
15301    if (!oldState || newState.isActive !== oldState.isActive) {
15302      return handler(options, newState) || newState;
15303    }
15304
15305    return newState;
15306  };
15307};
15308
15309var whenElementHoverChange = function whenElementHoverChange(handler) {
15310  return function (options, oldState) {
15311    var newState = {
15312      elementHovered: isElementHovered(options)
15313    };
15314
15315    if (oldState ? newState.elementHovered !== oldState.elementHovered : newState.elementHovered) {
15316      return handler(options, newState) || newState;
15317    }
15318
15319    return newState;
15320  };
15321};
15322
15323var whenElementVisibiltyChange = function whenElementVisibiltyChange(handler) {
15324  return function (options, oldState) {
15325    var newState = (0, _objectSpread2["default"])({}, oldState, {
15326      elementVisible: isElementVisible(options)
15327    });
15328
15329    if (oldState ? newState.elementVisible !== oldState.elementVisible : newState.elementVisible) {
15330      return handler(options, newState) || newState;
15331    }
15332
15333    return newState;
15334  };
15335};
15336
15337var whenScrollDirectionChange = function whenScrollDirectionChange(handler) {
15338  return function (options) {
15339    var oldState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
15340
15341    var _getDocumentState2 = getDocumentState(),
15342        scrollTop = _getDocumentState2.stiffScrollTop,
15343        scrollHeight = _getDocumentState2.scrollHeight,
15344        innerHeight = _getDocumentState2.innerHeight;
15345
15346    var _options$event = options.event,
15347        config = _options$event.config,
15348        eventTypeId = _options$event.eventTypeId;
15349    var scrollOffsetValue = config.scrollOffsetValue,
15350        scrollOffsetUnit = config.scrollOffsetUnit;
15351    var isPX = scrollOffsetUnit === 'PX';
15352    var scrollHeightBounds = scrollHeight - innerHeight; // percent top since innerHeight may change for mobile devices which also changes the scrollTop value.
15353
15354    var percentTop = Number((scrollTop / scrollHeightBounds).toFixed(2)); // no state change
15355
15356    if (oldState && oldState.percentTop === percentTop) {
15357      return oldState;
15358    }
15359
15360    var scrollTopPadding = (isPX ? scrollOffsetValue : innerHeight * (scrollOffsetValue || 0) / 100) / scrollHeightBounds;
15361    var scrollingDown;
15362    var scrollDirectionChanged;
15363    var anchorTop = 0;
15364
15365    if (oldState) {
15366      scrollingDown = percentTop > oldState.percentTop;
15367      scrollDirectionChanged = oldState.scrollingDown !== scrollingDown;
15368      anchorTop = scrollDirectionChanged ? percentTop : oldState.anchorTop;
15369    }
15370
15371    var inBounds = eventTypeId === PAGE_SCROLL_DOWN ? percentTop >= anchorTop + scrollTopPadding : percentTop <= anchorTop - scrollTopPadding;
15372    var newState = (0, _objectSpread2["default"])({}, oldState, {
15373      percentTop: percentTop,
15374      inBounds: inBounds,
15375      anchorTop: anchorTop,
15376      scrollingDown: scrollingDown
15377    });
15378
15379    if (oldState && inBounds && (scrollDirectionChanged || newState.inBounds !== oldState.inBounds)) {
15380      return handler(options, newState) || newState;
15381    }
15382
15383    return newState;
15384  };
15385};
15386
15387var pointIntersects = function pointIntersects(point, rect) {
15388  return point.left > rect.left && point.left < rect.right && point.top > rect.top && point.top < rect.bottom;
15389};
15390
15391var whenPageLoadFinish = function whenPageLoadFinish(handler) {
15392  return function (options, oldState) {
15393    var newState = {
15394      finished: document.readyState === 'complete'
15395    };
15396
15397    if (newState.finished && !(oldState && oldState.finshed)) {
15398      handler(options);
15399    }
15400
15401    return newState;
15402  };
15403};
15404
15405var whenPageLoadStart = function whenPageLoadStart(handler) {
15406  return function (options, oldState) {
15407    var newState = {
15408      started: true
15409    };
15410
15411    if (!oldState) {
15412      handler(options);
15413    }
15414
15415    return newState;
15416  };
15417};
15418
15419var whenClickCountChange = function whenClickCountChange(handler) {
15420  return function (options) {
15421    var oldState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
15422      clickCount: 0
15423    };
15424    var newState = {
15425      clickCount: oldState.clickCount % 2 + 1
15426    };
15427
15428    if (newState.clickCount !== oldState.clickCount) {
15429      return handler(options, newState) || newState;
15430    }
15431
15432    return newState;
15433  };
15434};
15435
15436var getComponentActiveOptions = function getComponentActiveOptions() {
15437  var allowNestedChildrenEvents = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
15438  return (0, _objectSpread2["default"])({}, baseActivityActionGroupOptions, {
15439    handler: withFilter(allowNestedChildrenEvents ? isOrContainsElement : isElement, whenComponentActiveChange(function (options, state) {
15440      return state.isActive ? baseActionGroupOptions.handler(options, state) : state;
15441    }))
15442  });
15443};
15444
15445var getComponentInactiveOptions = function getComponentInactiveOptions() {
15446  var allowNestedChildrenEvents = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
15447  return (0, _objectSpread2["default"])({}, baseActivityActionGroupOptions, {
15448    handler: withFilter(allowNestedChildrenEvents ? isOrContainsElement : isElement, whenComponentActiveChange(function (options, state) {
15449      return !state.isActive ? baseActionGroupOptions.handler(options, state) : state;
15450    }))
15451  });
15452};
15453
15454var scrollIntoOutOfViewOptions = (0, _objectSpread2["default"])({}, baseScrollActionGroupOptions, {
15455  handler: whenElementVisibiltyChange(function (options, state) {
15456    var elementVisible = state.elementVisible;
15457    var event = options.event,
15458        store = options.store;
15459
15460    var _store$getState2 = store.getState(),
15461        ixData = _store$getState2.ixData;
15462
15463    var events = ixData.events; // trigger the handler only once if only one of SCROLL_INTO or SCROLL_OUT_OF event types
15464    // are registered.
15465
15466    if (!events[event.action.config.autoStopEventId] && state.triggered) {
15467      return state;
15468    }
15469
15470    if (event.eventTypeId === SCROLL_INTO_VIEW === elementVisible) {
15471      actionGroupCreator(options);
15472      return (0, _objectSpread2["default"])({}, state, {
15473        triggered: true
15474      });
15475    } else {
15476      return state;
15477    }
15478  })
15479});
15480var MOUSE_OUT_ROUND_THRESHOLD = 0.05;
15481
15482var _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, {
15483  types: 'ecommerce-cart-open',
15484  handler: withFilter(isOrContainsElement, actionGroupCreator)
15485}), (0, _defineProperty2["default"])(_default2, ECOMMERCE_CART_CLOSE, {
15486  types: 'ecommerce-cart-close',
15487  handler: withFilter(isOrContainsElement, actionGroupCreator)
15488}), (0, _defineProperty2["default"])(_default2, MOUSE_CLICK, {
15489  types: 'click',
15490  handler: withFilter(isOrContainsElement, whenClickCountChange(function (options, _ref6) {
15491    var clickCount = _ref6.clickCount;
15492
15493    if (hasAutoStopEvent(options)) {
15494      clickCount === 1 && actionGroupCreator(options);
15495    } else {
15496      actionGroupCreator(options);
15497    }
15498  }))
15499}), (0, _defineProperty2["default"])(_default2, MOUSE_SECOND_CLICK, {
15500  types: 'click',
15501  handler: withFilter(isOrContainsElement, whenClickCountChange(function (options, _ref7) {
15502    var clickCount = _ref7.clickCount;
15503
15504    if (clickCount === 2) {
15505      actionGroupCreator(options);
15506    }
15507  }))
15508}), (0, _defineProperty2["default"])(_default2, MOUSE_DOWN, (0, _objectSpread2["default"])({}, baseActionGroupOptions, {
15509  types: 'mousedown'
15510})), (0, _defineProperty2["default"])(_default2, MOUSE_UP, (0, _objectSpread2["default"])({}, baseActionGroupOptions, {
15511  types: 'mouseup'
15512})), (0, _defineProperty2["default"])(_default2, MOUSE_OVER, {
15513  types: MOUSE_OVER_OUT_TYPES,
15514  handler: withFilter(isOrContainsElement, whenElementHoverChange(function (options, state) {
15515    if (state.elementHovered) {
15516      actionGroupCreator(options);
15517    }
15518  }))
15519}), (0, _defineProperty2["default"])(_default2, MOUSE_OUT, {
15520  types: MOUSE_OVER_OUT_TYPES,
15521  handler: withFilter(isOrContainsElement, whenElementHoverChange(function (options, state) {
15522    if (!state.elementHovered) {
15523      actionGroupCreator(options);
15524    }
15525  }))
15526}), (0, _defineProperty2["default"])(_default2, MOUSE_MOVE, {
15527  types: 'mousemove mouseout scroll',
15528  handler: function handler(_ref8) {
15529    var store = _ref8.store,
15530        element = _ref8.element,
15531        eventConfig = _ref8.eventConfig,
15532        nativeEvent = _ref8.nativeEvent,
15533        eventStateKey = _ref8.eventStateKey;
15534    var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
15535      clientX: 0,
15536      clientY: 0,
15537      pageX: 0,
15538      pageY: 0
15539    };
15540    var basedOn = eventConfig.basedOn,
15541        selectedAxis = eventConfig.selectedAxis,
15542        continuousParameterGroupId = eventConfig.continuousParameterGroupId,
15543        reverse = eventConfig.reverse,
15544        _eventConfig$restingS = eventConfig.restingState,
15545        restingState = _eventConfig$restingS === void 0 ? 0 : _eventConfig$restingS;
15546    var _nativeEvent$clientX = nativeEvent.clientX,
15547        clientX = _nativeEvent$clientX === void 0 ? state.clientX : _nativeEvent$clientX,
15548        _nativeEvent$clientY = nativeEvent.clientY,
15549        clientY = _nativeEvent$clientY === void 0 ? state.clientY : _nativeEvent$clientY,
15550        _nativeEvent$pageX = nativeEvent.pageX,
15551        pageX = _nativeEvent$pageX === void 0 ? state.pageX : _nativeEvent$pageX,
15552        _nativeEvent$pageY = nativeEvent.pageY,
15553        pageY = _nativeEvent$pageY === void 0 ? state.pageY : _nativeEvent$pageY;
15554    var isXAxis = selectedAxis === 'X_AXIS';
15555    var isMouseOut = nativeEvent.type === 'mouseout';
15556    var value = restingState / 100;
15557    var namespacedParameterId = continuousParameterGroupId;
15558    var elementHovered = false;
15559
15560    switch (basedOn) {
15561      case VIEWPORT:
15562        {
15563          value = isXAxis ? Math.min(clientX, window.innerWidth) / window.innerWidth : Math.min(clientY, window.innerHeight) / window.innerHeight;
15564          break;
15565        }
15566
15567      case PAGE:
15568        {
15569          var _getDocumentState3 = getDocumentState(),
15570              scrollLeft = _getDocumentState3.scrollLeft,
15571              scrollTop = _getDocumentState3.scrollTop,
15572              scrollWidth = _getDocumentState3.scrollWidth,
15573              scrollHeight = _getDocumentState3.scrollHeight;
15574
15575          value = isXAxis ? Math.min(scrollLeft + pageX, scrollWidth) / scrollWidth : Math.min(scrollTop + pageY, scrollHeight) / scrollHeight;
15576          break;
15577        }
15578
15579      case ELEMENT:
15580      default:
15581        {
15582          namespacedParameterId = getNamespacedParameterId(eventStateKey, continuousParameterGroupId);
15583          var isMouseEvent = nativeEvent.type.indexOf('mouse') === 0; // Use isOrContainsElement for mouse events since they are fired from the target
15584
15585          if (isMouseEvent && isOrContainsElement({
15586            element: element,
15587            nativeEvent: nativeEvent
15588          }) !== true) {
15589            break;
15590          }
15591
15592          var rect = element.getBoundingClientRect();
15593          var left = rect.left,
15594              top = rect.top,
15595              width = rect.width,
15596              height = rect.height; // Otherwise we'll need to calculate the mouse position from the previous handler state
15597          // against the target element's rect
15598
15599          if (!isMouseEvent && !pointIntersects({
15600            left: clientX,
15601            top: clientY
15602          }, rect)) {
15603            break;
15604          }
15605
15606          elementHovered = true;
15607          value = isXAxis ? (clientX - left) / width : (clientY - top) / height;
15608          break;
15609        }
15610    } // cover case where the event is a mouse out, but the value is not quite at 100%
15611
15612
15613    if (isMouseOut && (value > 1 - MOUSE_OUT_ROUND_THRESHOLD || value < MOUSE_OUT_ROUND_THRESHOLD)) {
15614      value = Math.round(value);
15615    } // Only update based on element if the mouse is moving over or has just left the element
15616
15617
15618    if (basedOn !== ELEMENT || elementHovered || elementHovered !== state.elementHovered) {
15619      value = reverse ? 1 - value : value;
15620      store.dispatch((0, _IX2EngineActions.parameterChanged)(namespacedParameterId, value));
15621    }
15622
15623    return {
15624      elementHovered: elementHovered,
15625      clientX: clientX,
15626      clientY: clientY,
15627      pageX: pageX,
15628      pageY: pageY
15629    };
15630  }
15631}), (0, _defineProperty2["default"])(_default2, PAGE_SCROLL, {
15632  types: CONTINUOUS_SCROLL_EVENT_TYPES,
15633  handler: function handler(_ref9) {
15634    var store = _ref9.store,
15635        eventConfig = _ref9.eventConfig;
15636    var continuousParameterGroupId = eventConfig.continuousParameterGroupId,
15637        reverse = eventConfig.reverse;
15638
15639    var _getDocumentState4 = getDocumentState(),
15640        scrollTop = _getDocumentState4.scrollTop,
15641        scrollHeight = _getDocumentState4.scrollHeight,
15642        clientHeight = _getDocumentState4.clientHeight;
15643
15644    var value = scrollTop / (scrollHeight - clientHeight);
15645    value = reverse ? 1 - value : value;
15646    store.dispatch((0, _IX2EngineActions.parameterChanged)(continuousParameterGroupId, value));
15647  }
15648}), (0, _defineProperty2["default"])(_default2, SCROLLING_IN_VIEW, {
15649  types: CONTINUOUS_SCROLL_EVENT_TYPES,
15650  handler: function handler(_ref10) {
15651    var element = _ref10.element,
15652        store = _ref10.store,
15653        eventConfig = _ref10.eventConfig,
15654        eventStateKey = _ref10.eventStateKey;
15655    var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
15656      scrollPercent: 0
15657    };
15658
15659    var _getDocumentState5 = getDocumentState(),
15660        scrollLeft = _getDocumentState5.scrollLeft,
15661        scrollTop = _getDocumentState5.scrollTop,
15662        scrollWidth = _getDocumentState5.scrollWidth,
15663        scrollHeight = _getDocumentState5.scrollHeight,
15664        visibleHeight = _getDocumentState5.clientHeight;
15665
15666    var basedOn = eventConfig.basedOn,
15667        selectedAxis = eventConfig.selectedAxis,
15668        continuousParameterGroupId = eventConfig.continuousParameterGroupId,
15669        startsEntering = eventConfig.startsEntering,
15670        startsExiting = eventConfig.startsExiting,
15671        addEndOffset = eventConfig.addEndOffset,
15672        addStartOffset = eventConfig.addStartOffset,
15673        _eventConfig$addOffse = eventConfig.addOffsetValue,
15674        addOffsetValue = _eventConfig$addOffse === void 0 ? 0 : _eventConfig$addOffse,
15675        _eventConfig$endOffse = eventConfig.endOffsetValue,
15676        endOffsetValue = _eventConfig$endOffse === void 0 ? 0 : _eventConfig$endOffse;
15677    var isXAxis = selectedAxis === 'X_AXIS';
15678
15679    if (basedOn === VIEWPORT) {
15680      var value = isXAxis ? scrollLeft / scrollWidth : scrollTop / scrollHeight;
15681
15682      if (value !== state.scrollPercent) {
15683        store.dispatch((0, _IX2EngineActions.parameterChanged)(continuousParameterGroupId, value));
15684      }
15685
15686      return {
15687        scrollPercent: value
15688      };
15689    } else {
15690      var namespacedParameterId = getNamespacedParameterId(eventStateKey, continuousParameterGroupId);
15691      var elementRect = element.getBoundingClientRect();
15692      var offsetStartPerc = (addStartOffset ? addOffsetValue : 0) / 100;
15693      var offsetEndPerc = (addEndOffset ? endOffsetValue : 0) / 100; // flip the offset percentages depending on start / exit type
15694
15695      offsetStartPerc = startsEntering ? offsetStartPerc : 1 - offsetStartPerc;
15696      offsetEndPerc = startsExiting ? offsetEndPerc : 1 - offsetEndPerc;
15697      var offsetElementTop = elementRect.top + Math.min(elementRect.height * offsetStartPerc, visibleHeight);
15698      var offsetElementBottom = elementRect.top + elementRect.height * offsetEndPerc;
15699      var offsetHeight = offsetElementBottom - offsetElementTop;
15700      var fixedScrollHeight = Math.min(visibleHeight + offsetHeight, scrollHeight);
15701      var fixedScrollTop = Math.min(Math.max(0, visibleHeight - offsetElementTop), fixedScrollHeight);
15702      var fixedScrollPerc = fixedScrollTop / fixedScrollHeight;
15703
15704      if (fixedScrollPerc !== state.scrollPercent) {
15705        store.dispatch((0, _IX2EngineActions.parameterChanged)(namespacedParameterId, fixedScrollPerc));
15706      }
15707
15708      return {
15709        scrollPercent: fixedScrollPerc
15710      };
15711    }
15712  }
15713}), (0, _defineProperty2["default"])(_default2, SCROLL_INTO_VIEW, scrollIntoOutOfViewOptions), (0, _defineProperty2["default"])(_default2, SCROLL_OUT_OF_V
15713IEW, scrollIntoOutOfViewOptions), (0, _defineProperty2["default"])(_default2, PAGE_SCROLL_DOWN, (0, _objectSpread2["default"])({}, baseScrollActionGroupOptions, {
15714  handler: whenScrollDirectionChange(function (options, state) {
15715    if (state.scrollingDown) {
15716      actionGroupCreator(options);
15717    }
15718  })
15719})), (0, _defineProperty2["default"])(_default2, PAGE_SCROLL_UP, (0, _objectSpread2["default"])({}, baseScrollActionGroupOptions, {
15720  handler: whenScrollDirectionChange(function (options, state) {
15721    if (!state.scrollingDown) {
15722      actionGroupCreator(options);
15723    }
15724  })
15725})), (0, _defineProperty2["default"])(_default2, PAGE_FINISH, {
15726  types: 'readystatechange IX2_PAGE_UPDATE',
15727  handler: withFilter(isElement, whenPageLoadFinish(actionGroupCreator))
15728}), (0, _defineProperty2["default"])(_default2, PAGE_START, {
15729  types: 'readystatechange IX2_PAGE_UPDATE',
15730  handler: withFilter(isElement, whenPageLoadStart(actionGroupCreator))
15731}), _default2);
15732
15733exports["default"] = _default;
15734
15735/***/ }),
15736/* 237 */
15737/***/ (function(module, exports, __webpack_require__) {
15738
vendor: 4,742 bytes, lines 15739-15918
15739var createFlow = __webpack_require__(238);
15740
15741/**
15742 * Creates a function that returns the result of invoking the given functions
15743 * with the `this` binding of the created function, where each successive
15744 * invocation is supplied the return value of the previous.
15745 *
15746 * @static
15747 * @memberOf _
15748 * @since 3.0.0
15749 * @category Util
15750 * @param {...(Function|Function[])} [funcs] The functions to invoke.
15751 * @returns {Function} Returns the new composite function.
15752 * @see _.flowRight
15753 * @example
15754 *
15755 * function square(n) {
15756 *   return n * n;
15757 * }
15758 *
15759 * var addSquare = _.flow([_.add, square]);
15760 * addSquare(1, 2);
15761 * // => 9
15762 */
15763var flow = createFlow();
15764
15765module.exports = flow;
15766
15767
15768/***/ }),
15769/* 238 */
15770/***/ (function(module, exports, __webpack_require__) {
15771
15772var LodashWrapper = __webpack_require__(52),
15773    flatRest = __webpack_require__(239),
15774    getData = __webpack_require__(98),
15775    getFuncName = __webpack_require__(99),
15776    isArray = __webpack_require__(1),
15777    isLaziable = __webpack_require__(252);
15778
15779/** Error message constants. */
15780var FUNC_ERROR_TEXT = 'Expected a function';
15781
15782/** Used to compose bitmasks for function metadata. */
15783var WRAP_CURRY_FLAG = 8,
15784    WRAP_PARTIAL_FLAG = 32,
15785    WRAP_ARY_FLAG = 128,
15786    WRAP_REARG_FLAG = 256;
15787
15788/**
15789 * Creates a `_.flow` or `_.flowRight` function.
15790 *
15791 * @private
15792 * @param {boolean} [fromRight] Specify iterating from right to left.
15793 * @returns {Function} Returns the new flow function.
15794 */
15795function createFlow(fromRight) {
15796  return flatRest(function(funcs) {
15797    var length = funcs.length,
15798        index = length,
15799        prereq = LodashWrapper.prototype.thru;
15800
15801    if (fromRight) {
15802      funcs.reverse();
15803    }
15804    while (index--) {
15805      var func = funcs[index];
15806      if (typeof func != 'function') {
15807        throw new TypeError(FUNC_ERROR_TEXT);
15808      }
15809      if (prereq && !wrapper && getFuncName(func) == 'wrapper') {
15810        var wrapper = new LodashWrapper([], true);
15811      }
15812    }
15813    index = wrapper ? index : length;
15814    while (++index < length) {
15815      func = funcs[index];
15816
15817      var funcName = getFuncName(func),
15818          data = funcName == 'wrapper' ? getData(func) : undefined;
15819
15820      if (data && isLaziable(data[0]) &&
15821            data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&
15822            !data[4].length && data[9] == 1
15823          ) {
15824        wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);
15825      } else {
15826        wrapper = (func.length == 1 && isLaziable(func))
15827          ? wrapper[funcName]()
15828          : wrapper.thru(func);
15829      }
15830    }
15831    return function() {
15832      var args = arguments,
15833          value = args[0];
15834
15835      if (wrapper && args.length == 1 && isArray(value)) {
15836        return wrapper.plant(value).value();
15837      }
15838      var index = 0,
15839          result = length ? funcs[index].apply(this, args) : value;
15840
15841      while (++index < length) {
15842        result = funcs[index].call(this, result);
15843      }
15844      return result;
15845    };
15846  });
15847}
15848
15849module.exports = createFlow;
15850
15851
15852/***/ }),
15853/* 239 */
15854/***/ (function(module, exports, __webpack_require__) {
15855
15856var flatten = __webpack_require__(240),
15857    overRest = __webpack_require__(243),
15858    setToString = __webpack_require__(245);
15859
15860/**
15861 * A specialized version of `baseRest` which flattens the rest array.
15862 *
15863 * @private
15864 * @param {Function} func The function to apply a rest parameter to.
15865 * @returns {Function} Returns the new function.
15866 */
15867function flatRest(func) {
15868  return setToString(overRest(func, undefined, flatten), func + '');
15869}
15870
15871module.exports = flatRest;
15872
15873
15874/***/ }),
15875/* 240 */
15876/***/ (function(module, exports, __webpack_require__) {
15877
15878var baseFlatten = __webpack_require__(241);
15879
15880/**
15881 * Flattens `array` a single level deep.
15882 *
15883 * @static
15884 * @memberOf _
15885 * @since 0.1.0
15886 * @category Array
15887 * @param {Array} array The array to flatten.
15888 * @returns {Array} Returns the new flattened array.
15889 * @example
15890 *
15891 * _.flatten([1, [2, [3, [4]], 5]]);
15892 * // => [1, 2, [3, [4]], 5]
15893 */
15894function flatten(array) {
15895  var length = array == null ? 0 : array.length;
15896  return length ? baseFlatten(array, 1) : [];
15897}
15898
15899module.exports = flatten;
15900
15901
15902/***/ }),
15903/* 241 */
15904/***/ (function(module, exports, __webpack_require__) {
15905
15906var arrayPush = __webpack_require__(36),
15907    isFlattenable = __webpack_require__(242);
15908
15909/**
15910 * The base implementation of `_.flatten` with support for restricting flattening.
15911 *
15912 * @private
15913 * @param {Array} array The array to flatten.
15914 * @param {number} depth The maximum recursion depth.
15915 * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.
15916 * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.
15917 * @param {Array} [result=[]] The initial result value.
15918 * @returns {Array} Returns the new flattened array.
vendor: 4,490 bytes, lines 15919-16090
15919 */
15920function baseFlatten(array, depth, predicate, isStrict, result) {
15921  var index = -1,
15922      length = array.length;
15923
15924  predicate || (predicate = isFlattenable);
15925  result || (result = []);
15926
15927  while (++index < length) {
15928    var value = array[index];
15929    if (depth > 0 && predicate(value)) {
15930      if (depth > 1) {
15931        // Recursively flatten arrays (susceptible to call stack limits).
15932        baseFlatten(value, depth - 1, predicate, isStrict, result);
15933      } else {
15934        arrayPush(result, value);
15935      }
15936    } else if (!isStrict) {
15937      result[result.length] = value;
15938    }
15939  }
15940  return result;
15941}
15942
15943module.exports = baseFlatten;
15944
15945
15946/***/ }),
15947/* 242 */
15948/***/ (function(module, exports, __webpack_require__) {
15949
15950var Symbol = __webpack_require__(11),
15951    isArguments = __webpack_require__(22),
15952    isArray = __webpack_require__(1);
15953
15954/** Built-in value references. */
15955var spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;
15956
15957/**
15958 * Checks if `value` is a flattenable `arguments` object or array.
15959 *
15960 * @private
15961 * @param {*} value The value to check.
15962 * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.
15963 */
15964function isFlattenable(value) {
15965  return isArray(value) || isArguments(value) ||
15966    !!(spreadableSymbol && value && value[spreadableSymbol]);
15967}
15968
15969module.exports = isFlattenable;
15970
15971
15972/***/ }),
15973/* 243 */
15974/***/ (function(module, exports, __webpack_require__) {
15975
15976var apply = __webpack_require__(244);
15977
15978/* Built-in method references for those with the same name as other `lodash` methods. */
15979var nativeMax = Math.max;
15980
15981/**
15982 * A specialized version of `baseRest` which transforms the rest array.
15983 *
15984 * @private
15985 * @param {Function} func The function to apply a rest parameter to.
15986 * @param {number} [start=func.length-1] The start position of the rest parameter.
15987 * @param {Function} transform The rest array transform.
15988 * @returns {Function} Returns the new function.
15989 */
15990function overRest(func, start, transform) {
15991  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);
15992  return function() {
15993    var args = arguments,
15994        index = -1,
15995        length = nativeMax(args.length - start, 0),
15996        array = Array(length);
15997
15998    while (++index < length) {
15999      array[index] = args[start + index];
16000    }
16001    index = -1;
16002    var otherArgs = Array(start + 1);
16003    while (++index < start) {
16004      otherArgs[index] = args[index];
16005    }
16006    otherArgs[start] = transform(array);
16007    return apply(func, this, otherArgs);
16008  };
16009}
16010
16011module.exports = overRest;
16012
16013
16014/***/ }),
16015/* 244 */
16016/***/ (function(module, exports) {
16017
16018/**
16019 * A faster alternative to `Function#apply`, this function invokes `func`
16020 * with the `this` binding of `thisArg` and the arguments of `args`.
16021 *
16022 * @private
16023 * @param {Function} func The function to invoke.
16024 * @param {*} thisArg The `this` binding of `func`.
16025 * @param {Array} args The arguments to invoke `func` with.
16026 * @returns {*} Returns the result of `func`.
16027 */
16028function apply(func, thisArg, args) {
16029  switch (args.length) {
16030    case 0: return func.call(thisArg);
16031    case 1: return func.call(thisArg, args[0]);
16032    case 2: return func.call(thisArg, args[0], args[1]);
16033    case 3: return func.call(thisArg, args[0], args[1], args[2]);
16034  }
16035  return func.apply(thisArg, args);
16036}
16037
16038module.exports = apply;
16039
16040
16041/***/ }),
16042/* 245 */
16043/***/ (function(module, exports, __webpack_require__) {
16044
16045var baseSetToString = __webpack_require__(246),
16046    shortOut = __webpack_require__(248);
16047
16048/**
16049 * Sets the `toString` method of `func` to return `string`.
16050 *
16051 * @private
16052 * @param {Function} func The function to modify.
16053 * @param {Function} string The `toString` result.
16054 * @returns {Function} Returns `func`.
16055 */
16056var setToString = shortOut(baseSetToString);
16057
16058module.exports = setToString;
16059
16060
16061/***/ }),
16062/* 246 */
16063/***/ (function(module, exports, __webpack_require__) {
16064
16065var constant = __webpack_require__(247),
16066    defineProperty = __webpack_require__(95),
16067    identity = __webpack_require__(46);
16068
16069/**
16070 * The base implementation of `setToString` without support for hot loop shorting.
16071 *
16072 * @private
16073 * @param {Function} func The function to modify.
16074 * @param {Function} string The `toString` result.
16075 * @returns {Function} Returns `func`.
16076 */
16077var baseSetToString = !defineProperty ? identity : function(func, string) {
16078  return defineProperty(func, 'toString', {
16079    'configurable': true,
16080    'enumerable': false,
16081    'value': constant(string),
16082    'writable': true
16083  });
16084};
16085
16086module.exports = baseSetToString;
16087
16088
16089/***/ }),
16090/* 247 */
vendor: 7,231 bytes, lines 16091-16324
16091/***/ (function(module, exports) {
16092
16093/**
16094 * Creates a function that returns `value`.
16095 *
16096 * @static
16097 * @memberOf _
16098 * @since 2.4.0
16099 * @category Util
16100 * @param {*} value The value to return from the new function.
16101 * @returns {Function} Returns the new constant function.
16102 * @example
16103 *
16104 * var objects = _.times(2, _.constant({ 'a': 1 }));
16105 *
16106 * console.log(objects);
16107 * // => [{ 'a': 1 }, { 'a': 1 }]
16108 *
16109 * console.log(objects[0] === objects[1]);
16110 * // => true
16111 */
16112function constant(value) {
16113  return function() {
16114    return value;
16115  };
16116}
16117
16118module.exports = constant;
16119
16120
16121/***/ }),
16122/* 248 */
16123/***/ (function(module, exports) {
16124
16125/** Used to detect hot functions by number of calls within a span of milliseconds. */
16126var HOT_COUNT = 800,
16127    HOT_SPAN = 16;
16128
16129/* Built-in method references for those with the same name as other `lodash` methods. */
16130var nativeNow = Date.now;
16131
16132/**
16133 * Creates a function that'll short out and invoke `identity` instead
16134 * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`
16135 * milliseconds.
16136 *
16137 * @private
16138 * @param {Function} func The function to restrict.
16139 * @returns {Function} Returns the new shortable function.
16140 */
16141function shortOut(func) {
16142  var count = 0,
16143      lastCalled = 0;
16144
16145  return function() {
16146    var stamp = nativeNow(),
16147        remaining = HOT_SPAN - (stamp - lastCalled);
16148
16149    lastCalled = stamp;
16150    if (remaining > 0) {
16151      if (++count >= HOT_COUNT) {
16152        return arguments[0];
16153      }
16154    } else {
16155      count = 0;
16156    }
16157    return func.apply(undefined, arguments);
16158  };
16159}
16160
16161module.exports = shortOut;
16162
16163
16164/***/ }),
16165/* 249 */
16166/***/ (function(module, exports, __webpack_require__) {
16167
16168var WeakMap = __webpack_require__(77);
16169
16170/** Used to store function metadata. */
16171var metaMap = WeakMap && new WeakMap;
16172
16173module.exports = metaMap;
16174
16175
16176/***/ }),
16177/* 250 */
16178/***/ (function(module, exports) {
16179
16180/**
16181 * This method returns `undefined`.
16182 *
16183 * @static
16184 * @memberOf _
16185 * @since 2.3.0
16186 * @category Util
16187 * @example
16188 *
16189 * _.times(2, _.noop);
16190 * // => [undefined, undefined]
16191 */
16192function noop() {
16193  // No operation performed.
16194}
16195
16196module.exports = noop;
16197
16198
16199/***/ }),
16200/* 251 */
16201/***/ (function(module, exports) {
16202
16203/** Used to lookup unminified function names. */
16204var realNames = {};
16205
16206module.exports = realNames;
16207
16208
16209/***/ }),
16210/* 252 */
16211/***/ (function(module, exports, __webpack_require__) {
16212
16213var LazyWrapper = __webpack_require__(54),
16214    getData = __webpack_require__(98),
16215    getFuncName = __webpack_require__(99),
16216    lodash = __webpack_require__(253);
16217
16218/**
16219 * Checks if `func` has a lazy counterpart.
16220 *
16221 * @private
16222 * @param {Function} func The function to check.
16223 * @returns {boolean} Returns `true` if `func` has a lazy counterpart,
16224 *  else `false`.
16225 */
16226function isLaziable(func) {
16227  var funcName = getFuncName(func),
16228      other = lodash[funcName];
16229
16230  if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {
16231    return false;
16232  }
16233  if (func === other) {
16234    return true;
16235  }
16236  var data = getData(other);
16237  return !!data && func === data[0];
16238}
16239
16240module.exports = isLaziable;
16241
16242
16243/***/ }),
16244/* 253 */
16245/***/ (function(module, exports, __webpack_require__) {
16246
16247var LazyWrapper = __webpack_require__(54),
16248    LodashWrapper = __webpack_require__(52),
16249    baseLodash = __webpack_require__(53),
16250    isArray = __webpack_require__(1),
16251    isObjectLike = __webpack_require__(8),
16252    wrapperClone = __webpack_require__(254);
16253
16254/** Used for built-in method references. */
16255var objectProto = Object.prototype;
16256
16257/** Used to check objects for own properties. */
16258var hasOwnProperty = objectProto.hasOwnProperty;
16259
16260/**
16261 * Creates a `lodash` object which wraps `value` to enable implicit method
16262 * chain sequences. Methods that operate on and return arrays, collections,
16263 * and functions can be chained together. Methods that retrieve a single value
16264 * or may return a primitive value will automatically end the chain sequence
16265 * and return the unwrapped value. Otherwise, the value must be unwrapped
16266 * with `_#value`.
16267 *
16268 * Explicit chain sequences, which must be unwrapped with `_#value`, may be
16269 * enabled using `_.chain`.
16270 *
16271 * The execution of chained methods is lazy, that is, it's deferred until
16272 * `_#value` is implicitly or explicitly called.
16273 *
16274 * Lazy evaluation allows several methods to support shortcut fusion.
16275 * Shortcut fusion is an optimization to merge iteratee calls; this avoids
16276 * the creation of intermediate arrays and can greatly reduce the number of
16277 * iteratee executions. Sections of a chain sequence qualify for shortcut
16278 * fusion if the section is applied to an array and iteratees accept only
16279 * one argument. The heuristic for whether a section qualifies for shortcut
16280 * fusion is subject to change.
16281 *
16282 * Chaining is supported in custom builds as long as the `_#value` method is
16283 * directly or indirectly included in the build.
16284 *
16285 * In addition to lodash methods, wrappers have `Array` and `String` methods.
16286 *
16287 * The wrapper `Array` methods are:
16288 * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`
16289 *
16290 * The wrapper `String` methods are:
16291 * `replace` and `split`
16292 *
16293 * The wrapper methods that support shortcut fusion are:
16294 * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,
16295 * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,
16296 * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`
16297 *
16298 * The chainable wrapper methods are:
16299 * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,
16300 * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,
16301 * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,
16302 * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,
16303 * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,
16304 * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,
16305 * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,
16306 * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,
16307 * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,
16308 * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,
16309 * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,
16310 * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,
16311 * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,
16312 * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,
16313 * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,
16314 * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,
16315 * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,
16316 * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,
16317 * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,
16318 * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,
16319 * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,
16320 * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,
16321 * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,
16322 * `zipObject`, `zipObjectDeep`, and `zipWith`
16323 *
16324 * The wrapper methods that are **not** chainable by default are:
16325 * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,
16326 * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,
16327 * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,
16328 * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,
16329 * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,
16330 * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,
16331 * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,
16332 * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,
16333 * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,
16334 * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,
16335 * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,
16336 * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,
16337 * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,
16338 * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,
16339 * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,
16340 * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,
16341 * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,
16342 * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,
16343 * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,
16344 * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,
16345 * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,
16346 * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,
16347 * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,
16348 * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,
16349 * `upperFirst`, `value`, and `words`
16350 *
16351 * @name _
16352 * @constructor
16353 * @category Seq
16354 * @param {*} value The value to wrap in a `lodash` instance.
16355 * @returns {Object} Returns the new `lodash` wrapper instance.
16356 * @example
16357 *
16358 * function square(n) {
16359 *   return n * n;
16360 * }
16361 *
16362 * var wrapped = _([1, 2, 3]);
16363 *
16364 * // Returns an unwrapped value.
16365 * wrapped.reduce(_.add);
16366 * // => 6
16367 *
16368 * // Returns a wrapped value.
16369 * var squares = wrapped.map(square);
16370 *
16371 * _.isArray(squares);
16372 * // => false
16373 *
16374 * _.isArray(squares.value());
16375 * // => true
16376 */
16377function lodash(value) {
16378  if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {
16379    if (value instanceof LodashWrapper) {
16380      return value;
16381    }
16382    if (hasOwnProperty.call(value, '__wrapped__')) {
16383      return wrapperClone(value);
16384    }
16385  }
16386  return new LodashWrapper(value);
16387}
16388
16389// Ensure wrappers are instances of `baseLodash`.
16390lodash.prototype = baseLodash.prototype;
16391lodash.prototype.constructor = lodash;
16392
16393module.exports = lodash;
16394
16395
16396/***/ }),
16397/* 254 */
16398/***/ (function(module, exports, __webpack_require__) {
16399
16400var LazyWrapper = __webpack_require__(54),
16401    LodashWrapper = __webpack_require__(52),
16402    copyArray = __webpack_require__(255);
16403
16404/**
16405 * Creates a clone of `wrapper`.
16406 *
16407 * @private
16408 * @param {Object} wrapper The wrapper to clone.
16409 * @returns {Object} Returns the cloned wrapper.
16410 */
16411function wrapperClone(wrapper) {
16412  if (wrapper instanceof LazyWrapper) {
16413    return wrapper.clone();
16414  }
16415  var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);
16416  result.__actions__ = copyArray(wrapper.__actions__);
16417  result.__index__  = wrapper.__index__;
16418  result.__values__ = wrapper.__values__;
16419  return result;
16420}
16421
16422module.exports = wrapperClone;
16423
16424
16425/***/ }),
16426/* 255 */
16427/***/ (function(module, exports) {
16428
16429/**
16430 * Copies the values of `source` to `array`.
16431 *
16432 * @private
16433 * @param {Array} source The array to copy values from.
16434 * @param {Array} [array=[]] The array to copy values to.
16435 * @returns {Array} Returns `array`.
16436 */
16437function copyArray(source, array) {
16438  var index = -1,
16439      length = source.length;
16440
16441  array || (array = Array(length));
16442  while (++index < length) {
16443    array[index] = source[index];
16444  }
16445  return array;
16446}
16447
16448module.exports = copyArray;
16449
16450
16451/***/ }),
16452/* 256 */
16453/***/ (function(module, exports, __webpack_require__) {
16454
16455var baseClamp = __webpack_require__(96),
16456    toNumber = __webpack_require__(48);
16457
16458/**
16459 * Clamps `number` within the inclusive `lower` and `upper` bounds.
16460 *
16461 * @static
16462 * @memberOf _
16463 * @since 4.0.0
16464 * @category Number
16465 * @param {number} number The number to clamp.
16466 * @param {number} [lower] The lower bound.
16467 * @param {number} upper The upper bound.
16468 * @returns {number} Returns the clamped number.
16469 * @example
16470 *
16471 * _.clamp(-10, -5, 5);
16472 * // => -5
16473 *
16474 * _.clamp(10, -5, 5);
16475 * // => 5
16476 */
16477function clamp(number, lower, upper) {
16478  if (upper === undefined) {
16479    upper = lower;
16480    lower = undefined;
16481  }
16482  if (upper !== undefined) {
16483    upper = toNumber(upper);
16484    upper = upper === upper ? upper : 0;
16485  }
16486  if (lower !== undefined) {
16487    lower = toNumber(lower);
16488    lower = lower === lower ? lower : 0;
16489  }
16490  return baseClamp(toNumber(number), lower, upper);
16491}
16492
16493module.exports = clamp;
16494
16495
16496/***/ }),
16497/* 257 */
16498/***/ (function(module, exports, __webpack_require__) {
16499
16500"use strict";
16501 // @wf-will-never-add-flow-to-this-file
16502
16503/* eslint-disable */
16504
16505/**
16506 * Webflow: Auto-select links to current page or section
16507 */
16508
16509var Webflow = __webpack_require__(2);
16510
16511Webflow.define('links', module.exports = function ($, _) {
16512  var api = {};
16513  var $win = $(window);
16514  var designer;
16515  var inApp = Webflow.env();
16516  var location = window.location;
16517  var tempLink = document.createElement('a');
16518  var linkCurrent = 'w--current';
16519  var indexPage = /index\.(html|php)$/;
16520  var dirList = /\/$/;
16521  var anchors;
16522  var slug; // -----------------------------------
16523  // Module methods
16524
16525  api.ready = api.design = api.preview = init; // -----------------------------------
16526  // Private methods
16527
16528  function init() {
16529    designer = inApp && Webflow.env('design');
16530    slug = Webflow.env('slug') || location.pathname || ''; // Reset scroll listener, init anchors
16531
16532    Webflow.scroll.off(scroll);
16533    anchors = []; // Test all links for a selectable href
16534
16535    var links = document.links;
16536
16537    for (var i = 0; i < links.length; ++i) {
16538      select(links[i]);
16539    } // Listen for scroll if any anchors exist
16540
16541
16542    if (anchors.length) {
16543      Webflow.scroll.on(scroll);
16544      scroll();
16545    }
16546  }
16547
16548  function select(link) {
16549    var href = designer && link.getAttribute('href-disabled') || link.getAttribute('href');
16550    tempLink.href = href; // Ignore any hrefs with a colon to safely avoid all uri schemes
16551
16552    if (href.indexOf(':') >= 0) {
16553      return;
16554    }
16555
16556    var $link = $(link); // Check for all links with hash (eg (this-host)(/this-path)#section) to this page
16557
16558    if (tempLink.hash.length > 1 && tempLink.host + tempLink.pathname === location.host + location.pathname) {
16559      // Ignore any hrefs with Google Translate type hash
16560      // Example: jQuery can't parse $('#googtrans(en|es)')
16561      // https://forum.webflow.com/t/dropdown-menus-not-working-on-site/87140
16562      if (!/^#[a-zA-Z0-9\-\_]+$/.test(tempLink.hash)) {
16563        return;
16564      }
16565
16566      var $section = $(tempLink.hash);
16567      $section.length && anchors.push({
16568        link: $link,
16569        sec: $section,
16570        active: false
16571      });
16572      return;
16573    } // Ignore empty # links
16574
16575
16576    if (href === '#' || href === '') {
16577      return;
16578    } // Determine whether the link should be selected
16579
16580
16581    var match = tempLink.href === location.href || href === slug || indexPage.test(href) && dirList.test(slug);
16582    setClass($link, linkCurrent, match);
16583  }
16584
16585  function scroll() {
16586    var viewTop = $win.scrollTop();
16587    var viewHeight = $win.height(); // Check each anchor for a section in view
16588
16589    _.each(anchors, function (anchor) {
16590      var $link = anchor.link;
16591      var $section = anchor.sec;
16592      var top = $section.offset().top;
16593      var height = $section.outerHeight();
16594      var offset = viewHeight * 0.5;
16595      var active = $section.is(':visible') && top + height - offset >= viewTop && top + offset <= viewTop + viewHeight;
16596
16597      if (anchor.active === active) {
16598        return;
16599      }
16600
16601      anchor.active = active;
16602      setClass($link, linkCurrent, active);
16603    });
16604  }
16605
16606  function setClass($elem, className, add) {
16607    var exists = $elem.hasClass(className);
16608
16609    if (add && exists) {
16610      return;
16611    }
16612
16613    if (!add && !exists) {
16614      return;
16615    }
16616
16617    add ? $elem.addClass(className) : $elem.removeClass(className);
16618  } // Export module
16619
16620
16621  return api;
16622});
16623
16624/***/ }),
16625/* 258 */
16626/***/ (function(module, exports, __webpack_require__) {
16627
16628"use strict";
16629 // @wf-will-never-add-flow-to-this-file
16630
16631/* eslint-disable */
16632
16633/**
16634 * Webflow: Smooth scroll
16635 */
16636
16637var Webflow = __webpack_require__(2);
16638
16639Webflow.define('scroll', module.exports = function ($) {
16640  var $doc = $(document);
16641  var win = window;
16642  var loc = win.location;
16643  var history = inIframe() ? null : win.history;
16644  var validHash = /^[a-zA-Z0-9][\w:.-]*$/;
16645
16646  function inIframe() {
16647    try {
16648      return Boolean(win.frameElement);
16649    } catch (e) {
16650      return true;
16651    }
16652  }
16653
16654  function ready() {
16655    // The current page url without the hash part.
16656    var locHref = loc.href.split('#')[0]; // When clicking on a link, check if it links to another part of the page
16657
16658    $doc.on('click', 'a', function (e) {
16659      if (Webflow.env('design')) {
16660        return;
16661      } // Ignore links being used by jQuery mobile
16662
16663
16664      if (window.$.mobile && $(e.currentTarget).hasClass('ui-link')) {
16665        return;
16666      } // Ignore empty # links
16667
16668
16669      if (this.getAttribute('href') === '#') {
16670        e.preventDefault();
16671        return;
16672      } // The href property always contains the full url so we can compare
16673      // with the document’s location to only target links on this page.
16674
16675
16676      var parts = this.href.split('#');
16677      var hash = parts[0] === locHref ? parts[1] : null;
16678
16679      if (hash) {
16680        findEl(hash, e);
16681      }
16682    });
16683  }
16684
16685  function findEl(hash, e) {
16686    if (!validHash.test(hash)) {
16687      return;
16688    }
16689
16690    var el = $('#' + hash);
16691
16692    if (!el.length) {
16693      return;
16694    }
16695
16696    if (e) {
16697      e.preventDefault();
16698      e.stopPropagation();
16699    } // Push new history state
16700
16701
16702    if (loc.hash !== hash && history && history.pushState && // Navigation breaks Chrome when the protocol is `file:`.
16703    !(Webflow.env.chrome && loc.protocol === 'file:')) {
16704      var oldHash = history.state && history.state.hash;
16705
16706      if (oldHash !== hash) {
16707        history.pushState({
16708          hash: hash
16709        }, '', '#' + hash);
16710      }
16711    } // If a fixed header exists, offset for the height
16712
16713
16714    var rootTag = Webflow.env('editor') ? '.w-editor-body' : 'body';
16715    var header = $('header, ' + rootTag + ' > .header, ' + rootTag + ' > .w-nav:not([data-no-scroll])');
16716    var offset = header.css('position') === 'fixed' ? header.outerHeight() : 0;
16717    win.setTimeout(function () {
16718      scroll(el, offset);
16719    }, e ? 0 : 300);
16720  }
16721
16722  function scroll(el, offset) {
16723    var start = $(win).scrollTop();
16724    var end = el.offset().top - offset; // If specified, scroll so that the element ends up in the middle of the viewport
16725
16726    if (el.data('scroll') === 'mid') {
16727      var available = $(win).height() - offset;
16728      var elHeight = el.outerHeight();
16729
16730      if (elHeight < available) {
16731        end -= Math.round((available - elHeight) / 2);
16732      }
16733    }
16734
16735    var mult = 1; // Check for custom time multiplier on the body and the element
16736
16737    $('body').add(el).each(function () {
16738      var time = parseFloat($(this).attr('data-scroll-time'), 10);
16739
16740      if (!isNaN(time) && (time === 0 || time > 0)) {
16741        mult = time;
16742      }
16743    }); // Shim for IE8 and below
16744
16745    if (!Date.now) {
16746      Date.now = function () {
16747        return new Date().getTime();
16748      };
16749    }
16750
16751    var clock = Date.now();
16752
16753    var animate = win.requestAnimationFrame || win.mozRequestAnimationFrame || win.webkitRequestAnimationFrame || function (fn) {
16754      win.setTimeout(fn, 15);
16755    };
16756
16757    var duration = (472.143 * Math.log(Math.abs(start - end) + 125) - 2000) * mult;
16758
16759    var step = function step() {
16760      var elapsed = Date.now() - clock;
16761      win.scroll(0, getY(start, end, elapsed, duration));
16762
16763      if (elapsed <= duration) {
16764        animate(step);
16765      }
16766    };
16767
16768    step();
16769  }
16770
16771  function getY(start, end, elapsed, duration) {
16772    if (elapsed > duration) {
16773      return end;
16774    }
16775
16776    return start + (end - start) * ease(elapsed / duration);
16777  }
16778
16779  function ease(t) {
16780    return t < 0.5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1;
16781  } // Export module
16782
16783
16784  return {
16785    ready: ready
16786  };
16787});
16788
16789/***/ }),
16790/* 259 */
16791/***/ (function(module, exports, __webpack_require__) {
16792
16793"use strict";
16794 // @wf-will-never-add-flow-to-this-file
16795
16796/* eslint-disable */
16797
16798/**
16799 * Webflow: Touch events
16800 */
16801
16802var Webflow = __webpack_require__(2);
16803
16804Webflow.define('touch', module.exports = function ($) {
16805  var api = {};
16806  var fallback = !document.addEventListener;
16807  var getSelection = window.getSelection; // Fallback to click events in old IE
16808
16809  if (fallback) {
16810    $.event.special.tap = {
16811      bindType: 'click',
16812      delegateType: 'click'
16813    };
16814  }
16815
16816  api.init = function (el) {
16817    if (fallback) {
16818      return null;
16819    }
16820
16821    el = typeof el === 'string' ? $(el).get(0) : el;
16822    return el ? new Touch(el) : null;
16823  };
16824
16825  function Touch(el) {
16826    var active = false;
16827    var dirty = false;
16828    var useTouch = false;
16829    var thresholdX = Math.min(Math.round(window.innerWidth * 0.04), 40);
16830    var startX;
16831    var startY;
16832    var lastX;
16833    el.addEventListener('touchstart', start, false);
16834    el.addEventListener('touchmove', move, false);
16835    el.addEventListener('touchend', end, false);
16836    el.addEventListener('touchcancel', cancel, false);
16837    el.addEventListener('mousedown', start, false);
16838    el.addEventListener('mousemove', move, false);
16839    el.addEventListener('mouseup', end, false);
16840    el.addEventListener('mouseout', cancel, false);
16841
16842    function start(evt) {
16843      // We don’t handle multi-touch events yet.
16844      var touches = evt.touches;
16845
16846      if (touches && touches.length > 1) {
16847        return;
16848      }
16849
16850      active = true;
16851      dirty = false;
16852
16853      if (touches) {
16854        useTouch = true;
16855        startX = touches[0].clientX;
16856        startY = touches[0].clientY;
16857      } else {
16858        startX = evt.clientX;
16859        startY = evt.clientY;
16860      }
16861
16862      lastX = startX;
16863    }
16864
16865    function move(evt) {
16866      if (!active) {
16867        return;
16868      }
16869
16870      if (useTouch && evt.type === 'mousemove') {
16871        evt.preventDefault();
16872        evt.stopPropagation();
16873        return;
16874      }
16875
16876      var touches = evt.touches;
16877      var x = touches ? touches[0].clientX : evt.clientX;
16878      var y = touches ? touches[0].clientY : evt.clientY;
16879      var velocityX = x - lastX;
16880      lastX = x; // Allow swipes while pointer is down, but prevent them during text selection
16881
16882      if (Math.abs(velocityX) > thresholdX && getSelection && String(getSelection()) === '') {
16883        triggerEvent('swipe', evt, {
16884          direction: velocityX > 0 ? 'right' : 'left'
16885        });
16886        cancel();
16887      } // If pointer moves more than 10px flag to cancel tap
16888
16889
16890      if (Math.abs(x - startX) > 10 || Math.abs(y - startY) > 10) {
16891        dirty = true;
16892      }
16893    }
16894
16895    function end(evt) {
16896      if (!active) {
16897        return;
16898      }
16899
16900      active = false;
16901
16902      if (useTouch && evt.type === 'mouseup') {
16903        evt.preventDefault();
16904        evt.stopPropagation();
16905        useTouch = false;
16906        return;
16907      }
16908
16909      if (!dirty) {
16910        triggerEvent('tap', evt);
16911      }
16912    }
16913
16914    function cancel() {
16915      active = false;
16916    }
16917
16918    function destroy() {
16919      el.removeEventListener('touchstart', start, false);
16920      el.removeEventListener('touchmove', move, false);
16921      el.removeEventListener('touchend', end, false);
16922      el.removeEventListener('touchcancel', cancel, false);
16923      el.removeEventListener('mousedown', start, false);
16924      el.removeEventListener('mousemove', move, false);
16925      el.removeEventListener('mouseup', end, false);
16926      el.removeEventListener('mouseout', cancel, false);
16927      el = null;
16928    } // Public instance methods
16929
16930
16931    this.destroy = destroy;
16932  } // Wrap native event to supoprt preventdefault + stopPropagation
16933
16934
16935  function triggerEvent(type, evt, data) {
16936    var newEvent = $.Event(type, {
16937      originalEvent: evt
16938    });
16939    $(evt.target).trigger(newEvent, data);
16940  } // Listen for touch events on all nodes by default.
16941
16942
16943  api.instance = api.init(document); // Export module
16944
16945  return api;
16946});
16947
16948/***/ }),
16949/* 260 */
16950/***/ (function(module, exports, __webpack_require__) {
16951
16952"use strict";
16953 // @wf-will-never-add-flow-to-this-file
16954
16955/* eslint-disable */
16956
16957/**
16958 * Webflow: Forms
16959 */
16960
16961var Webflow = __webpack_require__(2);
16962
16963Webflow.define('forms', module.exports = function ($, _) {
16964  var api = {};
16965  var $doc = $(document);
16966  var $forms;
16967  var loc = window.location;
16968  var retro = window.XDomainRequest && !window.atob;
16969  var namespace = '.w-form';
16970  var siteId;
16971  var emailField = /e(-)?mail/i;
16972  var emailValue = /^\S+@\S+$/;
16973  var alert = window.alert;
16974  var inApp = Webflow.env();
16975  var listening;
16976  var formUrl;
16977  var signFileUrl; // MailChimp domains: list-manage.com + mirrors
16978
16979  var chimpRegex = /list-manage[1-9]?.com/i;
16980
16981  var disconnected = _.debounce(function () {
16982    alert('Oops! This page has improperly configured forms. Please contact your website administrator to fix this issue.');
16983  }, 100);
16984
16985  api.ready = api.design = api.preview = function () {
16986    // Init forms
16987    init(); // Wire document events on published site only once
16988
16989    if (!inApp && !listening) {
16990      addListeners();
16991    }
16992  };
16993
16994  function init() {
16995    siteId = $('html').attr('data-wf-site');
16996    formUrl = "https://webflow.com" + '/api/v1/form/' + siteId; // Work around same-protocol IE XDR limitation - without this IE9 and below forms won't submit
16997
16998    if (retro && formUrl.indexOf("https://webflow.com") >= 0) {
16999      formUrl = formUrl.replace("https://webflow.com", "http://formdata.webflow.com");
17000    }
17001
17002    signFileUrl = "".concat(formUrl, "/signFile");
17003    $forms = $(namespace + ' form');
17004
17005    if (!$forms.length) {
17006      return;
17007    }
17008
17009    $forms.each(build);
17010  }
17011
17012  function build(i, el) {
17013    // Store form state using namespace
17014    var $el = $(el);
17015    var data = $.data(el, namespace);
17016
17017    if (!data) {
17018      data = $.data(el, namespace, {
17019        form: $el
17020      });
17021    } // data.form
17022
17023
17024    reset(data);
17025    var wrap = $el.closest('div.w-form');
17026    data.done = wrap.find('> .w-form-done');
17027    data.fail = wrap.find('> .w-form-fail');
17028    data.fileUploads = wrap.find('.w-file-upload');
17029    data.fileUploads.each(function (j) {
17030      initFileUpload(j, data);
17031    });
17032    var action = data.action = $el.attr('action');
17033    data.handler = null;
17034    data.redirect = $el.attr('data-redirect'); // MailChimp form
17035
17036    if (chimpRegex.test(action)) {
17037      data.handler = submitMailChimp;
17038      return;
17039    } // Custom form action
17040
17041
17042    if (action) {
17043      return;
17044    } // Webflow forms for hosting accounts
17045
17046
17047    if (siteId) {
17048      data.handler = typeof hostedSubmitWebflow === 'function' ? hostedSubmitWebflow : exportedSubmitWebflow;
17049      return;
17050    } // Alert for disconnected Webflow forms
17051
17052
17053    disconnected();
17054  }
17055
17056  function addListeners() {
17057    listening = true; // Handle form submission for Webflow forms
17058
17059    $doc.on('submit', namespace + ' form', function (evt) {
17060      var data = $.data(this, namespace);
17061
17062      if (data.handler) {
17063        data.evt = evt;
17064        data.handler(data);
17065      }
17066    }); // handle checked ui for custom checkbox
17067
17068    var CHECKBOX_CLASS_NAME = '.w-checkbox-input';
17069    var CHECKED_CLASS = 'w--checked';
17070    $doc.on('change', namespace + ' form input[type="checkbox"]:not(' + CHECKBOX_CLASS_NAME + ')', function (evt) {
17071      $(evt.target).siblings(CHECKBOX_CLASS_NAME).toggleClass(CHECKED_CLASS);
17072    });
17073  } // Reset data common to all submit handlers
17074
17075
17076  function reset(data) {
17077    var btn = data.btn = data.form.find(':input[type="submit"]');
17078    data.wait = data.btn.attr('data-wait') || null;
17079    data.success = false;
17080    btn.prop('disabled', false);
17081    data.label && btn.val(data.label);
17082  } // Disable submit button
17083
17084
17085  function disableBtn(data) {
17086    var btn = data.btn;
17087    var wait = data.wait;
17088    btn.prop('disabled', true); // Show wait text and store previous label
17089
17090    if (wait) {
17091      data.label = btn.val();
17092      btn.val(wait);
17093    }
17094  } // Find form fields, validate, and set value pairs
17095
17096
17097  function findFields(form, result) {
17098    var status = null;
17099    result = result || {}; // The ":input" selector is a jQuery shortcut to select all inputs, selects, textareas
17100
17101    form.find(':input:not([type="submit"]):not([type="file"])').each(function (i, el) {
17102      var field = $(el);
17103      var type = field.attr('type');
17104      var name = field.attr('data-name') || field.attr('name') || 'Field ' + (i + 1);
17105      var value = field.val();
17106
17107      if (type === 'checkbox') {
17108        value = field.is(':checked');
17109      } else if (type === 'radio') {
17110        // Radio group value already processed
17111        if (result[name] === null || typeof result[name] === 'string') {
17112          return;
17113        }
17114
17115        value = form.find('input[name="' + field.attr('name') + '"]:checked').val() || null;
17116      }
17117
17118      if (typeof value === 'string') {
17119        value = $.trim(value);
17120      }
17121
17122      result[name] = value;
17123      status = status || getStatus(field, type, name, value);
17124    });
17125    return status;
17126  }
17127
17128  function findFileUploads(form) {
17129    var result = {};
17130    form.find(':input[type="file"]').each(function (i, el) {
17131      var field = $(el);
17132      var name = field.attr('data-name') || field.attr('name') || 'File ' + (i + 1);
17133      var value = field.attr('data-value');
17134
17135      if (typeof value === 'string') {
17136        value = $.trim(value);
17137      }
17138
17139      result[name] = value;
17140    });
17141    return result;
17142  }
17143
17144  function getStatus(field, type, name, value) {
17145    var status = null;
17146
17147    if (type === 'password') {
17148      status = 'Passwords cannot be submitted.';
17149    } else if (field.attr('required')) {
17150      if (!value) {
17151        status = 'Please fill out the required field: ' + name;
17152      } else if (emailField.test(field.attr('type'))) {
17153        if (!emailValue.test(value)) {
17154          status = 'Please enter a valid email address for: ' + name;
17155        }
17156      }
17157    } else if (name === 'g-recaptcha-response' && !value) {
17158      status = 'Please confirm you’re not a robot.';
17159    }
17160
17161    return status;
17162  }
17163
17164  function exportedSubmitWebflow(data) {
17165    preventDefault(data);
17166    afterSubmit(data);
17167  } // Submit form to MailChimp
17168
17169
17170  function submitMailChimp(data) {
17171    reset(data);
17172    var form = data.form;
17173    var payload = {}; // Skip Ajax submission if http/s mismatch, fallback to POST instead
17174
17175    if (/^https/.test(loc.href) && !/^https/.test(data.action)) {
17176      form.attr('method', 'post');
17177      return;
17178    }
17179
17180    preventDefault(data); // Find & populate all fields
17181
17182    var status = findFields(form, payload);
17183
17184    if (status) {
17185      return alert(status);
17186    } // Disable submit button
17187
17188
17189    disableBtn(data); // Use special format for MailChimp params
17190
17191    var fullName;
17192
17193    _.each(payload, function (value, key) {
17194      if (emailField.test(key)) {
17195        payload.EMAIL = value;
17196      }
17197
17198      if (/^((full[ _-]?)?name)$/i.test(key)) {
17199        fullName = value;
17200      }
17201
17202      if (/^(first[ _-]?name)$/i.test(key)) {
17203        payload.FNAME = value;
17204      }
17205
17206      if (/^(last[ _-]?name)$/i.test(key)) {
17207        payload.LNAME = value;
17208      }
17209    });
17210
17211    if (fullName && !payload.FNAME) {
17212      fullName = fullName.split(' ');
17213      payload.FNAME = fullName[0];
17214      payload.LNAME = payload.LNAME || fullName[1];
17215    } // Use the (undocumented) MailChimp jsonp api
17216
17217
17218    var url = data.action.replace('/post?', '/post-json?') + '&c=?'; // Add special param to prevent bot signups
17219
17220    var userId = url.indexOf('u=') + 2;
17221    userId = url.substring(userId, url.indexOf('&', userId));
17222    var listId = url.indexOf('id=') + 3;
17223    listId = url.substring(listId, url.indexOf('&', listId));
17224    payload['b_' + userId + '_' + listId] = '';
17225    $.ajax({
17226      url: url,
17227      data: payload,
17228      dataType: 'jsonp'
17229    }).done(function (resp) {
17230      data.success = resp.result === 'success' || /already/.test(resp.msg);
17231
17232      if (!data.success) {
17233        console.info('MailChimp error: ' + resp.msg);
17234      }
17235
17236      afterSubmit(data);
17237    }).fail(function () {
17238      afterSubmit(data);
17239    });
17240  } // Common callback which runs after all Ajax submissions
17241
17242
17243  function afterSubmit(data) {
17244    var form = data.form;
17245    var redirect = data.redirect;
17246    var success = data.success; // Redirect to a success url if defined
17247
17248    if (success && redirect) {
17249      Webflow.location(redirect);
17250      return;
17251    } // Show or hide status divs
17252
17253
17254    data.done.toggle(success);
17255    data.fail.toggle(!success); // Hide form on success
17256
17257    form.toggle(!success); // Reset data and enable submit button
17258
17259    reset(data);
17260  }
17261
17262  function preventDefault(data) {
17263    data.evt && data.evt.preventDefault();
17264    data.evt = null;
17265  }
17266
17267  function initFileUpload(i, form) {
17268    if (!form.fileUploads || !form.fileUploads[i]) {
17269      return;
17270    }
17271
17272    var file;
17273    var $el = $(form.fileUploads[i]);
17274    var $defaultWrap = $el.find('> .w-file-upload-default');
17275    var $uploadingWrap = $el.find('> .w-file-upload-uploading');
17276    var $successWrap = $el.find('> .w-file-upload-success');
17277    var $errorWrap = $el.find('> .w-file-upload-error');
17278    var $input = $defaultWrap.find('.w-file-upload-input');
17279    var $label = $defaultWrap.find('.w-file-upload-label');
17280    var $labelChildren = $label.children();
17281    var $errorMsgEl = $errorWrap.find('.w-file-upload-error-msg');
17282    var $fileEl = $successWrap.find('.w-file-upload-file');
17283    var $removeEl = $successWrap.find('.w-file-remove-link');
17284    var $fileNameEl = $fileEl.find('.w-file-upload-file-name');
17285    var sizeErrMsg = $errorMsgEl.attr('data-w-size-error');
17286    var typeErrMsg = $errorMsgEl.attr('data-w-type-error');
17287    var genericErrMsg = $errorMsgEl.attr('data-w-generic-error');
17288
17289    if (!inApp) {
17290      $removeEl.on('click', function () {
17291        $input.removeAttr('data-value');
17292        $input.val('');
17293        $fileNameEl.html('');
17294        $defaultWrap.toggle(true);
17295        $successWrap.toggle(false);
17296      });
17297      $input.on('change', function (e) {
17298        file = e.target && e.target.files && e.target.files[0];
17299
17300        if (!file) {
17301          return;
17302        } // Show uploading
17303
17304
17305        $defaultWrap.toggle(false);
17306        $errorWrap.toggle(false);
17307        $uploadingWrap.toggle(true); // Set filename
17308
17309        $fileNameEl.text(file.name); // Disable submit button
17310
17311        if (!isUploading()) {
17312          disableBtn(form);
17313        }
17314
17315        form.fileUploads[i].uploading = true;
17316        signFile(file, afterSign);
17317      }); // Setting input width 1px and height equal label
17318      // This is so the browser required error will show up
17319
17320      var height = $label.outerHeight();
17321      $input.height(height);
17322      $input.width(1);
17323    } else {
17324      $input.on('click', function (e) {
17325        e.preventDefault();
17326      });
17327      $label.on('click', function (e) {
17328        e.preventDefault();
17329      });
17330      $labelChildren.on('click', function (e) {
17331        e.preventDefault();
17332      });
17333    }
17334
17335    function parseError(err) {
17336      var errorMsg = err.responseJSON && err.responseJSON.msg;
17337      var userError = genericErrMsg;
17338
17339      if (typeof errorMsg === 'string' && errorMsg.indexOf('InvalidFileTypeError') === 0) {
17340        userError = typeErrMsg;
17341      } else if (typeof errorMsg === 'string' && errorMsg.indexOf('MaxFileSizeError') === 0) {
17342        userError = sizeErrMsg;
17343      }
17344
17345      $errorMsgEl.text(userError);
17346      $input.removeAttr('data-value');
17347      $input.val('');
17348      $uploadingWrap.toggle(false);
17349      $defaultWrap.toggle(true);
17350      $errorWrap.toggle(true);
17351      form.fileUploads[i].uploading = false;
17352
17353      if (!isUploading()) {
17354        reset(form);
17355      }
17356    }
17357
17358    function afterSign(err, data) {
17359      if (err) {
17360        return parseError(err);
17361      }
17362
17363      var fileName = data.fileName;
17364      var postData = data.postData;
17365      var fileId = data.fileId;
17366      var s3Url = data.s3Url;
17367      $input.attr('data-value', fileId);
17368      uploadS3(s3Url, postData, file, fileName, afterUpload);
17369    }
17370
17371    function afterUpload(err) {
17372      if (err) {
17373        return parseError(err);
17374      } // Show success
17375
17376
17377      $uploadingWrap.toggle(false);
17378      $successWrap.css('display', 'inline-block');
17379      form.fileUploads[i].uploading = false;
17380
17381      if (!isUploading()) {
17382        reset(form);
17383      }
17384    }
17385
17386    function isUploading() {
17387      var uploads = form.fileUploads && form.fileUploads.toArray() || [];
17388      return uploads.some(function (value) {
17389        return value.uploading;
17390      });
17391    }
17392  }
17393
17394  function signFile(file, cb) {
17395    var payload = {
17396      name: file.name,
17397      size: file.size
17398    };
17399    $.ajax({
17400      type: 'POST',
17401      url: signFileUrl,
17402      data: payload,
17403      dataType: 'json',
17404      crossDomain: true
17405    }).done(function (data) {
17406      cb(null, data);
17407    }).fail(function (err) {
17408      cb(err);
17409    });
17410  }
17411
17412  function uploadS3(url, data, file, fileName, cb) {
17413    var formData = new FormData();
17414
17415    for (var k in data) {
17416      formData.append(k, data[k]);
17417    }
17418
17419    formData.append('file', file, fileName);
17420    $.ajax({
17421      type: 'POST',
17422      url: url,
17423      data: formData,
17424      processData: false,
17425      contentType: false
17426    }).done(function () {
17427      cb(null);
17428    }).fail(function (err) {
17429      cb(err);
17430    });
17431  } // Export module
17432
17433
17434  return api;
17435});
17436
17437/***/ }),
17438/* 261 */
17439/***/ (function(module, exports, __webpack_require__) {
17440
17441"use strict";
17442 // @wf-will-never-add-flow-to-this-file
17443
17444/* eslint-disable */
17445
17446/**
17447 * Webflow: Lightbox component
17448 */
17449
17450var Webflow = __webpack_require__(2);
17451
17452var CONDITION_INVISIBLE_CLASS = 'w-condition-invisible';
17453var CONDVIS_SELECTOR = '.' + CONDITION_INVISIBLE_CLASS;
17454
17455function withoutConditionallyHidden(items) {
17456  return items.filter(function (item) {
17457    return !isConditionallyHidden(item);
17458  });
17459}
17460
17461function isConditionallyHidden(item) {
17462  return Boolean(item.$el && item.$el.closest(CONDVIS_SELECTOR).length);
17463}
17464
17465function getPreviousVisibleIndex(start, items) {
17466  for (var i = start; i >= 0; i--) {
17467    if (!isConditionallyHidden(items[i])) {
17468      return i;
17469    }
17470  }
17471
17472  return -1;
17473}
17474
17475function getNextVisibleIndex(start, items) {
17476  for (var i = start; i <= items.length - 1; i++) {
17477    if (!isConditionallyHidden(items[i])) {
17478      return i;
17479    }
17480  }
17481
17482  return -1;
17483}
17484
17485function shouldSetArrowLeftInactive(currentIndex, items) {
17486  return getPreviousVisibleIndex(currentIndex - 1, items) === -1;
17487}
17488
17489function shouldSetArrowRightInactive(currentIndex, items) {
17490  return getNextVisibleIndex(currentIndex + 1, items) === -1;
17491}
17492
17493function createLightbox(window, document, $, container) {
17494  var tram = $.tram;
17495  var isArray = Array.isArray;
17496  var namespace = 'w-lightbox';
17497  var prefix = namespace + '-';
17498  var prefixRegex = /(^|\s+)/g; // Array of objects describing items to be displayed.
17499
17500  var items = []; // Index of the currently displayed item.
17501
17502  var currentIndex; // Object holding references to jQuery wrapped nodes.
17503
17504  var $refs; // Instance of Spinner
17505
17506  var spinner;
17507
17508  function lightbox(thing, index) {
17509    items = isArray(thing) ? thing : [thing];
17510
17511    if (!$refs) {
17512      lightbox.build();
17513    }
17514
17515    if (withoutConditionallyHidden(items).length > 1) {
17516      $refs.items = $refs.empty;
17517      items.forEach(function (item) {
17518        var $thumbnail = dom('thumbnail');
17519        var $item = dom('item').append($thumbnail);
17520
17521        if (isConditionallyHidden(item)) {
17522          $item.addClass(CONDITION_INVISIBLE_CLASS);
17523        }
17524
17525        $refs.items = $refs.items.add($item);
17526        loadImage(item.thumbnailUrl || item.url, function ($image) {
17527          if ($image.prop('width') > $image.prop('height')) {
17528            addClass($image, 'wide');
17529          } else {
17530            addClass($image, 'tall');
17531          }
17532
17533          $thumbnail.append(addClass($image, 'thumbnail-image'));
17534        });
17535      });
17536      $refs.strip.empty().append($refs.items);
17537      addClass($refs.content, 'group');
17538    }
17539
17540    tram( // Focus the lightbox to receive keyboard events.
17541    removeClass($refs.lightbox, 'hide').trigger('focus')).add('opacity .3s').start({
17542      opacity: 1
17543    }); // Prevent document from scrolling while lightbox is active.
17544
17545    addClass($refs.html, 'noscroll');
17546    return lightbox.show(index || 0);
17547  }
17548  /**
17549   * Creates the DOM structure required by the lightbox.
17550   */
17551
17552
17553  lightbox.build = function () {
17554    // In case `build` is called more than once.
17555    lightbox.destroy();
17556    $refs = {
17557      html: $(document.documentElement),
17558      // Empty jQuery object can be used to build new ones using `.add`.
17559      empty: $()
17560    };
17561    $refs.arrowLeft = dom('control left inactive');
17562    $refs.arrowRight = dom('control right inactive');
17563    $refs.close = dom('control close');
17564    $refs.spinner = dom('spinner');
17565    $refs.strip = dom('strip');
17566    spinner = new Spinner($refs.spinner, prefixed('hide'));
17567    $refs.content = dom('content').append($refs.spinner, $refs.arrowLeft, $refs.arrowRight, $refs.close);
17568    $refs.container = dom('container').append($refs.content, $refs.strip);
17569    $refs.lightbox = dom('backdrop hide').append($refs.container); // We are delegating events for performance reasons and also
17570    // to not have to reattach handlers when images change.
17571
17572    $refs.strip.on('tap', selector('item'), itemTapHandler);
17573    $refs.content.on('swipe', swipeHandler).on('tap', selector('left'), handlerPrev).on('tap', selector('right'), handlerNext).on('tap', selector('close'), handlerHide).on('tap', selector('image, caption'), handlerNext);
17574    $refs.container.on('tap', selector('view'), handlerHide) // Prevent images from being dragged around.
17575    .on('dragstart', selector('img'), preventDefault);
17576    $refs.lightbox.on('keydown', keyHandler) // IE loses focus to inner nodes without letting us know.
17577    .on('focusin', focusThis); // The `tabindex` attribute is needed to enable non-input elements
17578    // to receive keyboard events.
17579
17580    $(container).append($refs.lightbox.prop('tabIndex', 0));
17581    return lightbox;
17582  };
17583  /**
17584   * Dispose of DOM nodes created by the lightbox.
17585   */
17586
17587
17588  lightbox.destroy = function () {
17589    if (!$refs) {
17590      return;
17591    } // Event handlers are also removed.
17592
17593
17594    removeClass($refs.html, 'noscroll');
17595    $refs.lightbox.remove();
17596    $refs = undefined;
17597  };
17598  /**
17599   * Show a specific item.
17600   */
17601
17602
17603  lightbox.show = function (index) {
17604    // Bail if we are already showing this item.
17605    if (index === currentIndex) {
17606      return;
17607    }
17608
17609    var item = items[index];
17610
17611    if (!item) {
17612      return lightbox.hide();
17613    }
17614
17615    if (isConditionallyHidden(item)) {
17616      if (index < currentIndex) {
17617        var previousVisibleIndex = getPreviousVisibleIndex(index - 1, items);
17618        index = previousVisibleIndex > -1 ? previousVisibleIndex : index;
17619      } else {
17620        var nextVisibleIndex = getNextVisibleIndex(index + 1, items);
17621        index = nextVisibleIndex > -1 ? nextVisibleIndex : index;
17622      }
17623
17624      item = items[index];
17625    }
17626
17627    var previousIndex = currentIndex;
17628    currentIndex = index;
17629    spinner.show(); // For videos, load an empty SVG with the video dimensions to preserve
17630    // the video’s aspect ratio while being responsive.
17631
17632    var url = item.html && svgDataUri(item.width, item.height) || item.url;
17633    loadImage(url, function ($image) {
17634      // Make sure this is the last item requested to be shown since
17635      // images can finish loading in a different order than they were
17636      // requested in.
17637      if (index !== currentIndex) {
17638        return;
17639      }
17640
17641      var $figure = dom('figure', 'figure').append(addClass($image, 'image'));
17642      var $frame = dom('frame').append($figure);
17643      var $newView = dom('view').append($frame);
17644      var $html;
17645      var isIframe;
17646
17647      if (item.html) {
17648        $html = $(item.html);
17649        isIframe = $html.is('iframe');
17650
17651        if (isIframe) {
17652          $html.on('load', transitionToNewView);
17653        }
17654
17655        $figure.append(addClass($html, 'embed'));
17656      }
17657
17658      if (item.caption) {
17659        $figure.append(dom('caption', 'figcaption').text(item.caption));
17660      }
17661
17662      $refs.spinner.before($newView);
17663
17664      if (!isIframe) {
17665        transitionToNewView();
17666      }
17667
17668      function transitionToNewView() {
17669        spinner.hide();
17670
17671        if (index !== currentIndex) {
17672          $newView.remove();
17673          return;
17674        }
17675
17676        toggleClass($refs.arrowLeft, 'inactive', shouldSetArrowLeftInactive(index, items));
17677        toggleClass($refs.arrowRight, 'inactive', shouldSetArrowRightInactive(index, items));
17678
17679        if ($refs.view) {
17680          tram($refs.view).add('opacity .3s').start({
17681            opacity: 0
17682          }).then(remover($refs.view));
17683          tram($newView).add('opacity .3s').add('transform .3s').set({
17684            x: index > previousIndex ? '80px' : '-80px'
17685          }).start({
17686            opacity: 1,
17687            x: 0
17688          });
17689        } else {
17690          $newView.css('opacity', 1);
17691        }
17692
17693        $refs.view = $newView;
17694
17695        if ($refs.items) {
17696          removeClass($refs.items, 'active'); // Mark proper thumbnail as active
17697
17698          var $activeThumb = $refs.items.eq(index);
17699          addClass($activeThumb, 'active'); // Scroll into view
17700
17701          maybeScroll($activeThumb);
17702        }
17703      }
17704    });
17705    return lightbox;
17706  };
17707  /**
17708   * Hides the lightbox.
17709   */
17710
17711
17712  lightbox.hide = function () {
17713    tram($refs.lightbox).add('opacity .3s').start({
17714      opacity: 0
17715    }).then(hideLightbox);
17716    return lightbox;
17717  };
17718
17719  lightbox.prev = function () {
17720    var previousVisibleIndex = getPreviousVisibleIndex(currentIndex - 1, items);
17721
17722    if (previousVisibleIndex > -1) {
17723      lightbox.show(previousVisibleIndex);
17724    }
17725  };
17726
17727  lightbox.next = function () {
17728    var nextVisibleIndex = getNextVisibleIndex(currentIndex + 1, items);
17729
17730    if (nextVisibleIndex > -1) {
17731      lightbox.show(nextVisibleIndex);
17732    }
17733  };
17734
17735  function createHandler(action) {
17736    return function (event) {
17737      // We only care about events triggered directly on the bound selectors.
17738      if (this !== event.target) {
17739        return;
17740      }
17741
17742      event.stopPropagation();
17743      event.preventDefault();
17744      action();
17745    };
17746  }
17747
17748  var handlerPrev = createHandler(lightbox.prev);
17749  var handlerNext = createHandler(lightbox.next);
17750  var handlerHide = createHandler(lightbox.hide);
17751
17752  var itemTapHandler = function itemTapHandler(event) {
17753    var index = $(this).index();
17754    event.preventDefault();
17755    lightbox.show(index);
17756  };
17757
17758  var swipeHandler = function swipeHandler(event, data) {
17759    // Prevent scrolling.
17760    event.preventDefault();
17761
17762    if (data.direction === 'left') {
17763      lightbox.next();
17764    } else if (data.direction === 'right') {
17765      lightbox.prev();
17766    }
17767  };
17768
17769  var focusThis = function focusThis() {
17770    this.focus();
17771  };
17772
17773  function preventDefault(event) {
17774    event.preventDefault();
17775  }
17776
17777  function keyHandler(event) {
17778    var keyCode = event.keyCode; // [esc]
17779
17780    if (keyCode === 27) {
17781      lightbox.hide(); // [◀]
17782    } else if (keyCode === 37) {
17783      lightbox.prev(); // [▶]
17784    } else if (keyCode === 39) {
17785      lightbox.next();
17786    }
17787  }
17788
17789  function hideLightbox() {
17790    // If the lightbox hasn't been destroyed already
17791    if ($refs) {
17792      // Reset strip scroll, otherwise next lightbox opens scrolled to last position
17793      $refs.strip.scrollLeft(0).empty();
17794      removeClass($refs.html, 'noscroll');
17795      addClass($refs.lightbox, 'hide');
17796      $refs.view && $refs.view.remove(); // Reset some stuff
17797
17798      removeClass($refs.content, 'group');
17799      addClass($refs.arrowLeft, 'inactive');
17800      addClass($refs.arrowRight, 'inactive');
17801      currentIndex = $refs.view = undefined;
17802    }
17803  }
17804
17805  function loadImage(url, callback) {
17806    var $image = dom('img', 'img');
17807    $image.one('load', function () {
17808      callback($image);
17809    }); // Start loading image.
17810
17811    $image.attr('src', url);
17812    return $image;
17813  }
17814
17815  function remover($element) {
17816    return function () {
17817      $element.remove();
17818    };
17819  }
17820
17821  function maybeScroll($item) {
17822    var itemLeft = $item.position().left;
17823    var stripScrollLeft = $refs.strip.scrollLeft();
17824    var stripWidth = $refs.strip.width();
17825
17826    if (itemLeft < stripScrollLeft || itemLeft > stripWidth + stripScrollLeft) {
17827      tram($refs.strip).add('scroll-left 500ms').start({
17828        'scroll-left': itemLeft
17829      });
17830    }
17831  }
17832  /**
17833   * Spinner
17834   */
17835
17836
17837  function Spinner($spinner, className, delay) {
17838    this.$element = $spinner;
17839    this.className = className;
17840    this.delay = delay || 200;
17841    this.hide();
17842  }
17843
17844  Spinner.prototype.show = function () {
17845    var spinner = this; // Bail if we are already showing the spinner.
17846
17847    if (spinner.timeoutId) {
17848      return;
17849    }
17850
17851    spinner.timeoutId = setTimeout(function () {
17852      spinner.$element.removeClass(spinner.className);
17853      delete spinner.timeoutId;
17854    }, spinner.delay);
17855  };
17856
17857  Spinner.prototype.hide = function () {
17858    var spinner = this;
17859
17860    if (spinner.timeoutId) {
17861      clearTimeout(spinner.timeoutId);
17862      delete spinner.timeoutId;
17863      return;
17864    }
17865
17866    spinner.$element.addClass(spinner.className);
17867  };
17868
17869  function prefixed(string, isSelector) {
17870    return string.replace(prefixRegex, (isSelector ? ' .' : ' ') + prefix);
17871  }
17872
17873  function selector(string) {
17874    return prefixed(string, true);
17875  }
17876  /**
17877   * jQuery.addClass with auto-prefixing
17878   * @param  {jQuery} Element to add class to
17879   * @param  {string}
17879 Class name that will be prefixed and added to element
17880   * @return {jQuery}
17881   */
17882
17883
17884  function addClass($element, className) {
17885    return $element.addClass(prefixed(className));
17886  }
17887  /**
17888   * jQuery.removeClass with auto-prefixing
17889   * @param  {jQuery} Element to remove class from
17890   * @param  {string} Class name that will be prefixed and removed from element
17891   * @return {jQuery}
17892   */
17893
17894
17895  function removeClass($element, className) {
17896    return $element.removeClass(prefixed(className));
17897  }
17898  /**
17899   * jQuery.toggleClass with auto-prefixing
17900   * @param  {jQuery}  Element where class will be toggled
17901   * @param  {string}  Class name that will be prefixed and toggled
17902   * @param  {boolean} Optional boolean that determines if class will be added or removed
17903   * @return {jQuery}
17904   */
17905
17906
17907  function toggleClass($element, className, shouldAdd) {
17908    return $element.toggleClass(prefixed(className), shouldAdd);
17909  }
17910  /**
17911   * Create a new DOM element wrapped in a jQuery object,
17912   * decorated with our custom methods.
17913   * @param  {string} className
17914   * @param  {string} [tag]
17915   * @return {jQuery}
17916   */
17917
17918
17919  function dom(className, tag) {
17920    return addClass($(document.createElement(tag || 'div')), className);
17921  }
17922
17923  function svgDataUri(width, height) {
17924    var svg = '<svg xmlns="http://www.w3.org/2000/svg" width="' + width + '" height="' + height + '"/>';
17925    return 'data:image/svg+xml;charset=utf-8,' + encodeURI(svg);
17926  } // Compute some dimensions manually for iOS < 8, because of buggy support for VH.
17927  // Also, Android built-in browser does not support viewport units.
17928
17929
17930  (function () {
17931    var ua = window.navigator.userAgent;
17932    var iOSRegex = /(iPhone|iPad|iPod);[^OS]*OS (\d)/;
17933    var iOSMatches = ua.match(iOSRegex);
17934    var android = ua.indexOf('Android ') > -1 && ua.indexOf('Chrome') === -1;
17935
17936    if (!android && (!iOSMatches || iOSMatches[2] > 7)) {
17937      return;
17938    }
17939
17940    var styleNode = document.createElement('style');
17941    document.head.appendChild(styleNode);
17942    window.addEventListener('orientationchange', refresh, true);
17943
17944    function refresh() {
17945      var vh = window.innerHeight;
17946      var vw = window.innerWidth;
17947      var content = '.w-lightbox-content, .w-lightbox-view, .w-lightbox-view:before {' + 'height:' + vh + 'px' + '}' + '.w-lightbox-view {' + 'width:' + vw + 'px' + '}' + '.w-lightbox-group, .w-lightbox-group .w-lightbox-view, .w-lightbox-group .w-lightbox-view:before {' + 'height:' + 0.86 * vh + 'px' + '}' + '.w-lightbox-image {' + 'max-width:' + vw + 'px;' + 'max-height:' + vh + 'px' + '}' + '.w-lightbox-group .w-lightbox-image {' + 'max-height:' + 0.86 * vh + 'px' + '}' + '.w-lightbox-strip {' + 'padding: 0 ' + 0.01 * vh + 'px' + '}' + '.w-lightbox-item {' + 'width:' + 0.1 * vh + 'px;' + 'padding:' + 0.02 * vh + 'px ' + 0.01 * vh + 'px' + '}' + '.w-lightbox-thumbnail {' + 'height:' + 0.1 * vh + 'px' + '}' + '@media (min-width: 768px) {' + '.w-lightbox-content, .w-lightbox-view, .w-lightbox-view:before {' + 'height:' + 0.96 * vh + 'px' + '}' + '.w-lightbox-content {' + 'margin-top:' + 0.02 * vh + 'px' + '}' + '.w-lightbox-group, .w-lightbox-group .w-lightbox-view, .w-lightbox-group .w-lightbox-view:before {' + 'height:' + 0.84 * vh + 'px' + '}' + '.w-lightbox-image {' + 'max-width:' + 0.96 * vw + 'px;' + 'max-height:' + 0.96 * vh + 'px' + '}' + '.w-lightbox-group .w-lightbox-image {' + 'max-width:' + 0.823 * vw + 'px;' + 'max-height:' + 0.84 * vh + 'px' + '}' + '}';
17948      styleNode.textContent = content;
17949    }
17950
17951    refresh();
17952  })();
17953
17954  return lightbox;
17955}
17956
17957Webflow.define('lightbox', module.exports = function ($) {
17958  var api = {};
17959  var inApp = Webflow.env();
17960  var lightbox = createLightbox(window, document, $, inApp ? '#lightbox-mountpoint' : 'body');
17961  var $doc = $(document);
17962  var $lightboxes;
17963  var designer;
17964  var namespace = '.w-lightbox';
17965  var groups; // -----------------------------------
17966  // Module methods
17967
17968  api.ready = api.design = api.preview = init; // -----------------------------------
17969  // Private methods
17970
17971  function init() {
17972    designer = inApp && Webflow.env('design'); // Reset Lightbox
17973
17974    lightbox.destroy(); // Reset groups
17975
17976    groups = {}; // Find all instances on the page
17977
17978    $lightboxes = $doc.find(namespace); // Instantiate all lighboxes
17979
17980    $lightboxes.webflowLightBox();
17981  }
17982
17983  jQuery.fn.extend({
17984    webflowLightBox: function webflowLightBox() {
17985      var $el = this;
17986      $.each($el, function (i, el) {
17987        // Store state in data
17988        var data = $.data(el, namespace);
17989
17990        if (!data) {
17991          data = $.data(el, namespace, {
17992            el: $(el),
17993            mode: 'images',
17994            images: [],
17995            embed: ''
17996          });
17997        } // Remove old events
17998
17999
18000        data.el.off(namespace); // Set config from json script tag
18001
18002        configure(data); // Add events based on mode
18003
18004        if (designer) {
18005          data.el.on('setting' + namespace, configure.bind(null, data));
18006        } else {
18007          data.el.on('tap' + namespace, tapHandler(data)) // Prevent page scrolling to top when clicking on lightbox triggers.
18008          .on('click' + namespace, function (e) {
18009            e.preventDefault();
18010          });
18011        }
18012      });
18013    }
18014  });
18015
18016  function configure(data) {
18017    var json = data.el.children('.w-json').html();
18018    var groupName;
18019    var groupItems;
18020
18021    if (!json) {
18022      data.items = [];
18023      return;
18024    }
18025
18026    try {
18027      json = JSON.parse(json);
18028    } catch (e) {
18029      console.error('Malformed lightbox JSON configuration.', e);
18030    }
18031
18032    supportOldLightboxJson(json);
18033    json.items.forEach(function (item) {
18034      item.$el = data.el;
18035    });
18036    groupName = json.group;
18037
18038    if (groupName) {
18039      groupItems = groups[groupName];
18040
18041      if (!groupItems) {
18042        groupItems = groups[groupName] = [];
18043      }
18044
18045      data.items = groupItems;
18046
18047      if (json.items.length) {
18048        data.index = groupItems.length;
18049        groupItems.push.apply(groupItems, json.items);
18050      }
18051    } else {
18052      data.items = json.items;
18053      data.index = 0;
18054    }
18055  }
18056
18057  function tapHandler(data) {
18058    return function () {
18059      data.items.length && lightbox(data.items, data.index || 0);
18060    };
18061  }
18062
18063  function supportOldLightboxJson(data) {
18064    if (data.images) {
18065      data.images.forEach(function (item) {
18066        item.type = 'image';
18067      });
18068      data.items = data.images;
18069    }
18070
18071    if (data.embed) {
18072      data.embed.type = 'video';
18073      data.items = [data.embed];
18074    }
18075
18076    if (data.groupId) {
18077      data.group = data.groupId;
18078    }
18079  } // Export module
18080
18081
18082  return api;
18083});
18084
18085/***/ }),
18086/* 262 */
18087/***/ (function(module, exports, __webpack_require__) {
18088
18089"use strict";
18090 // @wf-will-never-add-flow-to-this-file
18091
18092/* eslint-disable */
18093
18094/**
18095 * Webflow: Navbar component
18096 */
18097
18098var Webflow = __webpack_require__(2);
18099
18100var IXEvents = __webpack_require__(28);
18101
18102Webflow.define('navbar', module.exports = function ($, _) {
18103  var api = {};
18104  var tram = $.tram;
18105  var $win = $(window);
18106  var $doc = $(document);
18107  var $body;
18108  var $navbars;
18109  var designer;
18110  var inEditor;
18111  var inApp = Webflow.env();
18112  var overlay = '<div class="w-nav-overlay" data-wf-ignore />';
18113  var namespace = '.w-nav';
18114  var buttonOpen = 'w--open';
18115  var menuOpen = 'w--nav-menu-open';
18116  var linkOpen = 'w--nav-link-open';
18117  var ix = IXEvents.triggers;
18118  var menuSibling = $(); // -----------------------------------
18119  // Module methods
18120
18121  api.ready = api.design = api.preview = init;
18122
18123  api.destroy = function () {
18124    menuSibling = $();
18125    removeListeners();
18126
18127    if ($navbars && $navbars.length) {
18128      $navbars.each(teardown);
18129    }
18130  }; // -----------------------------------
18131  // Private methods
18132
18133
18134  function init() {
18135    designer = inApp && Webflow.env('design');
18136    inEditor = Webflow.env('editor');
18137    $body = $(document.body); // Find all instances on the page
18138
18139    $navbars = $doc.find(namespace);
18140
18141    if (!$navbars.length) {
18142      return;
18143    }
18144
18145    $navbars.each(build); // Wire events
18146
18147    removeListeners();
18148    addListeners();
18149  }
18150
18151  function removeListeners() {
18152    Webflow.resize.off(resizeAll);
18153  }
18154
18155  function addListeners() {
18156    Webflow.resize.on(resizeAll);
18157  }
18158
18159  function resizeAll() {
18160    $navbars.each(resize);
18161  }
18162
18163  function build(i, el) {
18164    var $el = $(el); // Store state in data
18165
18166    var data = $.data(el, namespace);
18167
18168    if (!data) {
18169      data = $.data(el, namespace, {
18170        open: false,
18171        el: $el,
18172        config: {}
18173      });
18174    }
18175
18176    data.menu = $el.find('.w-nav-menu');
18177    data.links = data.menu.find('.w-nav-link');
18178    data.dropdowns = data.menu.find('.w-dropdown');
18179    data.button = $el.find('.w-nav-button');
18180    data.container = $el.find('.w-container');
18181    data.outside = outside(data); // Remove old events
18182
18183    data.el.off(namespace);
18184    data.button.off(namespace);
18185    data.menu.off(namespace); // Set config from data attributes
18186
18187    configure(data); // Add events based on mode
18188
18189    if (designer) {
18190      removeOverlay(data);
18191      data.el.on('setting' + namespace, handler(data));
18192    } else {
18193      addOverlay(data);
18194      data.button.on('tap' + namespace, toggle(data));
18195      data.menu.on('click' + namespace, 'a', navigate(data));
18196    } // Trigger initial resize
18197
18198
18199    resize(i, el);
18200  }
18201
18202  function teardown(i, el) {
18203    var data = $.data(el, namespace);
18204
18205    if (data) {
18206      removeOverlay(data);
18207      $.removeData(el, namespace);
18208    }
18209  }
18210
18211  function removeOverlay(data) {
18212    if (!data.overlay) {
18213      return;
18214    }
18215
18216    close(data, true);
18217    data.overlay.remove();
18218    data.overlay = null;
18219  }
18220
18221  function addOverlay(data) {
18222    if (data.overlay) {
18223      return;
18224    }
18225
18226    data.overlay = $(overlay).appendTo(data.el);
18227    data.parent = data.menu.parent();
18228    close(data, true);
18229  }
18230
18231  function configure(data) {
18232    var config = {};
18233    var old = data.config || {}; // Set config options from data attributes
18234
18235    var animation = config.animation = data.el.attr('data-animation') || 'default';
18236    config.animOver = /^over/.test(animation);
18237    config.animDirect = /left$/.test(animation) ? -1 : 1; // Re-open menu if the animation type changed
18238
18239    if (old.animation !== animation) {
18240      data.open && _.defer(reopen, data);
18241    }
18242
18243    config.easing = data.el.attr('data-easing') || 'ease';
18244    config.easing2 = data.el.attr('data-easing2') || 'ease';
18245    var duration = data.el.attr('data-duration');
18246    config.duration = duration != null ? Number(duration) : 400;
18247    config.docHeight = data.el.attr('data-doc-height'); // Store config in data
18248
18249    data.config = config;
18250  }
18251
18252  function handler(data) {
18253    return function (evt, options) {
18254      options = options || {};
18255      var winWidth = $win.width();
18256      configure(data);
18257      options.open === true && open(data, true);
18258      options.open === false && close(data, true); // Reopen if media query changed after setting
18259
18260      data.open && _.defer(function () {
18261        if (winWidth !== $win.width()) {
18262          reopen(data);
18263        }
18264      });
18265    };
18266  }
18267
18268  function reopen(data) {
18269    if (!data.open) {
18270      return;
18271    }
18272
18273    close(data, true);
18274    open(data, true);
18275  }
18276
18277  function toggle(data) {
18278    // Debounce toggle to wait for accurate open state
18279    return _.debounce(function () {
18280      data.open ? close(data) : open(data);
18281    });
18282  }
18283
18284  function navigate(data) {
18285    return function (evt) {
18286      var link = $(this);
18287      var href = link.attr('href'); // Avoid late clicks on touch devices
18288
18289      if (!Webflow.validClick(evt.currentTarget)) {
18290        evt.preventDefault();
18291        return;
18292      } // Close when navigating to an in-page anchor
18293
18294
18295      if (href && href.indexOf('#') === 0 && data.open) {
18296        close(data);
18297      }
18298    };
18299  }
18300
18301  function outside(data) {
18302    // Unbind previous tap handler if it exists
18303    if (data.outside) {
18304      $doc.off('tap' + namespace, data.outside);
18305    }
18306
18307    return function (evt) {
18308      var $target = $(evt.target); // Ignore clicks on Editor overlay UI
18309
18310      if (inEditor && $target.closest('.w-editor-bem-EditorOverlay').length) {
18311        return;
18312      } // Close menu when tapped outside, debounced to wait for state
18313
18314
18315      outsideDebounced(data, $target);
18316    };
18317  }
18318
18319  var outsideDebounced = _.debounce(function (data, $target) {
18320    if (!data.open) {
18321      return;
18322    }
18323
18324    var menu = $target.closest('.w-nav-menu');
18325
18326    if (!data.menu.is(menu)) {
18327      close(data);
18328    }
18329  });
18330
18331  function resize(i, el) {
18332    var data = $.data(el, namespace);
18332 // Check for collapsed state based on button display
18333
18334    var collapsed = data.collapsed = data.button.css('display') !== 'none'; // Close menu if button is no longer visible (and not in designer)
18335
18336    if (data.open && !collapsed && !designer) {
18337      close(data, true);
18338    } // Set max-width of links + dropdowns to match container
18339
18340
18341    if (data.container.length) {
18342      var updateEachMax = updateMax(data);
18343      data.links.each(updateEachMax);
18344      data.dropdowns.each(updateEachMax);
18345    } // If currently open, update height to match body
18346
18347
18348    if (data.open) {
18349      setOverlayHeight(data);
18350    }
18351  }
18352
18353  var maxWidth = 'max-width';
18354
18355  function updateMax(data) {
18356    // Set max-width of each element to match container
18357    var containMax = data.container.css(maxWidth);
18358
18359    if (containMax === 'none') {
18360      containMax = '';
18361    }
18362
18363    return function (i, link) {
18364      link = $(link);
18365      link.css(maxWidth, ''); // Don't set the max-width if an upstream value exists
18366
18367      if (link.css(maxWidth) === 'none') {
18368        link.css(maxWidth, containMax);
18369      }
18370    };
18371  }
18372
18373  function open(data, immediate) {
18374    if (data.open) {
18375      return;
18376    }
18377
18378    data.open = true;
18379    data.menu.addClass(menuOpen);
18380    data.links.addClass(linkOpen);
18381    data.button.addClass(buttonOpen);
18382    var config = data.config;
18383    var animation = config.animation;
18384
18385    if (animation === 'none' || !tram.support.transform) {
18386      immediate = true;
18387    }
18388
18389    var bodyHeight = setOverlayHeight(data);
18390    var menuHeight = data.menu.outerHeight(true);
18391    var menuWidth = data.menu.outerWidth(true);
18392    var navHeight = data.el.height();
18393    var navbarEl = data.el[0];
18394    resize(0, navbarEl);
18395    ix.intro(0, navbarEl);
18396    Webflow.redraw.up(); // Listen for tap outside events
18397
18398    if (!designer) {
18399      $doc.on('tap' + namespace, data.outside);
18400    } // No transition for immediate
18401
18402
18403    if (immediate) {
18404      return;
18405    }
18406
18407    var transConfig = 'transform ' + config.duration + 'ms ' + config.easing; // Add menu to overlay
18408
18409    if (data.overlay) {
18410      menuSibling = data.menu.prev();
18411      data.overlay.show().append(data.menu);
18412    } // Over left/right
18413
18414
18415    if (config.animOver) {
18416      tram(data.menu).add(transConfig).set({
18417        x: config.animDirect * menuWidth,
18418        height: bodyHeight
18419      }).start({
18420        x: 0
18421      });
18422      data.overlay && data.overlay.width(menuWidth);
18423      return;
18424    } // Drop Down
18425
18426
18427    var offsetY = navHeight + menuHeight;
18428    tram(data.menu).add(transConfig).set({
18429      y: -offsetY
18430    }).start({
18431      y: 0
18432    });
18433  }
18434
18435  function setOverlayHeight(data) {
18436    var config = data.config;
18437    var bodyHeight = config.docHeight ? $doc.height() : $body.height();
18438
18439    if (config.animOver) {
18440      data.menu.height(bodyHeight);
18441    } else if (data.el.css('position') !== 'fixed') {
18442      bodyHeight -= data.el.height();
18443    }
18444
18445    data.overlay && data.overlay.height(bodyHeight);
18446    return bodyHeight;
18447  }
18448
18449  function close(data, immediate) {
18450    if (!data.open) {
18451      return;
18452    }
18453
18454    data.open = false;
18455    data.button.removeClass(buttonOpen);
18456    var config = data.config;
18457
18458    if (config.animation === 'none' || !tram.support.transform || config.duration <= 0) {
18459      immediate = true;
18460    }
18461
18462    ix.outro(0, data.el[0]); // Stop listening for tap outside events
18463
18464    $doc.off('tap' + namespace, data.outside);
18465
18466    if (immediate) {
18467      tram(data.menu).stop();
18468      complete();
18469      return;
18470    }
18471
18472    var transConfig = 'transform ' + config.duration + 'ms ' + config.easing2;
18473    var menuHeight = data.menu.outerHeight(true);
18474    var menuWidth = data.menu.outerWidth(true);
18475    var navHeight = data.el.height(); // Over left/right
18476
18477    if (config.animOver) {
18478      tram(data.menu).add(transConfig).start({
18479        x: menuWidth * config.animDirect
18480      }).then(complete);
18481      return;
18482    } // Drop Down
18483
18484
18485    var offsetY = navHeight + menuHeight;
18486    tram(data.menu).add(transConfig).start({
18487      y: -offsetY
18488    }).then(complete);
18489
18490    function complete() {
18491      data.menu.height('');
18492      tram(data.menu).set({
18493        x: 0,
18494        y: 0
18495      });
18496      data.menu.removeClass(menuOpen);
18497      data.links.removeClass(linkOpen);
18498
18499      if (data.overlay && data.overlay.children().length) {
18500        // Move menu back to parent at the original location
18501        menuSibling.length ? data.menu.insertAfter(menuSibling) : data.menu.prependTo(data.parent);
18502        data.overlay.attr('style', '').hide();
18503      } // Trigger event so other components can hook in (dropdown)
18504
18505
18506      data.el.triggerHandler('w-close');
18507    }
18508  } // Export module
18509
18510
18511  return api;
18512});
18513
18514/***/ }),
18515/* 263 */
18516/***/ (function(module, exports, __webpack_require__) {
18517
18518"use strict";
18519 // @wf-will-never-add-flow-to-this-file
18520
18521/* eslint-disable */
18522
18523/**
18524 * Webflow: Tabs component
18525 */
18526
18527var Webflow = __webpack_require__(2);
18528
18529var IXEvents = __webpack_require__(28);
18530
18531Webflow.define('tabs', module.exports = function ($) {
18532  var api = {};
18533  var tram = $.tram;
18534  var $doc = $(document);
18535  var $tabs;
18536  var design;
18537  var env = Webflow.env;
18538  var safari = env.safari;
18539  var inApp = env();
18540  var tabAttr = 'data-w-tab';
18541  var namespace = '.w-tabs';
18542  var linkCurrent = 'w--current';
18543  var tabActive = 'w--tab-active';
18544  var ix = IXEvents.triggers;
18545  var inRedraw = false; // -----------------------------------
18546  // Module methods
18547
18548  api.ready = api.design = api.preview = init;
18549
18550  api.redraw = function () {
18551    inRedraw = true;
18552    init();
18553    inRedraw = false;
18554  };
18555
18556  api.destroy = function () {
18557    $tabs = $doc.find(namespace);
18558
18559    if (!$tabs.length) {
18560      return;
18561    }
18562
18563    $tabs.each(resetIX);
18564    removeListeners();
18565  }; // -----------------------------------
18566  // Private methods
18567
18568
18569  function init() {
18570    design = inApp && Webflow.env('design'); // Find all instances on the page
18571
18572    $tabs = $doc.find(namespace);
18573
18574    if (!$tabs.length) {
18575      return;
18576    }
18577
18578    $tabs.each(build);
18579
18580    if (Webflow.env('preview') && !inRedraw) {
18581      $tabs.each(resetIX);
18582    }
18583
18584    removeListeners();
18585    addListeners();
18586  }
18587
18588  function removeListeners() {
18589    Webflow.redraw.off(api.redraw);
18590  }
18591
18592  function addListeners() {
18593    Webflow.redraw.on(api.redraw);
18594  }
18595
18596  function resetIX(i, el) {
18597    var data = $.data(el, namespace);
18598
18599    if (!data) {
18600      return;
18601    }
18602
18603    data.links && data.links.each(ix.reset);
18604    data.panes && data.panes.each(ix.reset);
18605  }
18606
18607  function build(i, el) {
18608    var $el = $(el); // Store state in data
18609
18610    var data = $.data(el, namespace);
18611
18612    if (!data) {
18613      data = $.data(el, namespace, {
18614        el: $el,
18615        config: {}
18616      });
18617    }
18618
18619    data.current = null;
18620    data.menu = $el.children('.w-tab-menu');
18621    data.links = data.menu.children('.w-tab-link');
18622    data.content = $el.children('.w-tab-content');
18623    data.panes = data.content.children('.w-tab-pane'); // Remove old events
18624
18625    data.el.off(namespace);
18626    data.links.off(namespace); // Set config from data attributes
18627
18628    configure(data); // Wire up events when not in design mode
18629
18630    if (!design) {
18631      data.links.on('click' + namespace, linkSelect(data)); // Trigger first intro event from current tab
18632
18633      var $link = data.links.filter('.' + linkCurrent);
18634      var tab = $link.attr(tabAttr);
18635      tab && changeTab(data, {
18636        tab: tab,
18637        immediate: true
18638      });
18639    }
18640  }
18641
18642  function configure(data) {
18643    var config = {}; // Set config options from data attributes
18644
18645    config.easing = data.el.attr('data-easing') || 'ease';
18646    var intro = parseInt(data.el.attr('data-duration-in'), 10);
18647    intro = config.intro = intro === intro ? intro : 0;
18648    var outro = parseInt(data.el.attr('data-duration-out'), 10);
18649    outro = config.outro = outro === outro ? outro : 0;
18650    config.immediate = !intro && !outro; // Store config in data
18651
18652    data.config = config;
18653  }
18654
18655  function linkSelect(data) {
18656    return function (evt) {
18657      var tab = evt.currentTarget.getAttribute(tabAttr);
18658      tab && changeTab(data, {
18659        tab: tab
18660      });
18661    };
18662  }
18663
18664  function changeTab(data, options) {
18665    options = options || {};
18666    var config = data.config;
18667    var easing = config.easing;
18668    var tab = options.tab; // Don't select the same tab twice
18669
18670    if (tab === data.current) {
18671      return;
18672    }
18673
18674    data.current = tab; // Select the current link
18675
18676    data.links.each(function (i, el) {
18677      var $el = $(el);
18678
18679      if (el.getAttribute(tabAttr) === tab) {
18680        $el.addClass(linkCurrent).each(ix.intro);
18681      } else if ($el.hasClass(linkCurrent)) {
18682        $el.removeClass(linkCurrent).each(ix.outro);
18683      }
18684    }); // Find the new tab panes and keep track of previous
18685
18686    var targets = [];
18687    var previous = [];
18688    data.panes.each(function (i, el) {
18689      var $el = $(el);
18690
18691      if (el.getAttribute(tabAttr) === tab) {
18692        targets.push(el);
18693      } else if ($el.hasClass(tabActive)) {
18694        previous.push(el);
18695      }
18696    });
18697    var $targets = $(targets);
18698    var $previous = $(previous); // Switch tabs immediately and bypass transitions
18699
18700    if (options.immediate || config.immediate) {
18701      $targets.addClass(tabActive).each(ix.intro);
18702      $previous.removeClass(tabActive); // Redraw to benefit components in the hidden tab pane
18703      // But only if not currently in the middle of a redraw
18704
18705      if (!inRedraw) {
18706        Webflow.redraw.up();
18707      }
18708
18709      return;
18710    } // Fade out the currently active tab before intro
18711
18712
18713    if ($previous.length && config.outro) {
18714      $previous.each(ix.outro);
18715      tram($previous).add('opacity ' + config.outro + 'ms ' + easing, {
18716        fallback: safari
18717      }).start({
18718        opacity: 0
18719      }).then(intro);
18720    } else {
18721      // Skip the outro and play intro
18722      intro();
18723    } // Fade in the new target
18724
18725
18726    function intro() {
18727      // Clear previous active class + styles touched by tram
18728      // We cannot remove the whole inline style because it could be dynamically bound
18729      $previous.removeClass(tabActive).css({
18730        opacity: '',
18731        transition: '',
18732        transform: '',
18733        width: '',
18734        height: ''
18735      }); // Add active class to new target
18736
18737      $targets.addClass(tabActive).each(ix.intro);
18738      Webflow.redraw.up(); // Set opacity immediately if intro is zero
18739
18740      if (!config.intro) {
18741        return tram($targets).set({
18742          opacity: 1
18743        });
18744      } // Otherwise fade in opacity
18745
18746
18747      tram($targets).set({
18748        opacity: 0
18749      }).redraw().add('opacity ' + config.intro + 'ms ' + easing, {
18750        fallback: safari
18751      }).start({
18752        opacity: 1
18753      });
18754    }
18755  } // Export module
18756
18757
18758  return api;
18759});
18760
18761/***/ })
18762/******/ ]);/**
18763 * ----------------------------------------------------------------------
18764 * Webflow: Interactions: Init
18765 */
18766Webflow.require('ix').init([
18767  {"slug":"shortend","name":"Shortend","value":{"style":{},"triggers":[{"type":"navbar","selector":".line-1","descend":true,"preserve3d":true,"stepsA":[{"width":"16px","transition":"width 350ms ease-in-out-back 0, transform 350ms ease-in-out-back 0","x":"-8px","y":"2px","z":"0px","rotateX":"0deg","rotateY":"0deg","rotateZ":"45deg"}],"stepsB":[{"width":"35px","transition":"transform 200 ease-in-out-back 0, width 200 ease 0","x":"0px","y":"0px","z":"0px","rotateX":"0deg","rotateY":"0deg","rotateZ":"0deg"}]},{"type":"navbar","selector":".line-2","descend":true,"preserve3d":true,"stepsA":[{"transition":"transform 350ms ease-in-out-back 0","rotateX":"0deg","rotateY":"0deg","rotateZ":"-45deg"}],"stepsB":[{"width":"35px","transition":"transform 200 ease-in-out-back 0, width 200 ease 0","x":"0px","y":"0px","z":"0px","rotateX":"0deg","rotateY":"0deg","rotateZ":"0deg"}]},{"type":"navbar","selector":".line-3","descend":true,"preserve3d":true,"stepsA":[{"width":"16px","transition":"width 350ms ease-in-out-back 0, transform 350ms ease-in-out-back 0","x":"8px","y":"-2px","z":"0px","rotateX":"0deg","rotateY":"0deg","rotateZ":"45deg"}],"stepsB":[{"width":"35px","transition":"transform 200 ease-in-out-back 0, width 200 ease 0","x":"0px","y":"0px","z":"0px","rotateX":"0deg","rotateY":"0deg","rotateZ":"0deg"}]}]}}
18768]);
18769/**
18770 * ----------------------------------------------------------------------
18771 * Webflow: Interactions 2.0: Init
18772 */
18773Webflow.require('ix2').init(
18774{"events":{"e":{"id":"e","eventTypeId":"SCROLLING_IN_VIEW","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d2d514fb78ea84593838a4b|5d12e6080779136d9b48d3af"},"config":[{"continuousParameterGroupId":"a-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1561533319812},"e-2":{"id":"e-2","eventTypeId":"MOUSE_OVER","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-6","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-3"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d397a284f1ba6e94d23b230|b0280b78-1f57-2066-0db2-529dc47ef669"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564382412593},"e-3":{"id":"e-3","eventTypeId":"MOUSE_OUT","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-7","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-2"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d397a284f1ba6e94d23b230|b0280b78-1f57-2066-0db2-529dc47ef669"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564382412594},"e-4":{"id":"e-4","eventTypeId":"MOUSE_OVER","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-6","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-5"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d397a284f1ba6e94d23b230|cccf36fd-9a1b-cd9a-835b-0a991b2724ce"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564382847797},"e-5":{"id":"e-5","eventTypeId":"MOUSE_OUT","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-7","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-4"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d397a284f1ba6e94d23b230|cccf36fd-9a1b-cd9a-835b-0a991b2724ce"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564382847797},"e-6":{"id":"e-6","eventTypeId":"MOUSE_OVER","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-6","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-7"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d397a284f1ba6e94d23b230|69f4a754-9915-8622-80d5-f9a13873d518"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564382874966},"e-7":{"id":"e-7","eventTypeId":"MOUSE_OUT","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-7","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-6"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d397a284f1ba6e94d23b230|69f4a754-9915-8622-80d5-f9a13873d518"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564382875014},"e-8":{"id":"e-8","eventTypeId":"MOUSE_OVER","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-6","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-9"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d397a284f1ba6e94d23b230|83f7574f-158e-b66b-8b03-be8f194f2763"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564382888329}
18774,"e-9":{"id":"e-9","eventTypeId":"MOUSE_OUT","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-7","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-8"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d397a284f1ba6e94d23b230|83f7574f-158e-b66b-8b03-be8f194f2763"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564382888375},"e-10":{"id":"e-10","eventTypeId":"MOUSE_OVER","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-6","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-11"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d397a284f1ba6e94d23b230|d433e0fb-a16f-cc35-6552-417c648e687c"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564382902279},"e-11":{"id":"e-11","eventTypeId":"MOUSE_OUT","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-7","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-10"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d397a284f1ba6e94d23b230|d433e0fb-a16f-cc35-6
18774552-417c648e687c"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564382902280},"e-12":{"id":"e-12","eventTypeId":"MOUSE_OVER","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-6","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-13"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d397a284f1ba6e94d23b230|a966e585-5668-40d9-1c85-b8edd2484693"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564382916381},"e-13":{"id":"e-13","eventTypeId":"MOUSE_OUT","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-7","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-12"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d397a284f1ba6e94d23b230|a966e585-5668-40d9-1c85-b8edd2484693"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564382916427},"e-14":{"id":"e-14","eventTypeId":"MOUSE_OVER","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-10","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-15"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d43d9d7c27b0235c82645df|4e062a7c-c373-ab75-363a-0e9c12504f10"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564728579666},"e-15":{"id":"e-15","eventTypeId":"MOUSE_OUT","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-11","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-14"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d43d9d7c27b0235c82645df|4e062a7c-c373-ab75-363a-0e9c12504f10"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564728579667},"e-16":{"id":"e-16","eventTypeId":"MOUSE_OVER","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-10","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-17"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d43d9d7c27b0235c82645df|6ab5a0cf-56aa-26b5-52fa-6380ff538abb"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564729570725},"e-17":{"id":"e-17","eventTypeId":"MOUSE_OUT","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-11","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-16"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d43d9d7c27b0235c82645df|6ab5a0cf-56aa-26b5-52fa-6380ff538abb"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564729570725},"e-18":{"id":"e-18","eventTypeId":"MOUSE_OVER","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-10","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-19"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d43d9d7c27b0235c82645df|c41fefba-a572-d23e-0f2a-f2b952c8bb65"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564729571309},"e-19":{"id":"e-19","eventTypeId":"MOUSE_OUT","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-11","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-18"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d43d9d7c27b0235c82645df|c41fefba-a572-d23e-0f2a-f2b952c8bb65"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564729571309},"e-20":{"id":"e-20","eventTypeId":"MOUSE_OVER","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-12","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-21"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d3ff036a2938f7448b0a555|f8c47c01-6d4e-7b7b-322c-cca2dfc6e299"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564975532882},"e-21":{"id":"e-21","eventTypeId":"MOUSE_OUT","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-13","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-20"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d3ff036a2938f7448b0a555|f8c47c01-6d4e-7b7b-322c-cca2dfc6e299"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564975532884},"e-26":{"id":"e-26","eventTypeId":"MOUSE_OVER","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-12","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-27"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d3ff036a2938f7448b0a555|01e949b2-409e-1870-8862-90264208d62e"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564976004228},"e-27":{"id":"e-27","eventTypeId":"MOUSE_OUT","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-13","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-26"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d3ff036a2938f7448b0a555|01e949b2-409e-1870-8862-90264208d62e"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564976004230},"e-28":{"id":"e-28","eventTypeId":"MOUSE_OVER","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-12","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-29"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d3ff036a2938f7448b0a555|43327bee-233f-476f-54d2-2c44ace88e2c"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564976021001},"e-29":{"id":"e-29","eventTypeId":"MOUSE_OUT","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-13","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-28"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d3ff036a2938f7448b0a555|43327bee-233f-476f-54d2-2c44ace88e2c"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564976021056},"e-30":{"id":"e-30","eventTypeId":"MOUSE_OVER","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-12","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-31"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d3ff036a2938f7448b0a555|bdaacec2-5347-9d41-33fd-d280fa0b4a9d"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564976038501},"e-31":{"id":"e-31","eventTypeId":"MOUSE_OUT","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-13","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-30"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d3ff036a2938f7448b0a555|bdaacec2-5347-9d41-33fd-d280fa0b4a9d"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564976038549},"e-32":{"id":"e-32","eventTypeId":"MOUSE_OVER","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-12","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-33"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d3ff036a2938f7448b0a555|0835a9a2-93cc-931f-398a-18a5a07f1c3f"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564976062200},"e-33":{"id":"e-33","eventTypeId":"MOUSE_OUT","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-13","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-32"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d3ff036a2938f7448b0a555|0835a9a2-93cc-931f-398a-18a5a07f1c3f"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564976062202},"e-34":{"id":"e-34","eventTypeId":"MOUSE_OVER","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-12","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-35"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d3ff036a2938f7448b0a555|36e87349-b2c2-afb3-8194-8230695a2f1c"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564976083676},"e-35":{"id":"e-35","eventTypeId":"MOUSE_OUT","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-13","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-34"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d3ff036a2938f7448b0a555|36e87349-b2c2-afb3-8194-8230695a2f1c"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564976083678}},"actionLists":{"a":{"id":"a","title":"Img1","continuousParameterGroups":[{"id":"a-p","type":"SCROLL_PROGRESS","parameterLabel":"Scroll","continuousActionGroups":[{"keyframe":0,"actionItems":[{"id":"a-n","actionTypeId":"TRANSFORM_SCALE","config":{"delay":0,"easing":"","duration":500,"target":{"useEventTarget":true,"id":"5d2d514fb78ea84593838a4b|d5026328-62c9-4597-b232-f53b2848b10b"},"xValue":1,"yValue":1,"locked":true}}]},{"keyframe":100,"actionItems":[{"id":"a-n-2","actionTypeId":"TRANSFORM_SCALE","config":{"delay":0,"easing":"","duration":500,"target":{"useEventTarget":true,"id":"5d2d514fb78ea84593838a4b|d5026328-62c9-4597-b232-f53b2848b10b"},"xValue":1.2,"yValue":1.2,"locked":true}}]}]}],"createdOn":1561533411945}
18774,"a-6":{"id":"a-6","title":"Thumbnail Image Hover","actionItemGroups":[{"actionItems":[{"id":"a-6-n","actionTypeId":"TRANSFORM_SCALE","config":{"delay":0,"easing":"","duration":500,"target":{"useEventTarget":"CHILDREN","selector":".work-image-content","selectorGuids":["4ce49c8d-2c31-298e-fa6f-93a3167a63a1"]},"xValue":0,"yValue":0,"locked":true}}]},{"actionItems":[{"id":"a-6-n-2","actionTypeId":"TRANSFORM_SCALE","config":{"delay":0,"easing":"outExpo","duration":500,"target":{"useEventTarget":"CHILDREN","selector":".work-image-content","selectorGuids":["4ce49c8d-2c31-298e-fa6f-93a3167a63a1"]},"xValue":1,"yValue":1,"locked":true}}]}],"createdOn":1564381701958,"useFirstGroupAsInitialState":true},"a-7":{"id":"a-7","title":"Image Thumbnail Hover Out","actionItemGroups":[{"actionItems":[{"id":"a-7-n","actionTypeId":"TRANSFORM_SCALE","config":{"delay":0,"easing":"outExpo","duration":150,"target":{"useEventTarget":"CHILDREN","selector":".work-image-content","selectorGuids":["4ce49c8d-2c31-298e-fa6f-93a3167a63a1"]},"xValue":0,"yValue":0,"locked":true}}]}],"createdOn":1564382126029,"useFirstGroupAsInitialState":false},"a-10":{"id":"a-10","title":"Scroll Thumbnail","actionItemGroups":[{"actionItems":[{"id":"a-10-n","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"","duration":500,"target":{"useEventTarget":true,"id":"5d43d9d7c27b0235c82645df|4e062a7c-c373-ab75-363a-0e9c12504f10"},"yValue":0,"xUnit":"PX","yUnit":"PX","zUnit":"PX"}}]},{"actionItems":[{"id":"a-10-n-2","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"easeInOut","duration":4000,"target":{"useEventTarget":true,"id":"5d43d9d7c27b0235c82645df|4e062a7c-c373-ab75-363a-0e9c12504f10"},"yValue":-78,"xUnit":"PX","yUnit":"%","zUnit":"PX"}}]}],"createdOn":1564728586363,"useFirstGroupAsInitialState":true},"a-11":{"id":"a-11","title":"Scroll Thumbnail Normal","actionItemGroups":[{"actionItems":[{"id":"a-11-n","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"","duration":2000,"target":{"useEventTarget":true,"id":"5d43d9d7c27b0235c82645df|4e062a7c-c373-ab75-363a-0e9c12504f10"},"yValue":0,"xUnit":"PX","yUnit":"%","zUnit":"PX"}}]}],"createdOn":1564728720809,"useFirstGroupAsInitialState":false},"a-12":{"id":"a-12","title":"Slide Down","actionItemGroups":[{"actionItems":[{"id":"a-12-n","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"","duration":500,"target":{"useEventTarget":"CHILDREN","selector":".project-item-text","selectorGuids":["76fe73cc-8a91-b3bb-3876-040a205eb9ce"]},"yValue":-100,"xUnit":"PX","yUnit":"%","zUnit":"PX"}},{"id":"a-12-n-4","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"","duration":0,"target":{"useEventTarget":"CHILDREN","selector":".project-item-text","selectorGuids":["76fe73cc-8a91-b3bb-3876-040a205eb9ce"]},"value":0,"unit":""}}]},{"actionItems":[{"id":"a-12-n-2","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"outExpo","duration":500,"target":{"useEventTarget":"CHILDREN","selector":".project-item-text","selectorGuids":["76fe73cc-8a91-b3bb-3876-040a205eb9ce"]},"yValue":0,"xUnit":"PX","yUnit":"%","zUnit":"PX"}},{"id":"a-12-n-3","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"","duration":100,"target":{"useEventTarget":"CHILDREN","selector":".project-item-text","selectorGuids":["76fe73cc-8a91-b3bb-3876-040a205eb9ce"]},"value":1,"unit":""}}]}],"createdOn":1564975539579,"useFirstGroupAsInitialState":true},"a-13":{"id":"a-13","title":"Fadeout","actionItemGroups":[{"actionItems":[{"id":"a-13-n","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"easeInOut","duration":500,"target":{"useEventTarget":"CHILDREN","selector":".project-item-text","selectorGuids":["76fe73cc-8a91-b3bb-3876-040a205eb9ce"]},"value":0,"unit":""}}]},{"actionItems":[{"id":"a-13-n-2","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"","duration":100,"target":{"useEventTarget":"CHILDREN","selector":".project-item-text","selectorGuids":["76fe73cc-8a91-b3bb-3876-040a205eb9ce"]},"yValue":-100,"xUnit":"PX","yUnit":"%","zUnit":"PX"}}]}],"createdOn":1564975628721,"useFirstGroupAsInitialState":false}},"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}]}}
18775);

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.