(function (global, factory) {
	typeof exports === 'object' && typeof module !== 'undefined' ? factory() :
	typeof define === 'function' && define.amd ? define(factory) :
	(factory());
}(this, (function () { 'use strict';

	function unwrapExports (x) {
		return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
	}

	function createCommonjsModule(fn, module) {
		return module = { exports: {} }, fn(module, module.exports), module.exports;
	}

	var _core = createCommonjsModule(function (module) {
	var core = module.exports = { version: '2.6.12' };
	if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef
	});
	var _core_1 = _core.version;

	var $JSON = _core.JSON || (_core.JSON = { stringify: JSON.stringify });
	var stringify = function stringify(it) { // eslint-disable-line no-unused-vars
	  return $JSON.stringify.apply($JSON, arguments);
	};

	var stringify$1 = createCommonjsModule(function (module) {
	module.exports = { "default": stringify, __esModule: true };
	});

	var _JSON$stringify = unwrapExports(stringify$1);

	var global$1 = (typeof global !== "undefined" ? global :
	            typeof self !== "undefined" ? self :
	            typeof window !== "undefined" ? window : {});

	if (typeof global$1.setTimeout === 'function') ;
	if (typeof global$1.clearTimeout === 'function') ;

	// from https://github.com/kumavis/browser-process-hrtime/blob/master/index.js
	var performance = global$1.performance || {};
	var performanceNow =
	  performance.now        ||
	  performance.mozNow     ||
	  performance.msNow      ||
	  performance.oNow       ||
	  performance.webkitNow  ||
	  function(){ return (new Date()).getTime() };

	// 7.1.4 ToInteger
	var ceil = Math.ceil;
	var floor = Math.floor;
	var _toInteger = function (it) {
	  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
	};

	// 7.2.1 RequireObjectCoercible(argument)
	var _defined = function (it) {
	  if (it == undefined) throw TypeError("Can't call method on  " + it);
	  return it;
	};

	// true  -> String#at
	// false -> String#codePointAt
	var _stringAt = function (TO_STRING) {
	  return function (that, pos) {
	    var s = String(_defined(that));
	    var i = _toInteger(pos);
	    var l = s.length;
	    var a, b;
	    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;
	    a = s.charCodeAt(i);
	    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff
	      ? TO_STRING ? s.charAt(i) : a
	      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
	  };
	};

	var _library = true;

	var _global = createCommonjsModule(function (module) {
	// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
	var global = module.exports = typeof window != 'undefined' && window.Math == Math
	  ? window : typeof self != 'undefined' && self.Math == Math ? self
	  // eslint-disable-next-line no-new-func
	  : Function('return this')();
	if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef
	});

	var _aFunction = function (it) {
	  if (typeof it != 'function') throw TypeError(it + ' is not a function!');
	  return it;
	};

	// optional / simple context binding

	var _ctx = function (fn, that, length) {
	  _aFunction(fn);
	  if (that === undefined) return fn;
	  switch (length) {
	    case 1: return function (a) {
	      return fn.call(that, a);
	    };
	    case 2: return function (a, b) {
	      return fn.call(that, a, b);
	    };
	    case 3: return function (a, b, c) {
	      return fn.call(that, a, b, c);
	    };
	  }
	  return function (/* ...args */) {
	    return fn.apply(that, arguments);
	  };
	};

	var _isObject = function (it) {
	  return typeof it === 'object' ? it !== null : typeof it === 'function';
	};

	var _anObject = function (it) {
	  if (!_isObject(it)) throw TypeError(it + ' is not an object!');
	  return it;
	};

	var _fails = function (exec) {
	  try {
	    return !!exec();
	  } catch (e) {
	    return true;
	  }
	};

	// Thank's IE8 for his funny defineProperty
	var _descriptors = !_fails(function () {
	  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
	});

	var document$1 = _global.document;
	// typeof document.createElement is 'object' in old IE
	var is = _isObject(document$1) && _isObject(document$1.createElement);
	var _domCreate = function (it) {
	  return is ? document$1.createElement(it) : {};
	};

	var _ie8DomDefine = !_descriptors && !_fails(function () {
	  return Object.defineProperty(_domCreate('div'), 'a', { get: function () { return 7; } }).a != 7;
	});

	// 7.1.1 ToPrimitive(input [, PreferredType])

	// instead of the ES6 spec version, we didn't implement @@toPrimitive case
	// and the second argument - flag - preferred type is a string
	var _toPrimitive = function (it, S) {
	  if (!_isObject(it)) return it;
	  var fn, val;
	  if (S && typeof (fn = it.toString) == 'function' && !_isObject(val = fn.call(it))) return val;
	  if (typeof (fn = it.valueOf) == 'function' && !_isObject(val = fn.call(it))) return val;
	  if (!S && typeof (fn = it.toString) == 'function' && !_isObject(val = fn.call(it))) return val;
	  throw TypeError("Can't convert object to primitive value");
	};

	var dP = Object.defineProperty;

	var f = _descriptors ? Object.defineProperty : function defineProperty(O, P, Attributes) {
	  _anObject(O);
	  P = _toPrimitive(P, true);
	  _anObject(Attributes);
	  if (_ie8DomDefine) try {
	    return dP(O, P, Attributes);
	  } catch (e) { /* empty */ }
	  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');
	  if ('value' in Attributes) O[P] = Attributes.value;
	  return O;
	};

	var _objectDp = {
		f: f
	};

	var _propertyDesc = function (bitmap, value) {
	  return {
	    enumerable: !(bitmap & 1),
	    configurable: !(bitmap & 2),
	    writable: !(bitmap & 4),
	    value: value
	  };
	};

	var _hide = _descriptors ? function (object, key, value) {
	  return _objectDp.f(object, key, _propertyDesc(1, value));
	} : function (object, key, value) {
	  object[key] = value;
	  return object;
	};

	var hasOwnProperty = {}.hasOwnProperty;
	var _has = function (it, key) {
	  return hasOwnProperty.call(it, key);
	};

	var PROTOTYPE = 'prototype';

	var $export = function (type, name, source) {
	  var IS_FORCED = type & $export.F;
	  var IS_GLOBAL = type & $export.G;
	  var IS_STATIC = type & $export.S;
	  var IS_PROTO = type & $export.P;
	  var IS_BIND = type & $export.B;
	  var IS_WRAP = type & $export.W;
	  var exports = IS_GLOBAL ? _core : _core[name] || (_core[name] = {});
	  var expProto = exports[PROTOTYPE];
	  var target = IS_GLOBAL ? _global : IS_STATIC ? _global[name] : (_global[name] || {})[PROTOTYPE];
	  var key, own, out;
	  if (IS_GLOBAL) source = name;
	  for (key in source) {
	    // contains in native
	    own = !IS_FORCED && target && target[key] !== undefined;
	    if (own && _has(exports, key)) continue;
	    // export native or passed
	    out = own ? target[key] : source[key];
	    // prevent global pollution for namespaces
	    exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]
	    // bind timers to global for call from export context
	    : IS_BIND && own ? _ctx(out, _global)
	    // wrap global constructors for prevent change them in library
	    : IS_WRAP && target[key] == out ? (function (C) {
	      var F = function (a, b, c) {
	        if (this instanceof C) {
	          switch (arguments.length) {
	            case 0: return new C();
	            case 1: return new C(a);
	            case 2: return new C(a, b);
	          } return new C(a, b, c);
	        } return C.apply(this, arguments);
	      };
	      F[PROTOTYPE] = C[PROTOTYPE];
	      return F;
	    // make static versions for prototype methods
	    })(out) : IS_PROTO && typeof out == 'function' ? _ctx(Function.call, out) : out;
	    // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%
	    if (IS_PROTO) {
	      (exports.virtual || (exports.virtual = {}))[key] = out;
	      // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%
	      if (type & $export.R && expProto && !expProto[key]) _hide(expProto, key, out);
	    }
	  }
	};
	// type bitmap
	$export.F = 1;   // forced
	$export.G = 2;   // global
	$export.S = 4;   // static
	$export.P = 8;   // proto
	$export.B = 16;  // bind
	$export.W = 32;  // wrap
	$export.U = 64;  // safe
	$export.R = 128; // real proto method for `library`
	var _export = $export;

	var _redefine = _hide;

	var _iterators = {};

	var toString = {}.toString;

	var _cof = function (it) {
	  return toString.call(it).slice(8, -1);
	};

	// fallback for non-array-like ES3 and non-enumerable old V8 strings

	// eslint-disable-next-line no-prototype-builtins
	var _iobject = Object('z').propertyIsEnumerable(0) ? Object : function (it) {
	  return _cof(it) == 'String' ? it.split('') : Object(it);
	};

	// to indexed object, toObject with fallback for non-array-like ES3 strings


	var _toIobject = function (it) {
	  return _iobject(_defined(it));
	};

	// 7.1.15 ToLength

	var min = Math.min;
	var _toLength = function (it) {
	  return it > 0 ? min(_toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
	};

	var max = Math.max;
	var min$1 = Math.min;
	var _toAbsoluteIndex = function (index, length) {
	  index = _toInteger(index);
	  return index < 0 ? max(index + length, 0) : min$1(index, length);
	};

	// false -> Array#indexOf
	// true  -> Array#includes



	var _arrayIncludes = function (IS_INCLUDES) {
	  return function ($this, el, fromIndex) {
	    var O = _toIobject($this);
	    var length = _toLength(O.length);
	    var index = _toAbsoluteIndex(fromIndex, length);
	    var value;
	    // Array#includes uses SameValueZero equality algorithm
	    // eslint-disable-next-line no-self-compare
	    if (IS_INCLUDES && el != el) while (length > index) {
	      value = O[index++];
	      // eslint-disable-next-line no-self-compare
	      if (value != value) return true;
	    // Array#indexOf ignores holes, Array#includes - not
	    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {
	      if (O[index] === el) return IS_INCLUDES || index || 0;
	    } return !IS_INCLUDES && -1;
	  };
	};

	var _shared = createCommonjsModule(function (module) {
	var SHARED = '__core-js_shared__';
	var store = _global[SHARED] || (_global[SHARED] = {});

	(module.exports = function (key, value) {
	  return store[key] || (store[key] = value !== undefined ? value : {});
	})('versions', []).push({
	  version: _core.version,
	  mode: 'pure',
	  copyright: '© 2020 Denis Pushkarev (zloirock.ru)'
	});
	});

	var id = 0;
	var px = Math.random();
	var _uid = function (key) {
	  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
	};

	var shared = _shared('keys');

	var _sharedKey = function (key) {
	  return shared[key] || (shared[key] = _uid(key));
	};

	var arrayIndexOf = _arrayIncludes(false);
	var IE_PROTO = _sharedKey('IE_PROTO');

	var _objectKeysInternal = function (object, names) {
	  var O = _toIobject(object);
	  var i = 0;
	  var result = [];
	  var key;
	  for (key in O) if (key != IE_PROTO) _has(O, key) && result.push(key);
	  // Don't enum bug & hidden keys
	  while (names.length > i) if (_has(O, key = names[i++])) {
	    ~arrayIndexOf(result, key) || result.push(key);
	  }
	  return result;
	};

	// IE 8- don't enum bug keys
	var _enumBugKeys = (
	  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'
	).split(',');

	// 19.1.2.14 / 15.2.3.14 Object.keys(O)



	var _objectKeys = Object.keys || function keys(O) {
	  return _objectKeysInternal(O, _enumBugKeys);
	};

	var _objectDps = _descriptors ? Object.defineProperties : function defineProperties(O, Properties) {
	  _anObject(O);
	  var keys = _objectKeys(Properties);
	  var length = keys.length;
	  var i = 0;
	  var P;
	  while (length > i) _objectDp.f(O, P = keys[i++], Properties[P]);
	  return O;
	};

	var document$2 = _global.document;
	var _html = document$2 && document$2.documentElement;

	// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])



	var IE_PROTO$1 = _sharedKey('IE_PROTO');
	var Empty = function () { /* empty */ };
	var PROTOTYPE$1 = 'prototype';

	// Create object with fake `null` prototype: use iframe Object with cleared prototype
	var createDict = function () {
	  // Thrash, waste and sodomy: IE GC bug
	  var iframe = _domCreate('iframe');
	  var i = _enumBugKeys.length;
	  var lt = '<';
	  var gt = '>';
	  var iframeDocument;
	  iframe.style.display = 'none';
	  _html.appendChild(iframe);
	  iframe.src = 'javascript:'; // eslint-disable-line no-script-url
	  // createDict = iframe.contentWindow.Object;
	  // html.removeChild(iframe);
	  iframeDocument = iframe.contentWindow.document;
	  iframeDocument.open();
	  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);
	  iframeDocument.close();
	  createDict = iframeDocument.F;
	  while (i--) delete createDict[PROTOTYPE$1][_enumBugKeys[i]];
	  return createDict();
	};

	var _objectCreate = Object.create || function create(O, Properties) {
	  var result;
	  if (O !== null) {
	    Empty[PROTOTYPE$1] = _anObject(O);
	    result = new Empty();
	    Empty[PROTOTYPE$1] = null;
	    // add "__proto__" for Object.getPrototypeOf polyfill
	    result[IE_PROTO$1] = O;
	  } else result = createDict();
	  return Properties === undefined ? result : _objectDps(result, Properties);
	};

	var _wks = createCommonjsModule(function (module) {
	var store = _shared('wks');

	var Symbol = _global.Symbol;
	var USE_SYMBOL = typeof Symbol == 'function';

	var $exports = module.exports = function (name) {
	  return store[name] || (store[name] =
	    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : _uid)('Symbol.' + name));
	};

	$exports.store = store;
	});

	var def = _objectDp.f;

	var TAG = _wks('toStringTag');

	var _setToStringTag = function (it, tag, stat) {
	  if (it && !_has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });
	};

	var IteratorPrototype = {};

	// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
	_hide(IteratorPrototype, _wks('iterator'), function () { return this; });

	var _iterCreate = function (Constructor, NAME, next) {
	  Constructor.prototype = _objectCreate(IteratorPrototype, { next: _propertyDesc(1, next) });
	  _setToStringTag(Constructor, NAME + ' Iterator');
	};

	// 7.1.13 ToObject(argument)

	var _toObject = function (it) {
	  return Object(_defined(it));
	};

	// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)


	var IE_PROTO$2 = _sharedKey('IE_PROTO');
	var ObjectProto = Object.prototype;

	var _objectGpo = Object.getPrototypeOf || function (O) {
	  O = _toObject(O);
	  if (_has(O, IE_PROTO$2)) return O[IE_PROTO$2];
	  if (typeof O.constructor == 'function' && O instanceof O.constructor) {
	    return O.constructor.prototype;
	  } return O instanceof Object ? ObjectProto : null;
	};

	var ITERATOR = _wks('iterator');
	var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`
	var FF_ITERATOR = '@@iterator';
	var KEYS = 'keys';
	var VALUES = 'values';

	var returnThis = function () { return this; };

	var _iterDefine = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {
	  _iterCreate(Constructor, NAME, next);
	  var getMethod = function (kind) {
	    if (!BUGGY && kind in proto) return proto[kind];
	    switch (kind) {
	      case KEYS: return function keys() { return new Constructor(this, kind); };
	      case VALUES: return function values() { return new Constructor(this, kind); };
	    } return function entries() { return new Constructor(this, kind); };
	  };
	  var TAG = NAME + ' Iterator';
	  var DEF_VALUES = DEFAULT == VALUES;
	  var VALUES_BUG = false;
	  var proto = Base.prototype;
	  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];
	  var $default = $native || getMethod(DEFAULT);
	  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;
	  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;
	  var methods, key, IteratorPrototype;
	  // Fix native
	  if ($anyNative) {
	    IteratorPrototype = _objectGpo($anyNative.call(new Base()));
	    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {
	      // Set @@toStringTag to native iterators
	      _setToStringTag(IteratorPrototype, TAG, true);
	      // fix for some old engines
	      if (!_library && typeof IteratorPrototype[ITERATOR] != 'function') _hide(IteratorPrototype, ITERATOR, returnThis);
	    }
	  }
	  // fix Array#{values, @@iterator}.name in V8 / FF
	  if (DEF_VALUES && $native && $native.name !== VALUES) {
	    VALUES_BUG = true;
	    $default = function values() { return $native.call(this); };
	  }
	  // Define iterator
	  if ((!_library || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {
	    _hide(proto, ITERATOR, $default);
	  }
	  // Plug for library
	  _iterators[NAME] = $default;
	  _iterators[TAG] = returnThis;
	  if (DEFAULT) {
	    methods = {
	      values: DEF_VALUES ? $default : getMethod(VALUES),
	      keys: IS_SET ? $default : getMethod(KEYS),
	      entries: $entries
	    };
	    if (FORCED) for (key in methods) {
	      if (!(key in proto)) _redefine(proto, key, methods[key]);
	    } else _export(_export.P + _export.F * (BUGGY || VALUES_BUG), NAME, methods);
	  }
	  return methods;
	};

	var $at = _stringAt(true);

	// 21.1.3.27 String.prototype[@@iterator]()
	_iterDefine(String, 'String', function (iterated) {
	  this._t = String(iterated); // target
	  this._i = 0;                // next index
	// 21.1.5.2.1 %StringIteratorPrototype%.next()
	}, function () {
	  var O = this._t;
	  var index = this._i;
	  var point;
	  if (index >= O.length) return { value: undefined, done: true };
	  point = $at(O, index);
	  this._i += point.length;
	  return { value: point, done: false };
	});

	var _iterStep = function (done, value) {
	  return { value: value, done: !!done };
	};

	// 22.1.3.4 Array.prototype.entries()
	// 22.1.3.13 Array.prototype.keys()
	// 22.1.3.29 Array.prototype.values()
	// 22.1.3.30 Array.prototype[@@iterator]()
	var es6_array_iterator = _iterDefine(Array, 'Array', function (iterated, kind) {
	  this._t = _toIobject(iterated); // target
	  this._i = 0;                   // next index
	  this._k = kind;                // kind
	// 22.1.5.2.1 %ArrayIteratorPrototype%.next()
	}, function () {
	  var O = this._t;
	  var kind = this._k;
	  var index = this._i++;
	  if (!O || index >= O.length) {
	    this._t = undefined;
	    return _iterStep(1);
	  }
	  if (kind == 'keys') return _iterStep(0, index);
	  if (kind == 'values') return _iterStep(0, O[index]);
	  return _iterStep(0, [index, O[index]]);
	}, 'values');

	// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)
	_iterators.Arguments = _iterators.Array;

	var TO_STRING_TAG = _wks('toStringTag');

	var DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +
	  'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +
	  'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +
	  'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +
	  'TextTrackList,TouchList').split(',');

	for (var i = 0; i < DOMIterables.length; i++) {
	  var NAME = DOMIterables[i];
	  var Collection = _global[NAME];
	  var proto = Collection && Collection.prototype;
	  if (proto && !proto[TO_STRING_TAG]) _hide(proto, TO_STRING_TAG, NAME);
	  _iterators[NAME] = _iterators.Array;
	}

	var _redefineAll = function (target, src, safe) {
	  for (var key in src) {
	    if (safe && target[key]) target[key] = src[key];
	    else _hide(target, key, src[key]);
	  } return target;
	};

	var _anInstance = function (it, Constructor, name, forbiddenField) {
	  if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {
	    throw TypeError(name + ': incorrect invocation!');
	  } return it;
	};

	// call something on iterator step with safe closing on error

	var _iterCall = function (iterator, fn, value, entries) {
	  try {
	    return entries ? fn(_anObject(value)[0], value[1]) : fn(value);
	  // 7.4.6 IteratorClose(iterator, completion)
	  } catch (e) {
	    var ret = iterator['return'];
	    if (ret !== undefined) _anObject(ret.call(iterator));
	    throw e;
	  }
	};

	// check on default Array iterator

	var ITERATOR$1 = _wks('iterator');
	var ArrayProto = Array.prototype;

	var _isArrayIter = function (it) {
	  return it !== undefined && (_iterators.Array === it || ArrayProto[ITERATOR$1] === it);
	};

	// getting tag from 19.1.3.6 Object.prototype.toString()

	var TAG$1 = _wks('toStringTag');
	// ES3 wrong here
	var ARG = _cof(function () { return arguments; }()) == 'Arguments';

	// fallback for IE11 Script Access Denied error
	var tryGet = function (it, key) {
	  try {
	    return it[key];
	  } catch (e) { /* empty */ }
	};

	var _classof = function (it) {
	  var O, T, B;
	  return it === undefined ? 'Undefined' : it === null ? 'Null'
	    // @@toStringTag case
	    : typeof (T = tryGet(O = Object(it), TAG$1)) == 'string' ? T
	    // builtinTag case
	    : ARG ? _cof(O)
	    // ES3 arguments fallback
	    : (B = _cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;
	};

	var ITERATOR$2 = _wks('iterator');

	var core_getIteratorMethod = _core.getIteratorMethod = function (it) {
	  if (it != undefined) return it[ITERATOR$2]
	    || it['@@iterator']
	    || _iterators[_classof(it)];
	};

	var _forOf = createCommonjsModule(function (module) {
	var BREAK = {};
	var RETURN = {};
	var exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {
	  var iterFn = ITERATOR ? function () { return iterable; } : core_getIteratorMethod(iterable);
	  var f = _ctx(fn, that, entries ? 2 : 1);
	  var index = 0;
	  var length, step, iterator, result;
	  if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');
	  // fast case for arrays with default iterator
	  if (_isArrayIter(iterFn)) for (length = _toLength(iterable.length); length > index; index++) {
	    result = entries ? f(_anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);
	    if (result === BREAK || result === RETURN) return result;
	  } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {
	    result = _iterCall(iterator, f, step.value, entries);
	    if (result === BREAK || result === RETURN) return result;
	  }
	};
	exports.BREAK = BREAK;
	exports.RETURN = RETURN;
	});

	var SPECIES = _wks('species');

	var _setSpecies = function (KEY) {
	  var C = typeof _core[KEY] == 'function' ? _core[KEY] : _global[KEY];
	  if (_descriptors && C && !C[SPECIES]) _objectDp.f(C, SPECIES, {
	    configurable: true,
	    get: function () { return this; }
	  });
	};

	var _meta = createCommonjsModule(function (module) {
	var META = _uid('meta');


	var setDesc = _objectDp.f;
	var id = 0;
	var isExtensible = Object.isExtensible || function () {
	  return true;
	};
	var FREEZE = !_fails(function () {
	  return isExtensible(Object.preventExtensions({}));
	});
	var setMeta = function (it) {
	  setDesc(it, META, { value: {
	    i: 'O' + ++id, // object ID
	    w: {}          // weak collections IDs
	  } });
	};
	var fastKey = function (it, create) {
	  // return primitive with prefix
	  if (!_isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;
	  if (!_has(it, META)) {
	    // can't set metadata to uncaught frozen object
	    if (!isExtensible(it)) return 'F';
	    // not necessary to add metadata
	    if (!create) return 'E';
	    // add missing metadata
	    setMeta(it);
	  // return object ID
	  } return it[META].i;
	};
	var getWeak = function (it, create) {
	  if (!_has(it, META)) {
	    // can't set metadata to uncaught frozen object
	    if (!isExtensible(it)) return true;
	    // not necessary to add metadata
	    if (!create) return false;
	    // add missing metadata
	    setMeta(it);
	  // return hash weak collections IDs
	  } return it[META].w;
	};
	// add metadata on freeze-family methods calling
	var onFreeze = function (it) {
	  if (FREEZE && meta.NEED && isExtensible(it) && !_has(it, META)) setMeta(it);
	  return it;
	};
	var meta = module.exports = {
	  KEY: META,
	  NEED: false,
	  fastKey: fastKey,
	  getWeak: getWeak,
	  onFreeze: onFreeze
	};
	});
	var _meta_1 = _meta.KEY;
	var _meta_2 = _meta.NEED;
	var _meta_3 = _meta.fastKey;
	var _meta_4 = _meta.getWeak;
	var _meta_5 = _meta.onFreeze;

	var _validateCollection = function (it, TYPE) {
	  if (!_isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');
	  return it;
	};

	var dP$1 = _objectDp.f;









	var fastKey = _meta.fastKey;

	var SIZE = _descriptors ? '_s' : 'size';

	var getEntry = function (that, key) {
	  // fast case
	  var index = fastKey(key);
	  var entry;
	  if (index !== 'F') return that._i[index];
	  // frozen object case
	  for (entry = that._f; entry; entry = entry.n) {
	    if (entry.k == key) return entry;
	  }
	};

	var _collectionStrong = {
	  getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {
	    var C = wrapper(function (that, iterable) {
	      _anInstance(that, C, NAME, '_i');
	      that._t = NAME;         // collection type
	      that._i = _objectCreate(null); // index
	      that._f = undefined;    // first entry
	      that._l = undefined;    // last entry
	      that[SIZE] = 0;         // size
	      if (iterable != undefined) _forOf(iterable, IS_MAP, that[ADDER], that);
	    });
	    _redefineAll(C.prototype, {
	      // 23.1.3.1 Map.prototype.clear()
	      // 23.2.3.2 Set.prototype.clear()
	      clear: function clear() {
	        for (var that = _validateCollection(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {
	          entry.r = true;
	          if (entry.p) entry.p = entry.p.n = undefined;
	          delete data[entry.i];
	        }
	        that._f = that._l = undefined;
	        that[SIZE] = 0;
	      },
	      // 23.1.3.3 Map.prototype.delete(key)
	      // 23.2.3.4 Set.prototype.delete(value)
	      'delete': function (key) {
	        var that = _validateCollection(this, NAME);
	        var entry = getEntry(that, key);
	        if (entry) {
	          var next = entry.n;
	          var prev = entry.p;
	          delete that._i[entry.i];
	          entry.r = true;
	          if (prev) prev.n = next;
	          if (next) next.p = prev;
	          if (that._f == entry) that._f = next;
	          if (that._l == entry) that._l = prev;
	          that[SIZE]--;
	        } return !!entry;
	      },
	      // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)
	      // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)
	      forEach: function forEach(callbackfn /* , that = undefined */) {
	        _validateCollection(this, NAME);
	        var f = _ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
	        var entry;
	        while (entry = entry ? entry.n : this._f) {
	          f(entry.v, entry.k, this);
	          // revert to the last existing entry
	          while (entry && entry.r) entry = entry.p;
	        }
	      },
	      // 23.1.3.7 Map.prototype.has(key)
	      // 23.2.3.7 Set.prototype.has(value)
	      has: function has(key) {
	        return !!getEntry(_validateCollection(this, NAME), key);
	      }
	    });
	    if (_descriptors) dP$1(C.prototype, 'size', {
	      get: function () {
	        return _validateCollection(this, NAME)[SIZE];
	      }
	    });
	    return C;
	  },
	  def: function (that, key, value) {
	    var entry = getEntry(that, key);
	    var prev, index;
	    // change existing entry
	    if (entry) {
	      entry.v = value;
	    // create new entry
	    } else {
	      that._l = entry = {
	        i: index = fastKey(key, true), // <- index
	        k: key,                        // <- key
	        v: value,                      // <- value
	        p: prev = that._l,             // <- previous entry
	        n: undefined,                  // <- next entry
	        r: false                       // <- removed
	      };
	      if (!that._f) that._f = entry;
	      if (prev) prev.n = entry;
	      that[SIZE]++;
	      // add to index
	      if (index !== 'F') that._i[index] = entry;
	    } return that;
	  },
	  getEntry: getEntry,
	  setStrong: function (C, NAME, IS_MAP) {
	    // add .keys, .values, .entries, [@@iterator]
	    // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11
	    _iterDefine(C, NAME, function (iterated, kind) {
	      this._t = _validateCollection(iterated, NAME); // target
	      this._k = kind;                     // kind
	      this._l = undefined;                // previous
	    }, function () {
	      var that = this;
	      var kind = that._k;
	      var entry = that._l;
	      // revert to the last existing entry
	      while (entry && entry.r) entry = entry.p;
	      // get next entry
	      if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {
	        // or finish the iteration
	        that._t = undefined;
	        return _iterStep(1);
	      }
	      // return step by kind
	      if (kind == 'keys') return _iterStep(0, entry.k);
	      if (kind == 'values') return _iterStep(0, entry.v);
	      return _iterStep(0, [entry.k, entry.v]);
	    }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);

	    // add [@@species], 23.1.2.2, 23.2.2.2
	    _setSpecies(NAME);
	  }
	};

	// 7.2.2 IsArray(argument)

	var _isArray = Array.isArray || function isArray(arg) {
	  return _cof(arg) == 'Array';
	};

	var SPECIES$1 = _wks('species');

	var _arraySpeciesConstructor = function (original) {
	  var C;
	  if (_isArray(original)) {
	    C = original.constructor;
	    // cross-realm fallback
	    if (typeof C == 'function' && (C === Array || _isArray(C.prototype))) C = undefined;
	    if (_isObject(C)) {
	      C = C[SPECIES$1];
	      if (C === null) C = undefined;
	    }
	  } return C === undefined ? Array : C;
	};

	// 9.4.2.3 ArraySpeciesCreate(originalArray, length)


	var _arraySpeciesCreate = function (original, length) {
	  return new (_arraySpeciesConstructor(original))(length);
	};

	// 0 -> Array#forEach
	// 1 -> Array#map
	// 2 -> Array#filter
	// 3 -> Array#some
	// 4 -> Array#every
	// 5 -> Array#find
	// 6 -> Array#findIndex





	var _arrayMethods = function (TYPE, $create) {
	  var IS_MAP = TYPE == 1;
	  var IS_FILTER = TYPE == 2;
	  var IS_SOME = TYPE == 3;
	  var IS_EVERY = TYPE == 4;
	  var IS_FIND_INDEX = TYPE == 6;
	  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;
	  var create = $create || _arraySpeciesCreate;
	  return function ($this, callbackfn, that) {
	    var O = _toObject($this);
	    var self = _iobject(O);
	    var f = _ctx(callbackfn, that, 3);
	    var length = _toLength(self.length);
	    var index = 0;
	    var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;
	    var val, res;
	    for (;length > index; index++) if (NO_HOLES || index in self) {
	      val = self[index];
	      res = f(val, index, O);
	      if (TYPE) {
	        if (IS_MAP) result[index] = res;   // map
	        else if (res) switch (TYPE) {
	          case 3: return true;             // some
	          case 5: return val;              // find
	          case 6: return index;            // findIndex
	          case 2: result.push(val);        // filter
	        } else if (IS_EVERY) return false; // every
	      }
	    }
	    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;
	  };
	};

	var dP$2 = _objectDp.f;
	var each = _arrayMethods(0);


	var _collection = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {
	  var Base = _global[NAME];
	  var C = Base;
	  var ADDER = IS_MAP ? 'set' : 'add';
	  var proto = C && C.prototype;
	  var O = {};
	  if (!_descriptors || typeof C != 'function' || !(IS_WEAK || proto.forEach && !_fails(function () {
	    new C().entries().next();
	  }))) {
	    // create collection constructor
	    C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);
	    _redefineAll(C.prototype, methods);
	    _meta.NEED = true;
	  } else {
	    C = wrapper(function (target, iterable) {
	      _anInstance(target, C, NAME, '_c');
	      target._c = new Base();
	      if (iterable != undefined) _forOf(iterable, IS_MAP, target[ADDER], target);
	    });
	    each('add,clear,delete,forEach,get,has,set,keys,values,entries,toJSON'.split(','), function (KEY) {
	      var IS_ADDER = KEY == 'add' || KEY == 'set';
	      if (KEY in proto && !(IS_WEAK && KEY == 'clear')) _hide(C.prototype, KEY, function (a, b) {
	        _anInstance(this, C, KEY);
	        if (!IS_ADDER && IS_WEAK && !_isObject(a)) return KEY == 'get' ? undefined : false;
	        var result = this._c[KEY](a === 0 ? 0 : a, b);
	        return IS_ADDER ? this : result;
	      });
	    });
	    IS_WEAK || dP$2(C.prototype, 'size', {
	      get: function () {
	        return this._c.size;
	      }
	    });
	  }

	  _setToStringTag(C, NAME);

	  O[NAME] = C;
	  _export(_export.G + _export.W + _export.F, O);

	  if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);

	  return C;
	};

	var MAP = 'Map';

	// 23.1 Map Objects
	var es6_map = _collection(MAP, function (get) {
	  return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };
	}, {
	  // 23.1.3.6 Map.prototype.get(key)
	  get: function get(key) {
	    var entry = _collectionStrong.getEntry(_validateCollection(this, MAP), key);
	    return entry && entry.v;
	  },
	  // 23.1.3.9 Map.prototype.set(key, value)
	  set: function set(key, value) {
	    return _collectionStrong.def(_validateCollection(this, MAP), key === 0 ? 0 : key, value);
	  }
	}, _collectionStrong, true);

	var _arrayFromIterable = function (iter, ITERATOR) {
	  var result = [];
	  _forOf(iter, false, result.push, result, ITERATOR);
	  return result;
	};

	// https://github.com/DavidBruant/Map-Set.prototype.toJSON


	var _collectionToJson = function (NAME) {
	  return function toJSON() {
	    if (_classof(this) != NAME) throw TypeError(NAME + "#toJSON isn't generic");
	    return _arrayFromIterable(this);
	  };
	};

	// https://github.com/DavidBruant/Map-Set.prototype.toJSON


	_export(_export.P + _export.R, 'Map', { toJSON: _collectionToJson('Map') });

	// https://tc39.github.io/proposal-setmap-offrom/


	var _setCollectionOf = function (COLLECTION) {
	  _export(_export.S, COLLECTION, { of: function of() {
	    var length = arguments.length;
	    var A = new Array(length);
	    while (length--) A[length] = arguments[length];
	    return new this(A);
	  } });
	};

	// https://tc39.github.io/proposal-setmap-offrom/#sec-map.of
	_setCollectionOf('Map');

	// https://tc39.github.io/proposal-setmap-offrom/





	var _setCollectionFrom = function (COLLECTION) {
	  _export(_export.S, COLLECTION, { from: function from(source /* , mapFn, thisArg */) {
	    var mapFn = arguments[1];
	    var mapping, A, n, cb;
	    _aFunction(this);
	    mapping = mapFn !== undefined;
	    if (mapping) _aFunction(mapFn);
	    if (source == undefined) return new this();
	    A = [];
	    if (mapping) {
	      n = 0;
	      cb = _ctx(mapFn, arguments[2], 2);
	      _forOf(source, false, function (nextItem) {
	        A.push(cb(nextItem, n++));
	      });
	    } else {
	      _forOf(source, false, A.push, A);
	    }
	    return new this(A);
	  } });
	};

	// https://tc39.github.io/proposal-setmap-offrom/#sec-map.from
	_setCollectionFrom('Map');

	var map = _core.Map;

	var map$1 = createCommonjsModule(function (module) {
	module.exports = { "default": map, __esModule: true };
	});

	var _Map = unwrapExports(map$1);

	var f$1 = Object.getOwnPropertySymbols;

	var _objectGops = {
		f: f$1
	};

	var f$2 = {}.propertyIsEnumerable;

	var _objectPie = {
		f: f$2
	};

	// 19.1.2.1 Object.assign(target, source, ...)






	var $assign = Object.assign;

	// should work with symbols and should have deterministic property order (V8 bug)
	var _objectAssign = !$assign || _fails(function () {
	  var A = {};
	  var B = {};
	  // eslint-disable-next-line no-undef
	  var S = Symbol();
	  var K = 'abcdefghijklmnopqrst';
	  A[S] = 7;
	  K.split('').forEach(function (k) { B[k] = k; });
	  return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;
	}) ? function assign(target, source) { // eslint-disable-line no-unused-vars
	  var T = _toObject(target);
	  var aLen = arguments.length;
	  var index = 1;
	  var getSymbols = _objectGops.f;
	  var isEnum = _objectPie.f;
	  while (aLen > index) {
	    var S = _iobject(arguments[index++]);
	    var keys = getSymbols ? _objectKeys(S).concat(getSymbols(S)) : _objectKeys(S);
	    var length = keys.length;
	    var j = 0;
	    var key;
	    while (length > j) {
	      key = keys[j++];
	      if (!_descriptors || isEnum.call(S, key)) T[key] = S[key];
	    }
	  } return T;
	} : $assign;

	// 19.1.3.1 Object.assign(target, source)


	_export(_export.S + _export.F, 'Object', { assign: _objectAssign });

	var assign = _core.Object.assign;

	var assign$1 = createCommonjsModule(function (module) {
	module.exports = { "default": assign, __esModule: true };
	});

	unwrapExports(assign$1);

	var _extends = createCommonjsModule(function (module, exports) {

	exports.__esModule = true;



	var _assign2 = _interopRequireDefault(assign$1);

	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

	exports.default = _assign2.default || 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;
	};
	});

	var _extends$1 = unwrapExports(_extends);

	function throttling(callback, limit, time) {
	  var calledCount = 0;

	  setInterval(function () {
	    calledCount = 0;
	  }, time);

	  return function (event) {
	    if (limit > calledCount) {
	      calledCount += 1;
	      callback(event);
	    }
	  };
	}

	function ExitIntent() {
	  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};

	  var defaultOptions = {
	    threshold: 20,
	    mobileTreshold: 500, // corresponds to pageY value
	    scrolled: false,
	    maxDisplays: 1,
	    eventThrottle: 200,
	    onExitIntent: function onExitIntent() {}
	  };

	  return function popup() {
	    var config = _extends$1({}, defaultOptions, options);
	    var eventListeners = new _Map();
	    var displays = 0;

	    var addEvent = function addEvent(eventName, callback) {
	      document.addEventListener(eventName, callback, false);
	      eventListeners.set('document:' + eventName, { eventName: eventName, callback: callback });
	    };

	    var removeEvent = function removeEvent(key) {
	      var _eventListeners$get = eventListeners.get(key),
	          eventName = _eventListeners$get.eventName,
	          callback = _eventListeners$get.callback;

	      document.removeEventListener(eventName, callback);
	      eventListeners.delete(key);
	    };

	    var removeEvents = function removeEvents() {
	      /* eslint no-unused-vars: ["error", {"args": "none"}] */
	      eventListeners.forEach(function (value, key, map) {
	        return removeEvent(key);
	      });
	    };

	    var shouldDisplay = function shouldDisplay(x, y) {
	      if (
	      // comment out for mvp
	      //   (x <= config.threshold)
	      // || (x >= window.innerWidth - config.threshold)
	      y <= config.threshold)
	        // || (y >= window.innerHeight - config.threshold)
	        {
	          displays += 1;
	          return true;
	        }
	      return false;
	    };

	    var mouseDidMove = function mouseDidMove(event) {
	      if (shouldDisplay(event.clientX, event.clientY)) {
	        config.onExitIntent();
	        if (displays >= config.maxDisplays) {
	          removeEvents();
	        }
	      }
	    };

	    addEvent('mouseleave', throttling(mouseDidMove, config.maxDisplays, config.eventThrottle));

	    addEvent('mousemove', throttling(mouseDidMove, config.maxDisplays, config.eventThrottle));

	    addEvent('visibilitychange', function (event) {
	      event.preventDefault();
	      if (document.visibilityState === 'visible') {
	        config.onExitIntent();
	        displays += 1;
	        if (displays >= config.maxDisplays) {
	          removeEvents();
	        }
	      }
	    });

	    addEvent('touchmove', function (event) {
	      config.scrolled = config.mobileTreshold < event.changedTouches[0].pageY;
	      if (config.scrolled) {
	        config.mobileTreshold = 480;
	      }

	      if (config.mobileTreshold === 480 && !config.scrolled) {
	        config.onExitIntent();
	        displays += 1;
	        if (displays >= config.maxDisplays) {
	          removeEvents();
	        }
	      }
	    });

	    return removeEvents;
	  }();
	}

	/* eslint-disable */
	function getParameterByName(name, url) {
	  if (!url) url = window.location.href;
	  name = name.replace(/[\[\]]/g, '\\$&');
	  var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),
	      results = regex.exec(url);
	  if (!results) return null;
	  if (!results[2]) return '';
	  return decodeURIComponent(results[2].replace(/\+/g, ' '));
	}

	function makeRequest(_ref) {
	  var type = _ref.type,
	      url = _ref.url,
	      data = _ref.data,
	      callback = _ref.callback,
	      headers = _ref.headers,
	      onError = _ref.onError;

	  var xhr = new XMLHttpRequest();

	  function onRequestFinish() {
	    // eslint-disable-line
	    if (xhr.readyState === 4 && xhr.status >= 200 && xhr.status <= 299) {
	      callback && callback(JSON.parse(xhr.responseText));
	    } else if (xhr.readyState === 4) {
	      onError("Error " + xhr.status + " - " + xhr.responseText + " - " + xhr.responseURL, xhr.status, JSON.parse(xhr.responseText));
	    }
	  }

	  xhr.onreadystatechange = onRequestFinish;

	  xhr.open(type, url, true);

	  if (headers && headers.length > 0) {
	    headers.forEach(function (header) {
	      return xhr.setRequestHeader(header.type, header.value);
	    });
	  }

	  xhr.send(data);
	}

	function parseJwt(token) {
	  var base64Url = token.split('.')[1];
	  var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
	  var jsonPayload = decodeURIComponent(atob(base64).split('').map(function (c) {
	    return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
	  }).join('')); // eslint-disable-line

	  return JSON.parse(jsonPayload);
	}

	/* eslint-disable */
	function uuidv4() {
	  return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
	    var r = Math.random() * 16 | 0,
	        v = c == 'x' ? r : r & 0x3 | 0x8;
	    return v.toString(16);
	  });
	}

	var VOUCHER_URL_PARAM = 'voucher';
	var IS_EMAIL_CT_URL_PARAM = 'is_email_ct';

	var WELCOME_POPUP_WAS_TRIGGERED = 'WelcomePopupWasTriggered';
	var EXIT_POPUP_WAS_TRIGGERED = 'ExitPopupWasTriggered';
	var EXIT_POPUP_WAS_DISMISSED = 'ExitPopupWasDismissed';

	var getValidateCodeUrl = function getValidateCodeUrl(host, voucheCode) {
	  return host + '/api/voucher/' + voucheCode + '/validate';
	};
	var getExitPopupContentUrl = function getExitPopupContentUrl(host, shop) {
	  return host + '/api/merchant-by-site/' + shop + '/target-banner';
	};
	var getSubmitEmailUrl = function getSubmitEmailUrl(host, shop) {
	  return host + '/api/merchant-by-site/' + shop + '/submit-email';
	};
	var getAnalyticsUrl = function getAnalyticsUrl(host) {
	  return host + '/api/event-logger/store';
	};
	var getSentryAPIUrl = function getSentryAPIUrl(projectId, dsnKey) {
	  return 'https://sentry.io/api/' + projectId + '/store/?sentry_key=' + dsnKey + '&sentry_version=7';
	};

	var POPUP_RESET_SESSION_HOURS = 24;
	var POPUP_RESET_SESSION_IMPRESSIONS = 6;
	var POPUP_RESET_SESSION_MAX_VIEWS = 3;

	function logResponseError(message) {
	  makeRequest({
	    type: 'POST',
	    url: getSentryAPIUrl("3455425", "f3a6f507936648b59500e8fd6ec675d1"),
	    data: _JSON$stringify({
	      event_id: uuidv4(),
	      message: message,
	      level: 'info'
	    }),
	    onError: function onError(errorMessage) {
	      return console.log(errorMessage);
	    } // eslint-disable-line
	  });
	}

	function handleAdminFailedResponse(message) {
	  var logError = true;

	  if (message.includes('401')) logError = false;

	  logError && logResponseError(message);
	}

	function sendAnalyticsToAdmin(_ref) {
	  var event = _ref.event,
	      payload = _ref.payload;

	  var data = _JSON$stringify({
	    event: event,
	    merchant_url: 'https://' + window.location.hostname,
	    payload: payload
	  });
	  makeRequest({
	    type: 'POST',
	    url: getAnalyticsUrl("https://admin.transfertribe.com"),
	    data: data,
	    headers: [{ type: 'Accept', value: 'application/json' }],
	    onError: handleAdminFailedResponse
	  });
	}

	function loadSpinner() {
	  var spinner = document.createElement('div');
	  spinner.innerHTML = '<div></div>';
	  spinner.className = 'transfertribe-lds-ring';
	  var button = document.getElementById('transfer-tribe-submit-email-button');
	  button.innerHTML = '';
	  button.disabled = true;
	  button.appendChild(spinner);
	}

	function removeSpinner() {
	  var spinner = document.getElementsByClassName('transfertribe-lds-ring')[0];
	  spinner.remove();
	  var button = document.getElementById('transfer-tribe-submit-email-button');
	  button.disabled = false;
	  button.innerHTML = 'Visit Now';
	}

	function shopperEmailWasSubmitted(response) {
	  window.location = response.data.target_merchant_website;
	}

	function submitEmail(event) {
	  event.preventDefault();
	  var host = window.location.hostname;
	  var emailFormData = _JSON$stringify({ email: event.target[0].value });
	  loadSpinner();
	  makeRequest({
	    type: 'POST',
	    url: getSubmitEmailUrl("https://admin.transfertribe.com", host),
	    data: emailFormData,
	    headers: [{ type: 'Accept', value: 'application/json' }],
	    callback: shopperEmailWasSubmitted,
	    onError: function onError(message, status, resBody) {
	      handleAdminFailedResponse(message);
	      removeSpinner();
	      if (status >= 400) {
	        var notification = document.getElementById('transfer-tribe-email-used-notification');
	        notification.setAttribute('class', 'transfer-tribe-email-used-notification show-discount-code-email-used-notification');
	        notification.innerHTML = resBody.error.message;
	        document.addEventListener('click', function () {
	          notification.setAttribute('class', 'transfer-tribe-email-used-notification hide-discount-code-email-used-notification');
	        });
	      }
	    }
	  });
	}

	var copyIcon = "data:image/png;base64,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AAAoZ2kLPk7byAMGWKDT0v/vzHGPrei09H9etsu5YgPp4QUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAABKE3gBAChN4AUAoDSBFwCA0gReAGCj3NJ3AWPs77sANp/ACwBslKv7LmCMrVgTG0zgBQA2ylf7LmCMS/ougM0n8AIAG+WCvgsY43N9F8DmE3gBgI3ylSSX9V3EiE/0XQCbT+AFADbKUpL3911Ex1KSv+u7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";

	function getVoucherTypes(amount, type) {
	  var types = {
	    'Amount off': '$' + amount + ' off',
	    'Percent off': amount + '% off',
	    'Free shipping': 'Free shipping',
	    free_shipping: 'Free shipping',
	    amount_off: '$' + amount + ' off',
	    percent_off: amount * 100 + '% off'
	  };

	  return types[type];
	}

	function generateElement(elementStructure) {
	  var element = document.createElement(elementStructure.type);

	  if (elementStructure.attributes) elementStructure.attributes.forEach(function (attribute) {
	    return element.setAttribute(attribute.name, attribute.value);
	  }); // eslint-disable-line

	  if (elementStructure.innerHTML) element.innerHTML = elementStructure.innerHTML;

	  if (elementStructure.events && elementStructure.events.length > 0) {
	    elementStructure.events.forEach(function (event) {
	      element.addEventListener(event.type, event.callback);
	    });
	  }

	  return element;
	}

	function appendElements(parent, children) {
	  children.forEach(function (child) {
	    var element = generateElement(child);

	    if (child.children && child.children.length > 0) appendElements(element, child.children);

	    parent.appendChild(element);
	  });
	}

	var getExitContentText = function getExitContentText(data) {
	  return [{ type: 'div', attributes: [{ name: 'class', value: 'transfer-tribe-exit-logo' }], innerHTML: '<img alt="merchant-logo" src=' + data.banner_url + ' />' }, { type: 'div', attributes: [{ name: 'class', value: 'transfer-tribe-exit-intro' }], innerHTML: data.greeting_text || 'Hey there! You\'ve got' }, { type: 'div', attributes: [{ name: 'class', value: 'transfer-tribe-exit-discount' }], innerHTML: getVoucherTypes(data.voucher_amount, data.voucher_type) }, { type: 'div', attributes: [{ name: 'class', value: 'transfer-tribe-exit-brand' }], innerHTML: 'at ' + data.target_name }, { type: 'div', attributes: [{ name: 'class', value: 'transfer-tribe-exit-terms' }], innerHTML: data.voucher_disclaimer + ' ' + "<a class=\"transfer-tribe-exit-popup-policy-link\" target=\"_blank\" href=\"https://transfertribe.com/shopper-privacy\">Privacy Policy</a>" }, {
	    type: 'form',
	    attributes: [{ name: 'class', value: 'transfer-tribe-exit-form' }],
	    children: [{
	      type: 'span',
	      attributes: [{ name: 'class', value: 'transfer-tribe-email-used-notification hide-discount-code-email-used-notification' }, { name: 'id', value: 'transfer-tribe-email-used-notification' }],
	      innerHTML: 'Sorry, this email address is recognized. Please check your inbox for your voucher code!'
	    }, {
	      type: 'input',
	      attributes: [{ name: 'class', value: 'transfer-tribe-exit-form-input' }, { name: 'type', value: 'email' }, { name: 'name', value: 'email' }, { name: 'required', value: true }, { name: 'placeholder', value: 'Enter email address to claim' }]
	    }, {
	      type: 'button',
	      attributes: [{ name: 'type', value: 'submit' }, { name: 'id', value: 'transfer-tribe-submit-email-button' }, { name: 'class', value: 'transfer-tribe-exit-form-button' }, { name: 'style', value: data.cust_btn_back_color ? 'background-color: #' + data.cust_btn_back_color + '; color: #' + data.cust_btn_font_color : '' }],
	      innerHTML: 'Visit Now'
	    }],
	    events: [{
	      type: 'submit',
	      callback: submitEmail
	    }]
	  }];
	};

	var getExitContentPhoto = function getExitContentPhoto(data) {
	  return [{
	    type: 'div',
	    attributes: [{ name: 'class', value: 'transfer-tribe-exit-photo-inner' }, { name: 'style', value: 'background-image: url(' + data.product_picture_url + ');' }]
	  }];
	};

	var wrappers = function wrappers(data) {
	  return [{
	    type: 'div',
	    attributes: [{ name: 'class', value: 'transfer-tribe-exit-content-text' }, { name: 'style', value: data.cust_font.name ? 'font-family: \'' + data.cust_font.name + '\'' : '' }],
	    children: getExitContentText(data)
	  }, { type: 'div', attributes: [{ name: 'class', value: 'transfer-tribe-exit-content-photo' }], children: getExitContentPhoto(data) }, {
	    type: 'button',
	    attributes: [{ name: 'class', value: 'transfer-tribe-exit-close-button' }],
	    innerHTML: '&#10005;',
	    events: [{
	      type: 'click',
	      callback: function callback() {
	        var exitPopup = document.getElementsByClassName('transfer-tribe-popup')[0];
	        exitPopup.setAttribute('class', 'transfer-tribe-popup');

	        var overlay = document.getElementsByClassName('transfer-tribe-exit-backdrop')[0];
	        overlay.setAttribute('class', 'transfer-tribe-exit-backdrop');
	        sendAnalyticsToAdmin({
	          event: EXIT_POPUP_WAS_DISMISSED
	        });
	      }
	    }]
	  }];
	};

	var getExitPopupChildElements = function getExitPopupChildElements(children) {
	  return [{ type: 'div', attributes: [{ name: 'class', value: 'transfer-tribe-exit-content transfer-tribe-exit-content-transitions' }], children: children }];
	};

	var welcomePopupFormStructure = function welcomePopupFormStructure(data) {
	  return [{
	    type: 'div',
	    attributes: [{ name: 'class', value: 'transfer-tribe-code-form-control' }],
	    children: [{ type: 'input', attributes: [{ name: 'id', value: 'transfer-tribe-promotion-code' }, { name: 'name', value: 'code' }, { name: 'type', value: 'text' }, { name: 'value', value: data.voucher_code }] }, {
	      type: 'img',
	      attributes: [{ name: 'class', value: 'transfer-tribe-code-copy-icon' }, { name: 'src', value: copyIcon }],
	      events: [{
	        type: 'click',
	        callback: function callback() {
	          var input = document.getElementById('transfer-tribe-promotion-code');
	          input.select();
	          document.execCommand('copy');
	          var notification = document.getElementById('transfer-tribe-discount-code-copy-notification');
	          notification.setAttribute('class', 'transfer-tribe-code-notification show-discount-code-copied-notification');
	          setTimeout(function () {
	            return notification.setAttribute('class', 'transfer-tribe-code-notification hide-discount-code-copied-notification');
	          }, 2000);
	        }
	      }]
	    }]
	  }, {
	    type: 'button',
	    attributes: [{ name: 'class', value: 'transfer-tribe-code-form-button' }],
	    innerHTML: 'Shop now',
	    events: [{
	      type: 'click',
	      callback: function callback() {
	        var welcomePopup = document.getElementsByClassName('transfer-tribe-showWelcomePopup')[0];
	        welcomePopup.setAttribute('class', 'transfer-tribe-hideWelcomePopup');
	      }
	    }]
	  }];
	};

	var codePopupChildElements = function codePopupChildElements(data) {
	  return [{
	    type: 'button',
	    attributes: [{ name: 'class', value: 'transfer-tribe-welcome-close-button' }],
	    innerHTML: '&#10005;',
	    events: [{
	      type: 'click',
	      callback: function callback() {
	        var welcomePopup = document.getElementsByClassName('transfer-tribe-showWelcomePopup')[0];
	        welcomePopup.setAttribute('class', 'transfer-tribe-hideWelcomePopup');
	      }
	    }]
	  }, {
	    type: 'h1',
	    attributes: [{ name: 'class', value: 'transfer-tribe-welcome-text' }],
	    innerHTML: 'Welcome!'
	  }, { type: 'div', attributes: [{ name: 'class', value: 'transfer-tribe-code-logo' }], innerHTML: '<img alt="merchant-logo" src=' + data.merchant_banner_path + ' />' }, { type: 'div', attributes: [{ name: 'class', value: 'transfer-tribe-code-discount' }], innerHTML: '' + getVoucherTypes(data.voucher_amount, data.voucher_type) }, { type: 'div', attributes: [{ name: 'class', value: 'transfer-tribe-code-discount-info' }], innerHTML: 'Copy the unique code below and paste it into the discount box at checkout' }, { type: 'div', attributes: [{ name: 'class', value: 'transfer-tribe-code-form' }], children: welcomePopupFormStructure(data) }, { type: 'div', attributes: [{ name: 'class', value: 'transfer-tribe-code-info' }], innerHTML: data.voucher_disclaimer }];
	};

	var welcomePopupChildElements = function welcomePopupChildElements(data) {
	  return [{ type: 'div', attributes: [{ name: 'class', value: 'transfer-tribe-code-notification hide-discount-code-copied-notification' }, { name: 'id', value: 'transfer-tribe-discount-code-copy-notification' }], innerHTML: 'Copied to clipboard!' }, { type: 'div', attributes: [{ name: 'class', value: 'transfer-tribe-code-backdrop' }] }, { type: 'div', attributes: [{ name: 'class', value: 'transfer-tribe-code-popup' }], children: codePopupChildElements(data) }];
	};

	function styleInject(css, ref) {
	  if ( ref === void 0 ) ref = {};
	  var insertAt = ref.insertAt;

	  if (!css || typeof document === 'undefined') { return; }

	  var head = document.head || document.getElementsByTagName('head')[0];
	  var style = document.createElement('style');
	  style.type = 'text/css';

	  if (insertAt === 'top') {
	    if (head.firstChild) {
	      head.insertBefore(style, head.firstChild);
	    } else {
	      head.appendChild(style);
	    }
	  } else {
	    head.appendChild(style);
	  }

	  if (style.styleSheet) {
	    style.styleSheet.cssText = css;
	  } else {
	    style.appendChild(document.createTextNode(css));
	  }
	}

	var css_248z = ".transfer-tribe-welcome-close-button{-ms-flex-item-align:end;align-self:flex-end;margin-top:20px;margin-right:20px;width:13px;height:13px;line-height:13px;font-size:13px;cursor:pointer;text-align:center;border:none;background-color:transparent!important;outline:none;padding:0!important}";
	styleInject(css_248z);

	var css_248z$1 = ".transfer-tribe-code-form-button{font-family:Montserrat,sans-serif;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;font-weight:600;font-size:12px;height:35px;border:1px solid #888;border-radius:5px;outline:none;color:#060606;letter-spacing:1.13px;background-color:#ffee6d;text-transform:uppercase;cursor:pointer;margin-top:16px;padding:0}.transfer-tribe-code-form-button:hover{background-color:#fff4a1;-webkit-box-shadow:0 0 0 1px #8d8c8c inset;box-shadow:inset 0 0 0 1px #8d8c8c}.transfer-tribe-code-form-button:active{background-color:#fff4a1;color:#8d8c8c}";
	styleInject(css_248z$1);

	var css_248z$2 = ".transfer-tribe-exit-form{font-size:0;position:relative;display:inline-block}";
	styleInject(css_248z$2);

	var css_248z$3 = "button.transfer-tribe-exit-form-button{display:inline-block;border:1px solid #888;border-radius:5px;background-color:#ffee6d;outline:0;-webkit-appearance:none;-moz-appearance:none;font-family:Poppins,sans-serif!important;font-size:14px;text-transform:uppercase;letter-spacing:1px;padding:8px 12px;height:39px;color:#000;width:110px}@media (max-width:359px),(max-width:1023px) and (max-height:599px){.transfer-tribe-exit-form-button{padding:6px 12px}}";
	styleInject(css_248z$3);

	var css_248z$4 = "@import url(\"https://fonts.googleapis.com/css2?family=Poppins:wght@400;600;800&display=swap\");.transfer-tribe-exit-popup-policy-link{text-decoration:none;color:#00f}.transfer-tribe-popup{position:fixed;top:50%;left:50%;width:1024px;height:512px;height:auto;z-index:2000;visibility:hidden;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}@media only screen and (max-width:768px){.transfer-tribe-popup{top:5px;left:5px;-webkit-transform:translate(0);transform:translate(0);width:calc(100% - 10px);max-width:100%;height:calc(100% - 10px);max-height:100%}}.transfer-tribe-exit-backdrop{position:fixed;background-color:hsla(0,0%,45.9%,.8);top:0;left:0;width:100vw;height:100vh;z-index:1000;overflow:auto;opacity:0;visibility:hidden;-webkit-transition:all .3s;transition:all .3s}.transfer-tribe-exit-content{-webkit-box-sizing:border-box;box-sizing:border-box;font-family:Poppins,sans-serif!important;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;overflow:auto;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);font-weight:400;font-size:16px;line-height:1.5;background-color:#fff}@media only screen and (max-width:768px){.transfer-tribe-exit-content{-webkit-transform:translate(0);transform:translate(0)}}.transfer-tribe-showExitPopup{visibility:visible}.transfer-tribe-showExitPopup~.transfer-tribe-exit-backdrop{opacity:1;visibility:visible}.transfer-tribe-popup~.container{height:100%;overflow:hidden;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s}.transfer-tribe-showExitPopup.transfer-tribe-popup~.container,.transfer-tribe-showExitPopup.transfer-tribe-popup~.transfer-tribe-exit-backdrop{-webkit-transform:rotateX(-2deg);transform:rotateX(-2deg);-webkit-transform-origin:50% 0;transform-origin:50% 0;-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.transfer-tribe-exit-content-transitions{opacity:0;-webkit-transform:translateY(200%);transform:translateY(200%)}.transfer-tribe-showExitPopup .transfer-tribe-exit-content{-webkit-transform:translateY(0);transform:translateY(0);opacity:1;-webkit-transition:all .3s .2s;transition:all .3s .2s}.transfer-tribe-exit-content-text{padding:40px;width:50%;-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.transfer-tribe-exit-content-text>div{margin:0;color:#000}div.transfer-tribe-exit-logo{margin-bottom:24px}.transfer-tribe-exit-logo>img{max-width:120px;max-height:80px}.transfer-tribe-exit-intro{font-size:24px;font-weight:600;line-height:1.2}div.transfer-tribe-exit-discount{font-size:88px;margin:8px 0;font-weight:800;line-height:1;text-transform:uppercase}div.transfer-tribe-exit-brand{font-size:24px;margin-bottom:12px;font-weight:600;line-height:1.2}div.transfer-tribe-exit-terms{font-size:12px;margin-bottom:16px;color:grey;line-height:1.4}.show-discount-code-email-used-notification{display:block}.hide-discount-code-email-used-notification{display:none}.transfer-tribe-email-used-notification{font-size:13px;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;background-color:#fdfbe0;color:#000;border-radius:15px;padding:15px;position:absolute;z-index:1;bottom:150%;left:15%;margin-left:-60px;-webkit-box-shadow:grey -4px 9px 20px 0;box-shadow:-4px 9px 20px 0 grey}.transfer-tribe-email-used-notification:after{content:\"\";position:absolute;top:100%;left:15%;margin-left:-15px;border:15px solid transparent;border-top-color:#fdfbe0}@media (max-width:1023px){.transfer-tribe-showExitPopup .transfer-tribe-exit-content{-webkit-transform:translate(50%);transform:translate(50%);opacity:1;-webkit-transition:all .3s .2s;transition:all .3s .2s}div.transfer-tribe-exit-content{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:auto;width:100%;max-width:512px;top:0}div.transfer-tribe-exit-content-text{padding:20px;-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2;width:100%}}@media (max-height:799px),(max-width:512px){div.transfer-tribe-exit-logo{margin-bottom:16px}}@media (max-height:599px),(max-width:359px){div.transfer-tribe-exit-logo{margin-bottom:12px}}@media (max-width:512px){div.transfer-tribe-exit-logo img{max-width:100px;max-height:60px}}@media (max-width:359px){div.transfer-tribe-exit-logo img{max-width:80px;max-height:40px}}@media (max-height:511px){div.transfer-tribe-exit-content{position:static;margin:0 auto;-webkit-transform:translate(0);transform:translate(0)}}@media (max-width:512px),(max-width:1023px) and (max-height:799px){div.transfer-tribe-exit-intro{font-size:20px}div.transfer-tribe-exit-discount{font-size:64px;margin:6px 0}div.transfer-tribe-exit-brand{font-size:20px;margin-bottom:12px}div.transfer-tribe-exit-terms{font-size:12px;margin-bottom:12px}}@media (max-width:359px),(max-width:1023px) and (max-height:599px){div.transfer-tribe-exit-intro{font-size:16px}div.transfer-tribe-exit-discount{font-size:56px;margin:4px 0}div.transfer-tribe-exit-brand{font-size:16px;margin-bottom:12px}div.transfer-tribe-exit-terms{font-size:11px;margin-bottom:12px}}.transfer-tribe-exit-content-photo{width:512px;-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2;position:relative}.transfer-tribe-exit-content-photo:before{display:block;content:\"\";padding-top:100%}.transfer-tribe-exit-photo-inner{background-size:cover;background-position:50%;background-repeat:no-repeat;pointer-events:none;position:absolute;top:0;left:0;width:100%}.transfer-tribe-exit-photo-inner:before{display:block;content:\"\";padding-top:100%}@media (max-width:1023px){.transfer-tribe-exit-content-photo{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}}@media (max-width:511px){.transfer-tribe-exit-content-photo{width:100%}}@media (max-width:1023px) and (max-height:932px){.transfer-tribe-exit-content-photo{height:calc(100vh - 420px);max-height:100vw}.transfer-tribe-exit-content-photo:before{display:none}.transfer-tribe-exit-photo-inner{width:calc(100vh - 420px);max-width:100%}}@media (max-width:1023px) and (max-height:892px){.transfer-tribe-exit-photo-inner{margin-left:20px;max-width:calc(100% - 20px)}}@media (max-width:1023px) and (max-height:599px){.transfer-tribe-exit-content-photo{height:calc(100vh - 380px)}.transfer-tribe-exit-photo-inner{width:calc(100vh - 380px);max-width:100%}}";
	styleInject(css_248z$4);

	var css_248z$5 = ".transfer-tribe-exit-close-button{position:fixed;top:20px;right:20px;z-index:1200;color:#000;background-color:#fff;border:none;border-radius:50%;font-size:28px;line-height:1.15;font-weight:200;vertical-align:center;width:32px;height:32px;padding:1px;text-align:center;outline:none}.transfer-tribe-exit-close-button:hover{background-color:#eee}.transfer-tribe-exit-close-button:active{background-color:#ddd}@media (max-height:799px),(max-width:1023px){.transfer-tribe-exit-close-button{top:20px;right:30px}}";
	styleInject(css_248z$5);

	var css_248z$6 = "@import url(\"https://fonts.googleapis.com/css2?family=Poppins:wght@400;600;800&display=swap\");.transfer-tribe-showWelcomePopup{display:\"block\"}.transfer-tribe-hideWelcomePopup{display:none}.show-discount-code-copied-notification{display:block}.hide-discount-code-copied-notification{display:none}@-webkit-keyframes code-notification{0%{opacity:0}30%{opacity:.8}to{opacity:1}}div.transfer-tribe-code-backdrop{position:fixed;background-color:rgba(6,6,6,.8);width:100vw;height:100vh;top:0;left:0;z-index:1000}div.transfer-tribe-code-notification{position:fixed;background-color:#ffee6d;top:10%;left:60%;z-index:1200;opacity:0;padding:5px 10px;-webkit-animation:code-notification 2s ease-in;animation:code-notification 2s ease-in}@keyframes code-notification{0%{opacity:0}30%{opacity:.8}to{opacity:1}}div.transfer-tribe-code-popup{position:fixed;display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;z-index:110000;top:50%;left:50%;margin:0;padding:0;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);background-color:#fff;color:#060606;font-family:Poppins,sans-serif!important;font-size:12px;text-align:center;min-width:770px}.transfer-tribe-welcome-text{font-size:50px;margin-bottom:25px;margin-top:15px}div.transfer-tribe-code-logo{margin-top:-10px}div.transfer-tribe-code-discount{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:5.84em;line-height:1.24;text-transform:uppercase;font-weight:800;margin-top:50px}div.transfer-tribe-code-discount>span{font-weight:400;font-style:normal;font-size:.57em;line-height:1.24;margin-left:3px}div.transfer-tribe-code-discount-info{font-size:1.34em;line-height:1.24;font-weight:600;margin-top:10px}div.transfer-tribe-code-form{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-top:60px}div .transfer-tribe-code-form-control{position:relative}div.transfer-tribe-code-form input{font-family:Poppins,sans-serif!important;width:290px!important;-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;font-weight:800;font-size:12px;height:35px;border:none;border-radius:5px;outline:none;color:#060606;letter-spacing:1.93px;background-color:hsla(0,0%,70.6%,.08)}div .transfer-tribe-code-copy-icon{position:absolute;top:10px;right:10px;cursor:pointer;width:20px;height:20px}div.transfer-tribe-code-info{font-size:10px;line-height:13px;color:#b4b4b4;margin-top:87px;margin-bottom:20px}@media (max-width:960px){div.transfer-tribe-code-popup{min-width:520px}}@media (max-width:600px){div.transfer-tribe-code-popup{min-width:370px;font-size:10px}div.transfer-tribe-code-discount{margin-top:30px}div.transfer-tribe-code-discount-info{width:50%}div.transfer-tribe-code-info{margin-top:57px}}";
	styleInject(css_248z$6);

	var css_248z$7 = ".transfer-tribe-exit-form-input{display:inline-block!important;border:1px solid #888;border-radius:5px;background-color:#fff;outline:0;-webkit-appearance:none;-moz-appearance:none;font-family:Poppins,sans-serif!important;font-size:14px;line-height:14px;padding:8px;width:250px!important;margin-right:10px!important;margin-bottom:10px}@media (max-width:362px),(max-width:1023px) and (max-height:599px){.transfer-tribe-exit-form-input{padding:6px 8px;width:190px}}";
	styleInject(css_248z$7);

	var css_248z$8 = ".transfertribe-lds-ring{display:inline-block;position:relative;width:88px;height:15px}.transfertribe-lds-ring div{-webkit-box-sizing:border-box;box-sizing:border-box;display:block;position:absolute;width:25px;height:25px;margin-left:29px;margin-top:-2px;border-radius:50%;-webkit-animation:lds-ring 1.2s cubic-bezier(.5,0,.5,1) infinite;animation:lds-ring 1.2s cubic-bezier(.5,0,.5,1) infinite;border:3px solid transparent;border-top-color:#000}.transfertribe-lds-ring div:first-child{-webkit-animation-delay:-.45s;animation-delay:-.45s}@-webkit-keyframes lds-ring{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes lds-ring{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}";
	styleInject(css_248z$8);

	function generateExitPopup() {
	  var host = window.location.hostname;
	  var href = window.location.href; // eslint-disable-line
	  var length = href.length; // eslint-disable-line

	  var referrer = href[length - 1] === '/' ? href.slice(0, length - 1) : href;

	  var popupDetails = JSON.parse(sessionStorage.getItem('transfer-tribe-popup-details'));
	  var curDate = new Date().getTime() / 1000;
	  var lastOpenedDate = 0;
	  var impressionsCount = 0;
	  var shownCount = 0;

	  if (popupDetails) {
	    lastOpenedDate = popupDetails.lastOpened ? popupDetails.lastOpened : 0;
	    impressionsCount = popupDetails.impressionsCount ? popupDetails.impressionsCount : 0;
	    shownCount = popupDetails.shownCount ? popupDetails.shownCount : 0;
	  } else {
	    sessionStorage.setItem('transfer-tribe-popup-details', _JSON$stringify({
	      lastOpened: lastOpenedDate,
	      impressionsCount: impressionsCount,
	      shownCount: shownCount
	    }));
	  }

	  sessionStorage.setItem('transfer-tribe-popup-details', _JSON$stringify({
	    lastOpened: lastOpenedDate,
	    impressionsCount: impressionsCount + 1,
	    shownCount: shownCount
	  }));

	  if (curDate - lastOpenedDate > 60 * 60 * POPUP_RESET_SESSION_HOURS // 24 hours visit resets
	  || impressionsCount > POPUP_RESET_SESSION_IMPRESSIONS && shownCount < POPUP_RESET_SESSION_MAX_VIEWS) {
	    makeRequest({
	      type: 'GET',
	      url: getExitPopupContentUrl("https://admin.transfertribe.com", host),
	      data: null,
	      callback: function callback(response) {
	        setTimeout(function () {
	          var exitContentChildren = wrappers(response.data);

	          var exitPopupStructure = getExitPopupChildElements(exitContentChildren);

	          var exitPopup = document.createElement('div');
	          exitPopup.setAttribute('class', 'transfer-tribe-popup');
	          appendElements(exitPopup, exitPopupStructure);

	          var overlay = document.createElement('div');
	          overlay.setAttribute('class', 'transfer-tribe-exit-backdrop');
	          var container = document.createElement('div');
	          container.setAttribute('class', 'container');

	          ExitIntent({
	            threshold: 5,
	            maxDisplays: 1,
	            eventThrottle: 100,
	            onExitIntent: function onExitIntent() {
	              exitPopup.setAttribute('class', 'transfer-tribe-popup transfer-tribe-showExitPopup');
	              overlay.setAttribute('class', 'transfer-tribe-exit-backdrop');
	              sendAnalyticsToAdmin({
	                event: EXIT_POPUP_WAS_TRIGGERED
	              });

	              sessionStorage.setItem('transfer-tribe-popup-details', _JSON$stringify({
	                lastOpened: new Date().getTime() / 1000,
	                impressionsCount: 0,
	                shownCount: shownCount + 1
	              }));
	            }
	          });

	          document.body.appendChild(exitPopup);
	          document.body.appendChild(overlay);
	          document.body.appendChild(container);

	          var styleTag = document.createElement('style');
	          var styleText = '@font-face { font-family: "' + response.data.cust_font.name + '"; ';
	          response.data.cust_font.files.map(function (filename) {
	            styleText += 'src: url("' + filename.file + '") format("' + filename.type + '"), ';
	          });
	          styleText = styleText.substring(0, styleText.length - 2);
	          styleText += '}';
	          styleTag.textContent = styleText;
	          document.head.appendChild(styleTag);
	        }, 3000);
	      },
	      headers: [{ type: 'Accept', value: 'application/json' }, { type: 'Referrer', value: '' + referrer }],
	      onError: handleAdminFailedResponse
	    });
	  }
	}

	function generateWelcomePopup() {
	  // eslint-disable-next-line
	  if (!!document.getElementById('transfer-tribe-WelcomePopup')) {
	    return;
	  }

	  // const host = window.location.hostname;
	  var url = window.location.href;
	  var promotionCode = getParameterByName(VOUCHER_URL_PARAM, url);
	  var decodedToken = parseJwt(promotionCode);
	  var dateNow = new Date();

	  if (decodedToken.expiration_date >= dateNow.toISOString()) {
	    var welcomePopupChildren = welcomePopupChildElements(decodedToken);
	    var welcomePopup = document.createElement('div');
	    welcomePopup.setAttribute('class', 'transfer-tribe-showWelcomePopup');
	    welcomePopup.setAttribute('id', 'transfer-tribe-WelcomePopup');
	    appendElements(welcomePopup, welcomePopupChildren);

	    makeRequest({
	      type: 'GET',
	      url: getValidateCodeUrl("https://admin.transfertribe.com", decodedToken.voucher_code),
	      callback: function callback(response) {
	        if (response.data.is_valid) {
	          // Moved discount generation to admin to solve cors issue
	          // if (!response.data.is_discount_generated) {
	          //   createDiscount({
	          //     shop: host,
	          //     title: decodedToken.voucher_title,
	          //     type: decodedToken.voucher_type,
	          //     accessToken: decodedToken.shopify_access_token,
	          //     value: decodedToken.voucher_amount,
	          //     startsAt: decodedToken.start_date,
	          //     endsAt: decodedToken.expiration_date,
	          //     code: decodedToken.voucher_code,
	          //   });
	          // }

	          sendAnalyticsToAdmin({
	            event: WELCOME_POPUP_WAS_TRIGGERED,
	            payload: _JSON$stringify({
	              voucher_code: decodedToken.voucher_code,
	              is_email_ct: getParameterByName(IS_EMAIL_CT_URL_PARAM, window.location.href)
	            })
	          });

	          document.body.appendChild(welcomePopup);
	        }
	      },
	      headers: [{ type: 'Accept', value: 'application/json' }],
	      onError: handleAdminFailedResponse
	    });
	  }
	}

	/* eslint-disable */
	window.mobileCheck = function () {
	  var check = false;
	  (function (a) {
	    if (/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0, 4))) check = true;
	  })(navigator.userAgent || navigator.vendor || window.opera);
	  return check;
	};

	// for MVP dont show on mobile
	var parameterByName = getParameterByName(VOUCHER_URL_PARAM, window.location.href);

	if (!window.mobileCheck() || parameterByName) {
	  !parameterByName ? generateExitPopup() : generateWelcomePopup();
	}

})));
//# sourceMappingURL=index.js.map
