{"version":3,"file":"app.s2023-0.min.js","mappings":"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","sources":["/node_modules/@bugsnag/browser/dist/bugsnag.js","/node_modules/@bugsnag/js/browser/notifier.js","/wp-content/themes/komono/gulp/assets/js/modules/countdown.ts","/wp-content/themes/komono/gulp/assets/js/modules/country-city-select.ts","/wp-content/themes/komono/gulp/assets/js/modules/dots.ts","/wp-content/themes/komono/gulp/assets/js/modules/mr-fly-out-menu-trigger.ts","/wp-content/themes/komono/gulp/assets/js/modules/mr-fly-out-menu.ts","/wp-content/themes/komono/gulp/assets/js/modules/mr-hotspot.ts","/wp-content/themes/komono/gulp/assets/js/modules/showcase-item-cta-full-click.ts","/wp-content/themes/komono/gulp/assets/js/modules/video/user-interacting.ts","/node_modules/core-js/internals/a-callable.js","/node_modules/core-js/internals/an-object.js","/node_modules/core-js/internals/array-includes.js","/node_modules/core-js/internals/array-set-length.js","/node_modules/core-js/internals/classof-raw.js","/node_modules/core-js/internals/copy-constructor-properties.js","/node_modules/core-js/internals/create-non-enumerable-property.js","/node_modules/core-js/internals/create-property-descriptor.js","/node_modules/core-js/internals/define-built-in.js","/node_modules/core-js/internals/define-global-property.js","/node_modules/core-js/internals/descriptors.js","/node_modules/core-js/internals/document-all.js","/node_modules/core-js/internals/document-create-element.js","/node_modules/core-js/internals/does-not-exceed-safe-integer.js","/node_modules/core-js/internals/engine-user-agent.js","/node_modules/core-js/internals/engine-v8-version.js","/node_modules/core-js/internals/enum-bug-keys.js","/node_modules/core-js/internals/export.js","/node_modules/core-js/internals/fails.js","/node_modules/core-js/internals/function-bind-native.js","/node_modules/core-js/internals/function-call.js","/node_modules/core-js/internals/function-name.js","/node_modules/core-js/internals/function-uncurry-this.js","/node_modules/core-js/internals/get-built-in.js","/node_modules/core-js/internals/get-method.js","/node_modules/core-js/internals/global.js","/node_modules/core-js/internals/has-own-property.js","/node_modules/core-js/internals/hidden-keys.js","/node_modules/core-js/internals/ie8-dom-define.js","/node_modules/core-js/internals/indexed-object.js","/node_modules/core-js/internals/inspect-source.js","/node_modules/core-js/internals/internal-state.js","/node_modules/core-js/internals/is-array.js","/node_modules/core-js/internals/is-callable.js","/node_modules/core-js/internals/is-forced.js","/node_modules/core-js/internals/is-null-or-undefined.js","/node_modules/core-js/internals/is-object.js","/node_modules/core-js/internals/is-pure.js","/node_modules/core-js/internals/is-symbol.js","/node_modules/core-js/internals/length-of-array-like.js","/node_modules/core-js/internals/make-built-in.js","/node_modules/core-js/internals/math-trunc.js","/node_modules/core-js/internals/object-define-property.js","/node_modules/core-js/internals/object-get-own-property-descriptor.js","/node_modules/core-js/internals/object-get-own-property-names.js","/node_modules/core-js/internals/object-get-own-property-symbols.js","/node_modules/core-js/internals/object-is-prototype-of.js","/node_modules/core-js/internals/object-keys-internal.js","/node_modules/core-js/internals/object-property-is-enumerable.js","/node_modules/core-js/internals/ordinary-to-primitive.js","/node_modules/core-js/internals/own-keys.js","/node_modules/core-js/internals/require-object-coercible.js","/node_modules/core-js/internals/shared-key.js","/node_modules/core-js/internals/shared-store.js","/node_modules/core-js/internals/shared.js","/node_modules/core-js/internals/symbol-constructor-detection.js","/node_modules/core-js/internals/to-absolute-index.js","/node_modules/core-js/internals/to-indexed-object.js","/node_modules/core-js/internals/to-integer-or-infinity.js","/node_modules/core-js/internals/to-length.js","/node_modules/core-js/internals/to-object.js","/node_modules/core-js/internals/to-primitive.js","/node_modules/core-js/internals/to-property-key.js","/node_modules/core-js/internals/try-to-string.js","/node_modules/core-js/internals/uid.js","/node_modules/core-js/internals/use-symbol-as-uid.js","/node_modules/core-js/internals/v8-prototype-define-bug.js","/node_modules/core-js/internals/weak-map-basic-detection.js","/node_modules/core-js/internals/well-known-symbol.js","/node_modules/core-js/modules/es.array.push.js","webpack/bootstrap","webpack/runtime/compat get default export","webpack/runtime/define property getters","webpack/runtime/global","webpack/runtime/hasOwnProperty shorthand","/packages/bugsnag-config/lib/bugsnag-config.ts","/packages/mr-interactive/lib/mr-input-sink/mr-input-sink.ts","/packages/mr-interactive/lib/cookie/cookie.ts","/packages/mr-interactive/lib/privacy-controls/gtm/gtm.ts","/wp-content/themes/komono/gulp/assets/js/modules/tracking/acceptance-metrics.ts","/packages/prefers-reduced-motion/lib/prefers-reduced-motion.ts","/packages/play-all-animations/lib/play-all-animations.ts","/packages/mr-interactive/lib/mr-dialog/mr-dialog.ts","/wp-content/themes/komono/gulp/assets/js/modules/tracking/privacy-dialog.ts","/packages/mr-interactive/lib/mr-accordion/mr-accordion.ts","/wp-content/themes/komono/gulp/assets/js/modules/mr-accordion.ts","/packages/mr-interactive/lib/mr-modal-dialog/mr-modal-dialog.ts","/wp-content/themes/komono/gulp/assets/js/modules/mr-navigation-overlay.ts","/wp-content/themes/komono/gulp/assets/js/modules/mr-navigation-overlay-trigger.ts","/wp-content/themes/komono/gulp/assets/js/shared/shared.js","/packages/mr-interactive/lib/privacy-controls/gtm/gtm-setup.ts","/packages/mr-interactive/lib/privacy-controls/do-not-track/do-not-track.ts","/wp-content/themes/komono/gulp/assets/js/helpers/set-text.ts","/wp-content/themes/komono/gulp/assets/js/helpers/position.ts","/wp-content/themes/komono/gulp/assets/js/modules/distance-from-me.ts","/wp-content/themes/komono/gulp/assets/js/modules/klaviyo-subscribe.ts","/wp-content/themes/komono/gulp/assets/js/modules/navigation-bar-info.ts","/wp-content/themes/komono/gulp/assets/js/helpers/throttle.ts","/wp-content/themes/komono/gulp/assets/js/modules/spotlight-hover.ts","/wp-content/themes/komono/gulp/assets/js/modules/store-locator-preview-list.ts","/wp-content/themes/komono/gulp/assets/js/modules/video/video-swap.ts","/wp-content/themes/komono/gulp/assets/js/modules/video/video.ts","/wp-content/themes/komono/gulp/assets/js/modules/video/scrub.ts","/wp-content/themes/komono/gulp/assets/js/modules/video/progress.ts","/packages/mr-interactive/lib/media/sound/mute-toggle.ts","/packages/mr-interactive/lib/media/playback/play-pause-toggle.ts","/packages/mr-interactive/lib/media/fullscreen/fullscreen.ts","/wp-content/themes/komono/gulp/assets/js/app.js"],"sourcesContent":["(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.Bugsnag = f()}})(function(){var define,module,exports;\nvar _$breadcrumbTypes_8 = ['navigation', 'request', 'process', 'log', 'user', 'state', 'error', 'manual'];\n\n// Array#reduce\nvar _$reduce_17 = function (arr, fn, accum) {\n var val = accum;\n\n for (var i = 0, len = arr.length; i < len; i++) {\n val = fn(val, arr[i], i, arr);\n }\n\n return val;\n};\n\n/* removed: var _$reduce_17 = require('./reduce'); */; // Array#filter\n\n\nvar _$filter_12 = function (arr, fn) {\n return _$reduce_17(arr, function (accum, item, i, arr) {\n return !fn(item, i, arr) ? accum : accum.concat(item);\n }, []);\n};\n\n/* removed: var _$reduce_17 = require('./reduce'); */; // Array#includes\n\n\nvar _$includes_13 = function (arr, x) {\n return _$reduce_17(arr, function (accum, item, i, arr) {\n return accum === true || item === x;\n }, false);\n};\n\n// Array#isArray\nvar _$isArray_14 = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n};\n\n/* eslint-disable-next-line no-prototype-builtins */\nvar _hasDontEnumBug = !{\n toString: null\n}.propertyIsEnumerable('toString');\n\nvar _dontEnums = ['toString', 'toLocaleString', 'valueOf', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'constructor']; // Object#keys\n\nvar _$keys_15 = function (obj) {\n // stripped down version of\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/Keys\n var result = [];\n var prop;\n\n for (prop in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, prop)) result.push(prop);\n }\n\n if (!_hasDontEnumBug) return result;\n\n for (var i = 0, len = _dontEnums.length; i < len; i++) {\n if (Object.prototype.hasOwnProperty.call(obj, _dontEnums[i])) result.push(_dontEnums[i]);\n }\n\n return result;\n};\n\nvar _$intRange_24 = function (min, max) {\n if (min === void 0) {\n min = 1;\n }\n\n if (max === void 0) {\n max = Infinity;\n }\n\n return function (value) {\n return typeof value === 'number' && parseInt('' + value, 10) === value && value >= min && value <= max;\n };\n};\n\n/* removed: var _$filter_12 = require('../es-utils/filter'); */;\n\n/* removed: var _$isArray_14 = require('../es-utils/is-array'); */;\n\nvar _$listOfFunctions_25 = function (value) {\n return typeof value === 'function' || _$isArray_14(value) && _$filter_12(value, function (f) {\n return typeof f === 'function';\n }).length === value.length;\n};\n\nvar _$stringWithLength_26 = function (value) {\n return typeof value === 'string' && !!value.length;\n};\n\nvar _$config_5 = {};\n/* removed: var _$filter_12 = require('./lib/es-utils/filter'); */;\n\n/* removed: var _$reduce_17 = require('./lib/es-utils/reduce'); */;\n\n/* removed: var _$keys_15 = require('./lib/es-utils/keys'); */;\n\n/* removed: var _$isArray_14 = require('./lib/es-utils/is-array'); */;\n\n/* removed: var _$includes_13 = require('./lib/es-utils/includes'); */;\n\n/* removed: var _$intRange_24 = require('./lib/validators/int-range'); */;\n\n/* removed: var _$stringWithLength_26 = require('./lib/validators/string-with-length'); */;\n\n/* removed: var _$listOfFunctions_25 = require('./lib/validators/list-of-functions'); */;\n\n/* removed: var _$breadcrumbTypes_8 = require('./lib/breadcrumb-types'); */;\n\nvar defaultErrorTypes = function () {\n return {\n unhandledExceptions: true,\n unhandledRejections: true\n };\n};\n\n_$config_5.schema = {\n apiKey: {\n defaultValue: function () {\n return null;\n },\n message: 'is required',\n validate: _$stringWithLength_26\n },\n appVersion: {\n defaultValue: function () {\n return undefined;\n },\n message: 'should be a string',\n validate: function (value) {\n return value === undefined || _$stringWithLength_26(value);\n }\n },\n appType: {\n defaultValue: function () {\n return undefined;\n },\n message: 'should be a string',\n validate: function (value) {\n return value === undefined || _$stringWithLength_26(value);\n }\n },\n autoDetectErrors: {\n defaultValue: function () {\n return true;\n },\n message: 'should be true|false',\n validate: function (value) {\n return value === true || value === false;\n }\n },\n enabledErrorTypes: {\n defaultValue: function () {\n return defaultErrorTypes();\n },\n message: 'should be an object containing the flags { unhandledExceptions:true|false, unhandledRejections:true|false }',\n allowPartialObject: true,\n validate: function (value) {\n // ensure we have an object\n if (typeof value !== 'object' || !value) return false;\n var providedKeys = _$keys_15(value);\n var defaultKeys = _$keys_15(defaultErrorTypes()); // ensure it only has a subset of the allowed keys\n\n if (_$filter_12(providedKeys, function (k) {\n return _$includes_13(defaultKeys, k);\n }).length < providedKeys.length) return false; // ensure all of the values are boolean\n\n if (_$filter_12(_$keys_15(value), function (k) {\n return typeof value[k] !== 'boolean';\n }).length > 0) return false;\n return true;\n }\n },\n onError: {\n defaultValue: function () {\n return [];\n },\n message: 'should be a function or array of functions',\n validate: _$listOfFunctions_25\n },\n onSession: {\n defaultValue: function () {\n return [];\n },\n message: 'should be a function or array of functions',\n validate: _$listOfFunctions_25\n },\n onBreadcrumb: {\n defaultValue: function () {\n return [];\n },\n message: 'should be a function or array of functions',\n validate: _$listOfFunctions_25\n },\n endpoints: {\n defaultValue: function () {\n return {\n notify: 'https://notify.bugsnag.com',\n sessions: 'https://sessions.bugsnag.com'\n };\n },\n message: 'should be an object containing endpoint URLs { notify, sessions }',\n validate: function (val) {\n return (// first, ensure it's an object\n val && typeof val === 'object' && // notify and sessions must always be set\n _$stringWithLength_26(val.notify) && _$stringWithLength_26(val.sessions) && // ensure no keys other than notify/session are set on endpoints object\n _$filter_12(_$keys_15(val), function (k) {\n return !_$includes_13(['notify', 'sessions'], k);\n }).length === 0\n );\n }\n },\n autoTrackSessions: {\n defaultValue: function (val) {\n return true;\n },\n message: 'should be true|false',\n validate: function (val) {\n return val === true || val === false;\n }\n },\n enabledReleaseStages: {\n defaultValue: function () {\n return null;\n },\n message: 'should be an array of strings',\n validate: function (value) {\n return value === null || _$isArray_14(value) && _$filter_12(value, function (f) {\n return typeof f === 'string';\n }).length === value.length;\n }\n },\n releaseStage: {\n defaultValue: function () {\n return 'production';\n },\n message: 'should be a string',\n validate: function (value) {\n return typeof value === 'string' && value.length;\n }\n },\n maxBreadcrumbs: {\n defaultValue: function () {\n return 25;\n },\n message: 'should be a number ≤100',\n validate: function (value) {\n return _$intRange_24(0, 100)(value);\n }\n },\n enabledBreadcrumbTypes: {\n defaultValue: function () {\n return _$breadcrumbTypes_8;\n },\n message: \"should be null or a list of available breadcrumb types (\" + _$breadcrumbTypes_8.join(',') + \")\",\n validate: function (value) {\n return value === null || _$isArray_14(value) && _$reduce_17(value, function (accum, maybeType) {\n if (accum === false) return accum;\n return _$includes_13(_$breadcrumbTypes_8, maybeType);\n }, true);\n }\n },\n context: {\n defaultValue: function () {\n return undefined;\n },\n message: 'should be a string',\n validate: function (value) {\n return value === undefined || typeof value === 'string';\n }\n },\n user: {\n defaultValue: function () {\n return {};\n },\n message: 'should be an object with { id, email, name } properties',\n validate: function (value) {\n return value === null || value && _$reduce_17(_$keys_15(value), function (accum, key) {\n return accum && _$includes_13(['id', 'email', 'name'], key);\n }, true);\n }\n },\n metadata: {\n defaultValue: function () {\n return {};\n },\n message: 'should be an object',\n validate: function (value) {\n return typeof value === 'object' && value !== null;\n }\n },\n logger: {\n defaultValue: function () {\n return undefined;\n },\n message: 'should be null or an object with methods { debug, info, warn, error }',\n validate: function (value) {\n return !value || value && _$reduce_17(['debug', 'info', 'warn', 'error'], function (accum, method) {\n return accum && typeof value[method] === 'function';\n }, true);\n }\n },\n redactedKeys: {\n defaultValue: function () {\n return ['password'];\n },\n message: 'should be an array of strings|regexes',\n validate: function (value) {\n return _$isArray_14(value) && value.length === _$filter_12(value, function (s) {\n return typeof s === 'string' || s && typeof s.test === 'function';\n }).length;\n }\n },\n plugins: {\n defaultValue: function () {\n return [];\n },\n message: 'should be an array of plugin objects',\n validate: function (value) {\n return _$isArray_14(value) && value.length === _$filter_12(value, function (p) {\n return p && typeof p === 'object' && typeof p.load === 'function';\n }).length;\n }\n },\n featureFlags: {\n defaultValue: function () {\n return [];\n },\n message: 'should be an array of objects that have a \"name\" property',\n validate: function (value) {\n return _$isArray_14(value) && value.length === _$filter_12(value, function (feature) {\n return feature && typeof feature === 'object' && typeof feature.name === 'string';\n }).length;\n }\n }\n};\n\n// extends helper from babel\n// https://github.com/babel/babel/blob/916429b516e6466fd06588ee820e40e025d7f3a3/packages/babel-helpers/src/helpers.js#L377-L393\nvar _$assign_11 = function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n/* removed: var _$reduce_17 = require('./reduce'); */; // Array#map\n\n\nvar _$map_16 = function (arr, fn) {\n return _$reduce_17(arr, function (accum, item, i, arr) {\n return accum.concat(fn(item, i, arr));\n }, []);\n};\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nvar schema = _$config_5.schema;\n\n/* removed: var _$map_16 = require('@bugsnag/core/lib/es-utils/map'); */;\n\n/* removed: var _$assign_11 = require('@bugsnag/core/lib/es-utils/assign'); */;\n\nvar _$config_1 = {\n releaseStage: _$assign_11({}, schema.releaseStage, {\n defaultValue: function () {\n if (/^localhost(:\\d+)?$/.test(window.location.host)) return 'development';\n return 'production';\n }\n }),\n appType: _extends({}, schema.appType, {\n defaultValue: function () {\n return 'browser';\n }\n }),\n logger: _$assign_11({}, schema.logger, {\n defaultValue: function () {\n return (// set logger based on browser capability\n typeof console !== 'undefined' && typeof console.debug === 'function' ? getPrefixedConsole() : undefined\n );\n }\n })\n};\n\nvar getPrefixedConsole = function () {\n var logger = {};\n var consoleLog = console.log;\n _$map_16(['debug', 'info', 'warn', 'error'], function (method) {\n var consoleMethod = console[method];\n logger[method] = typeof consoleMethod === 'function' ? consoleMethod.bind(console, '[bugsnag]') : consoleLog.bind(console, '[bugsnag]');\n });\n return logger;\n};\n\nvar Breadcrumb = /*#__PURE__*/function () {\n function Breadcrumb(message, metadata, type, timestamp) {\n if (timestamp === void 0) {\n timestamp = new Date();\n }\n\n this.type = type;\n this.message = message;\n this.metadata = metadata;\n this.timestamp = timestamp;\n }\n\n var _proto = Breadcrumb.prototype;\n\n _proto.toJSON = function toJSON() {\n return {\n type: this.type,\n name: this.message,\n timestamp: this.timestamp,\n metaData: this.metadata\n };\n };\n\n return Breadcrumb;\n}();\n\nvar _$Breadcrumb_3 = Breadcrumb;\n\nvar _$stackframe_34 = {};\n(function (root, factory) {\n 'use strict'; // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n\n if (typeof define === 'function' && define.amd) {\n define('stackframe', [], factory);\n } else if (typeof _$stackframe_34 === 'object') {\n _$stackframe_34 = factory();\n } else {\n root.StackFrame = factory();\n }\n})(this, function () {\n 'use strict';\n\n function _isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n }\n\n function _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.substring(1);\n }\n\n function _getter(p) {\n return function () {\n return this[p];\n };\n }\n\n var booleanProps = ['isConstructor', 'isEval', 'isNative', 'isToplevel'];\n var numericProps = ['columnNumber', 'lineNumber'];\n var stringProps = ['fileName', 'functionName', 'source'];\n var arrayProps = ['args'];\n var props = booleanProps.concat(numericProps, stringProps, arrayProps);\n\n function StackFrame(obj) {\n if (obj instanceof Object) {\n for (var i = 0; i < props.length; i++) {\n if (obj.hasOwnProperty(props[i]) && obj[props[i]] !== undefined) {\n this['set' + _capitalize(props[i])](obj[props[i]]);\n }\n }\n }\n }\n\n StackFrame.prototype = {\n getArgs: function () {\n return this.args;\n },\n setArgs: function (v) {\n if (Object.prototype.toString.call(v) !== '[object Array]') {\n throw new TypeError('Args must be an Array');\n }\n\n this.args = v;\n },\n getEvalOrigin: function () {\n return this.evalOrigin;\n },\n setEvalOrigin: function (v) {\n if (v instanceof StackFrame) {\n this.evalOrigin = v;\n } else if (v instanceof Object) {\n this.evalOrigin = new StackFrame(v);\n } else {\n throw new TypeError('Eval Origin must be an Object or StackFrame');\n }\n },\n toString: function () {\n var functionName = this.getFunctionName() || '{anonymous}';\n var args = '(' + (this.getArgs() || []).join(',') + ')';\n var fileName = this.getFileName() ? '@' + this.getFileName() : '';\n var lineNumber = _isNumber(this.getLineNumber()) ? ':' + this.getLineNumber() : '';\n var columnNumber = _isNumber(this.getColumnNumber()) ? ':' + this.getColumnNumber() : '';\n return functionName + args + fileName + lineNumber + columnNumber;\n }\n };\n\n for (var i = 0; i < booleanProps.length; i++) {\n StackFrame.prototype['get' + _capitalize(booleanProps[i])] = _getter(booleanProps[i]);\n\n StackFrame.prototype['set' + _capitalize(booleanProps[i])] = function (p) {\n return function (v) {\n this[p] = Boolean(v);\n };\n }(booleanProps[i]);\n }\n\n for (var j = 0; j < numericProps.length; j++) {\n StackFrame.prototype['get' + _capitalize(numericProps[j])] = _getter(numericProps[j]);\n\n StackFrame.prototype['set' + _capitalize(numericProps[j])] = function (p) {\n return function (v) {\n if (!_isNumber(v)) {\n throw new TypeError(p + ' must be a Number');\n }\n\n this[p] = Number(v);\n };\n }(numericProps[j]);\n }\n\n for (var k = 0; k < stringProps.length; k++) {\n StackFrame.prototype['get' + _capitalize(stringProps[k])] = _getter(stringProps[k]);\n\n StackFrame.prototype['set' + _capitalize(stringProps[k])] = function (p) {\n return function (v) {\n this[p] = String(v);\n };\n }(stringProps[k]);\n }\n\n return StackFrame;\n});\n\nvar _$errorStackParser_31 = {};\n(function (root, factory) {\n 'use strict'; // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n\n if (typeof define === 'function' && define.amd) {\n define('error-stack-parser', ['stackframe'], factory);\n } else if (typeof _$errorStackParser_31 === 'object') {\n _$errorStackParser_31 = factory(_$stackframe_34);\n } else {\n root.ErrorStackParser = factory(root.StackFrame);\n }\n})(this, function ErrorStackParser(StackFrame) {\n 'use strict';\n\n var FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+\\:\\d+/;\n var CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+\\:\\d+|\\(native\\))/m;\n var SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code\\])?$/;\n return {\n /**\n * Given an Error object, extract the most information from it.\n *\n * @param {Error} error object\n * @return {Array} of StackFrames\n */\n parse: function ErrorStackParser$$parse(error) {\n if (typeof error.stacktrace !== 'undefined' || typeof error['opera#sourceloc'] !== 'undefined') {\n return this.parseOpera(error);\n } else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP)) {\n return this.parseV8OrIE(error);\n } else if (error.stack) {\n return this.parseFFOrSafari(error);\n } else {\n throw new Error('Cannot parse given Error object');\n }\n },\n // Separate line and column numbers from a string of the form: (URI:Line:Column)\n extractLocation: function ErrorStackParser$$extractLocation(urlLike) {\n // Fail-fast but return locations like \"(native)\"\n if (urlLike.indexOf(':') === -1) {\n return [urlLike];\n }\n\n var regExp = /(.+?)(?:\\:(\\d+))?(?:\\:(\\d+))?$/;\n var parts = regExp.exec(urlLike.replace(/[\\(\\)]/g, ''));\n return [parts[1], parts[2] || undefined, parts[3] || undefined];\n },\n parseV8OrIE: function ErrorStackParser$$parseV8OrIE(error) {\n var filtered = error.stack.split('\\n').filter(function (line) {\n return !!line.match(CHROME_IE_STACK_REGEXP);\n }, this);\n return filtered.map(function (line) {\n if (line.indexOf('(eval ') > -1) {\n // Throw away eval information until we implement stacktrace.js/stackframe#8\n line = line.replace(/eval code/g, 'eval').replace(/(\\(eval at [^\\()]*)|(\\)\\,.*$)/g, '');\n }\n\n var sanitizedLine = line.replace(/^\\s+/, '').replace(/\\(eval code/g, '('); // capture and preseve the parenthesized location \"(/foo/my bar.js:12:87)\" in\n // case it has spaces in it, as the string is split on \\s+ later on\n\n var location = sanitizedLine.match(/ (\\((.+):(\\d+):(\\d+)\\)$)/); // remove the parenthesized location from the line, if it was matched\n\n sanitizedLine = location ? sanitizedLine.replace(location[0], '') : sanitizedLine;\n var tokens = sanitizedLine.split(/\\s+/).slice(1); // if a location was matched, pass it to extractLocation() otherwise pop the last token\n\n var locationParts = this.extractLocation(location ? location[1] : tokens.pop());\n var functionName = tokens.join(' ') || undefined;\n var fileName = ['eval', ''].indexOf(locationParts[0]) > -1 ? undefined : locationParts[0];\n return new StackFrame({\n functionName: functionName,\n fileName: fileName,\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }, this);\n },\n parseFFOrSafari: function ErrorStackParser$$parseFFOrSafari(error) {\n var filtered = error.stack.split('\\n').filter(function (line) {\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\n }, this);\n return filtered.map(function (line) {\n // Throw away eval information until we implement stacktrace.js/stackframe#8\n if (line.indexOf(' > eval') > -1) {\n line = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval\\:\\d+\\:\\d+/g, ':$1');\n }\n\n if (line.indexOf('@') === -1 && line.indexOf(':') === -1) {\n // Safari eval frames only have function names and nothing else\n return new StackFrame({\n functionName: line\n });\n } else {\n var functionNameRegex = /((.*\".+\"[^@]*)?[^@]*)(?:@)/;\n var matches = line.match(functionNameRegex);\n var functionName = matches && matches[1] ? matches[1] : undefined;\n var locationParts = this.extractLocation(line.replace(functionNameRegex, ''));\n return new StackFrame({\n functionName: functionName,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }\n }, this);\n },\n parseOpera: function ErrorStackParser$$parseOpera(e) {\n if (!e.stacktrace || e.message.indexOf('\\n') > -1 && e.message.split('\\n').length > e.stacktrace.split('\\n').length) {\n return this.parseOpera9(e);\n } else if (!e.stack) {\n return this.parseOpera10(e);\n } else {\n return this.parseOpera11(e);\n }\n },\n parseOpera9: function ErrorStackParser$$parseOpera9(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\n var lines = e.message.split('\\n');\n var result = [];\n\n for (var i = 2, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n\n if (match) {\n result.push(new StackFrame({\n fileName: match[2],\n lineNumber: match[1],\n source: lines[i]\n }));\n }\n }\n\n return result;\n },\n parseOpera10: function ErrorStackParser$$parseOpera10(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\n var lines = e.stacktrace.split('\\n');\n var result = [];\n\n for (var i = 0, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n\n if (match) {\n result.push(new StackFrame({\n functionName: match[3] || undefined,\n fileName: match[2],\n lineNumber: match[1],\n source: lines[i]\n }));\n }\n }\n\n return result;\n },\n // Opera 10.65+ Error.stack very similar to FF/Safari\n parseOpera11: function ErrorStackParser$$parseOpera11(error) {\n var filtered = error.stack.split('\\n').filter(function (line) {\n return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/);\n }, this);\n return filtered.map(function (line) {\n var tokens = line.split('@');\n var locationParts = this.extractLocation(tokens.pop());\n var functionCall = tokens.shift() || '';\n var functionName = functionCall.replace(//, '$2').replace(/\\([^\\)]*\\)/g, '') || undefined;\n var argsRaw;\n\n if (functionCall.match(/\\(([^\\)]*)\\)/)) {\n argsRaw = functionCall.replace(/^[^\\(]+\\(([^\\)]*)\\)$/, '$1');\n }\n\n var args = argsRaw === undefined || argsRaw === '[arguments not available]' ? undefined : argsRaw.split(',');\n return new StackFrame({\n functionName: functionName,\n args: args,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }, this);\n }\n };\n});\n\nvar _$errorStackParser_10 = _$errorStackParser_31;\n\nvar _$safeJsonStringify_30 = function (data, replacer, space, opts) {\n var redactedKeys = opts && opts.redactedKeys ? opts.redactedKeys : [];\n var redactedPaths = opts && opts.redactedPaths ? opts.redactedPaths : [];\n return JSON.stringify(prepareObjForSerialization(data, redactedKeys, redactedPaths), replacer, space);\n};\n\nvar MAX_DEPTH = 20;\nvar MAX_EDGES = 25000;\nvar MIN_PRESERVED_DEPTH = 8;\nvar REPLACEMENT_NODE = '...';\n\nfunction isError(o) {\n return o instanceof Error || /^\\[object (Error|(Dom)?Exception)\\]$/.test(Object.prototype.toString.call(o));\n}\n\nfunction throwsMessage(err) {\n return '[Throws: ' + (err ? err.message : '?') + ']';\n}\n\nfunction find(haystack, needle) {\n for (var i = 0, len = haystack.length; i < len; i++) {\n if (haystack[i] === needle) return true;\n }\n\n return false;\n} // returns true if the string `path` starts with any of the provided `paths`\n\n\nfunction isDescendent(paths, path) {\n for (var i = 0, len = paths.length; i < len; i++) {\n if (path.indexOf(paths[i]) === 0) return true;\n }\n\n return false;\n}\n\nfunction shouldRedact(patterns, key) {\n for (var i = 0, len = patterns.length; i < len; i++) {\n if (typeof patterns[i] === 'string' && patterns[i].toLowerCase() === key.toLowerCase()) return true;\n if (patterns[i] && typeof patterns[i].test === 'function' && patterns[i].test(key)) return true;\n }\n\n return false;\n}\n\nfunction __isArray_30(obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n}\n\nfunction safelyGetProp(obj, prop) {\n try {\n return obj[prop];\n } catch (err) {\n return throwsMessage(err);\n }\n}\n\nfunction prepareObjForSerialization(obj, redactedKeys, redactedPaths) {\n var seen = []; // store references to objects we have seen before\n\n var edges = 0;\n\n function visit(obj, path) {\n function edgesExceeded() {\n return path.length > MIN_PRESERVED_DEPTH && edges > MAX_EDGES;\n }\n\n edges++;\n if (path.length > MAX_DEPTH) return REPLACEMENT_NODE;\n if (edgesExceeded()) return REPLACEMENT_NODE;\n if (obj === null || typeof obj !== 'object') return obj;\n if (find(seen, obj)) return '[Circular]';\n seen.push(obj);\n\n if (typeof obj.toJSON === 'function') {\n try {\n // we're not going to count this as an edge because it\n // replaces the value of the currently visited object\n edges--;\n var fResult = visit(obj.toJSON(), path);\n seen.pop();\n return fResult;\n } catch (err) {\n return throwsMessage(err);\n }\n }\n\n var er = isError(obj);\n\n if (er) {\n edges--;\n var eResult = visit({\n name: obj.name,\n message: obj.message\n }, path);\n seen.pop();\n return eResult;\n }\n\n if (__isArray_30(obj)) {\n var aResult = [];\n\n for (var i = 0, len = obj.length; i < len; i++) {\n if (edgesExceeded()) {\n aResult.push(REPLACEMENT_NODE);\n break;\n }\n\n aResult.push(visit(obj[i], path.concat('[]')));\n }\n\n seen.pop();\n return aResult;\n }\n\n var result = {};\n\n try {\n for (var prop in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, prop)) continue;\n\n if (isDescendent(redactedPaths, path.join('.')) && shouldRedact(redactedKeys, prop)) {\n result[prop] = '[REDACTED]';\n continue;\n }\n\n if (edgesExceeded()) {\n result[prop] = REPLACEMENT_NODE;\n break;\n }\n\n result[prop] = visit(safelyGetProp(obj, prop), path.concat(prop));\n }\n } catch (e) {}\n\n seen.pop();\n return result;\n }\n\n return visit(obj, []);\n}\n\n/* removed: var _$map_16 = require('./es-utils/map'); */;\n\n/* removed: var _$filter_12 = require('./es-utils/filter'); */;\n\n/* removed: var _$isArray_14 = require('./es-utils/is-array'); */;\n\n/* removed: var _$safeJsonStringify_30 = require('@bugsnag/safe-json-stringify'); */;\n\nfunction add(existingFeatures, existingFeatureKeys, name, variant) {\n if (typeof name !== 'string') {\n return;\n }\n\n if (variant === undefined) {\n variant = null;\n } else if (variant !== null && typeof variant !== 'string') {\n variant = _$safeJsonStringify_30(variant);\n }\n\n var existingIndex = existingFeatureKeys[name];\n\n if (typeof existingIndex === 'number') {\n existingFeatures[existingIndex] = {\n name: name,\n variant: variant\n };\n return;\n }\n\n existingFeatures.push({\n name: name,\n variant: variant\n });\n existingFeatureKeys[name] = existingFeatures.length - 1;\n}\n\nfunction merge(existingFeatures, newFeatures, existingFeatureKeys) {\n if (!_$isArray_14(newFeatures)) {\n return;\n }\n\n for (var i = 0; i < newFeatures.length; ++i) {\n var feature = newFeatures[i];\n\n if (feature === null || typeof feature !== 'object') {\n continue;\n } // 'add' will handle if 'name' doesn't exist & 'variant' is optional\n\n\n add(existingFeatures, existingFeatureKeys, feature.name, feature.variant);\n }\n\n return existingFeatures;\n} // convert feature flags from a map of 'name -> variant' into the format required\n// by the Bugsnag Event API:\n// [{ featureFlag: 'name', variant: 'variant' }, { featureFlag: 'name 2' }]\n\n\nfunction toEventApi(featureFlags) {\n return _$map_16(_$filter_12(featureFlags, Boolean), function (_ref) {\n var name = _ref.name,\n variant = _ref.variant;\n var flag = {\n featureFlag: name\n }; // don't add a 'variant' property unless there's actually a value\n\n if (typeof variant === 'string') {\n flag.variant = variant;\n }\n\n return flag;\n });\n}\n\nfunction clear(features, featuresIndex, name) {\n var existingIndex = featuresIndex[name];\n\n if (typeof existingIndex === 'number') {\n features[existingIndex] = null;\n delete featuresIndex[name];\n }\n}\n\nvar _$featureFlagDelegate_18 = {\n add: add,\n clear: clear,\n merge: merge,\n toEventApi: toEventApi\n};\n\n// Given `err` which may be an error, does it have a stack property which is a string?\nvar _$hasStack_19 = function (err) {\n return !!err && (!!err.stack || !!err.stacktrace || !!err['opera#sourceloc']) && typeof (err.stack || err.stacktrace || err['opera#sourceloc']) === 'string' && err.stack !== err.name + \": \" + err.message;\n};\n\n/**\n * Expose `isError`.\n */\nvar _$isError_32 = __isError_32;\n/**\n * Test whether `value` is error object.\n *\n * @param {*} value\n * @returns {boolean}\n */\n\nfunction __isError_32(value) {\n switch (Object.prototype.toString.call(value)) {\n case '[object Error]':\n return true;\n\n case '[object Exception]':\n return true;\n\n case '[object DOMException]':\n return true;\n\n default:\n return value instanceof Error;\n }\n}\n\nvar _$iserror_20 = _$isError_32;\n\n/* removed: var _$assign_11 = require('./es-utils/assign'); */;\n\nvar __add_22 = function (state, section, keyOrObj, maybeVal) {\n var _updates;\n\n if (!section) return;\n var updates; // addMetadata(\"section\", null) -> clears section\n\n if (keyOrObj === null) return __clear_22(state, section); // normalise the two supported input types into object form\n\n if (typeof keyOrObj === 'object') updates = keyOrObj;\n if (typeof keyOrObj === 'string') updates = (_updates = {}, _updates[keyOrObj] = maybeVal, _updates); // exit if we don't have an updates object at this point\n\n if (!updates) return; // ensure a section with this name exists\n\n if (!state[section]) state[section] = {}; // merge the updates with the existing section\n\n state[section] = _$assign_11({}, state[section], updates);\n};\n\nvar get = function (state, section, key) {\n if (typeof section !== 'string') return undefined;\n\n if (!key) {\n return state[section];\n }\n\n if (state[section]) {\n return state[section][key];\n }\n\n return undefined;\n};\n\nvar __clear_22 = function (state, section, key) {\n if (typeof section !== 'string') return; // clear an entire section\n\n if (!key) {\n delete state[section];\n return;\n } // clear a single value from a section\n\n\n if (state[section]) {\n delete state[section][key];\n }\n};\n\nvar _$metadataDelegate_22 = {\n add: __add_22,\n get: get,\n clear: __clear_22\n};\n\nvar _$stackGenerator_33 = {};\n(function (root, factory) {\n 'use strict'; // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n\n if (typeof define === 'function' && define.amd) {\n define('stack-generator', ['stackframe'], factory);\n } else if (typeof _$stackGenerator_33 === 'object') {\n _$stackGenerator_33 = factory(_$stackframe_34);\n } else {\n root.StackGenerator = factory(root.StackFrame);\n }\n})(this, function (StackFrame) {\n return {\n backtrace: function StackGenerator$$backtrace(opts) {\n var stack = [];\n var maxStackSize = 10;\n\n if (typeof opts === 'object' && typeof opts.maxStackSize === 'number') {\n maxStackSize = opts.maxStackSize;\n }\n\n var curr = arguments.callee;\n\n while (curr && stack.length < maxStackSize && curr['arguments']) {\n // Allow V8 optimizations\n var args = new Array(curr['arguments'].length);\n\n for (var i = 0; i < args.length; ++i) {\n args[i] = curr['arguments'][i];\n }\n\n if (/function(?:\\s+([\\w$]+))+\\s*\\(/.test(curr.toString())) {\n stack.push(new StackFrame({\n functionName: RegExp.$1 || undefined,\n args: args\n }));\n } else {\n stack.push(new StackFrame({\n args: args\n }));\n }\n\n try {\n curr = curr.caller;\n } catch (e) {\n break;\n }\n }\n\n return stack;\n }\n };\n});\n\n/* removed: var _$errorStackParser_10 = require('./lib/error-stack-parser'); */;\n\n/* removed: var _$stackGenerator_33 = require('stack-generator'); */;\n\n/* removed: var _$hasStack_19 = require('./lib/has-stack'); */;\n\n/* removed: var _$map_16 = require('./lib/es-utils/map'); */;\n\n/* removed: var _$reduce_17 = require('./lib/es-utils/reduce'); */;\n\n/* removed: var _$filter_12 = require('./lib/es-utils/filter'); */;\n\n/* removed: var _$assign_11 = require('./lib/es-utils/assign'); */;\n\n/* removed: var _$metadataDelegate_22 = require('./lib/metadata-delegate'); */;\n\n/* removed: var _$featureFlagDelegate_18 = require('./lib/feature-flag-delegate'); */;\n\n/* removed: var _$iserror_20 = require('./lib/iserror'); */;\n\nvar Event = /*#__PURE__*/function () {\n function Event(errorClass, errorMessage, stacktrace, handledState, originalError) {\n if (stacktrace === void 0) {\n stacktrace = [];\n }\n\n if (handledState === void 0) {\n handledState = defaultHandledState();\n }\n\n this.apiKey = undefined;\n this.context = undefined;\n this.groupingHash = undefined;\n this.originalError = originalError;\n this._handledState = handledState;\n this.severity = this._handledState.severity;\n this.unhandled = this._handledState.unhandled;\n this.app = {};\n this.device = {};\n this.request = {};\n this.breadcrumbs = [];\n this.threads = [];\n this._metadata = {};\n this._features = [];\n this._featuresIndex = {};\n this._user = {};\n this._session = undefined;\n this.errors = [createBugsnagError(errorClass, errorMessage, Event.__type, stacktrace)]; // Flags.\n // Note these are not initialised unless they are used\n // to save unnecessary bytes in the browser bundle\n\n /* this.attemptImmediateDelivery, default: true */\n }\n\n var _proto = Event.prototype;\n\n _proto.addMetadata = function addMetadata(section, keyOrObj, maybeVal) {\n return _$metadataDelegate_22.add(this._metadata, section, keyOrObj, maybeVal);\n };\n\n _proto.getMetadata = function getMetadata(section, key) {\n return _$metadataDelegate_22.get(this._metadata, section, key);\n };\n\n _proto.clearMetadata = function clearMetadata(section, key) {\n return _$metadataDelegate_22.clear(this._metadata, section, key);\n };\n\n _proto.addFeatureFlag = function addFeatureFlag(name, variant) {\n if (variant === void 0) {\n variant = null;\n }\n\n _$featureFlagDelegate_18.add(this._features, this._featuresIndex, name, variant);\n };\n\n _proto.addFeatureFlags = function addFeatureFlags(featureFlags) {\n _$featureFlagDelegate_18.merge(this._features, featureFlags, this._featuresIndex);\n };\n\n _proto.getFeatureFlags = function getFeatureFlags() {\n return _$featureFlagDelegate_18.toEventApi(this._features);\n };\n\n _proto.clearFeatureFlag = function clearFeatureFlag(name) {\n _$featureFlagDelegate_18.clear(this._features, this._featuresIndex, name);\n };\n\n _proto.clearFeatureFlags = function clearFeatureFlags() {\n this._features = [];\n this._featuresIndex = {};\n };\n\n _proto.getUser = function getUser() {\n return this._user;\n };\n\n _proto.setUser = function setUser(id, email, name) {\n this._user = {\n id: id,\n email: email,\n name: name\n };\n };\n\n _proto.toJSON = function toJSON() {\n return {\n payloadVersion: '4',\n exceptions: _$map_16(this.errors, function (er) {\n return _$assign_11({}, er, {\n message: er.errorMessage\n });\n }),\n severity: this.severity,\n unhandled: this._handledState.unhandled,\n severityReason: this._handledState.severityReason,\n app: this.app,\n device: this.device,\n request: this.request,\n breadcrumbs: this.breadcrumbs,\n context: this.context,\n groupingHash: this.groupingHash,\n metaData: this._metadata,\n user: this._user,\n session: this._session,\n featureFlags: this.getFeatureFlags()\n };\n };\n\n return Event;\n}(); // takes a stacktrace.js style stackframe (https://github.com/stacktracejs/stackframe)\n// and returns a Bugsnag compatible stackframe (https://docs.bugsnag.com/api/error-reporting/#json-payload)\n\n\nvar formatStackframe = function (frame) {\n var f = {\n file: frame.fileName,\n method: normaliseFunctionName(frame.functionName),\n lineNumber: frame.lineNumber,\n columnNumber: frame.columnNumber,\n code: undefined,\n inProject: undefined\n }; // Some instances result in no file:\n // - calling notify() from chrome's terminal results in no file/method.\n // - non-error exception thrown from global code in FF\n // This adds one.\n\n if (f.lineNumber > -1 && !f.file && !f.method) {\n f.file = 'global code';\n }\n\n return f;\n};\n\nvar normaliseFunctionName = function (name) {\n return /^global code$/i.test(name) ? 'global code' : name;\n};\n\nvar defaultHandledState = function () {\n return {\n unhandled: false,\n severity: 'warning',\n severityReason: {\n type: 'handledException'\n }\n };\n};\n\nvar ensureString = function (str) {\n return typeof str === 'string' ? str : '';\n};\n\nfunction createBugsnagError(errorClass, errorMessage, type, stacktrace) {\n return {\n errorClass: ensureString(errorClass),\n errorMessage: ensureString(errorMessage),\n type: type,\n stacktrace: _$reduce_17(stacktrace, function (accum, frame) {\n var f = formatStackframe(frame); // don't include a stackframe if none of its properties are defined\n\n try {\n if (JSON.stringify(f) === '{}') return accum;\n return accum.concat(f);\n } catch (e) {\n return accum;\n }\n }, [])\n };\n}\n\nfunction getCauseStack(error) {\n if (error.cause) {\n return [error].concat(getCauseStack(error.cause));\n } else {\n return [error];\n }\n} // Helpers\n\n\nEvent.getStacktrace = function (error, errorFramesToSkip, backtraceFramesToSkip) {\n if (_$hasStack_19(error)) return _$errorStackParser_10.parse(error).slice(errorFramesToSkip); // error wasn't provided or didn't have a stacktrace so try to walk the callstack\n\n try {\n return _$filter_12(_$stackGenerator_33.backtrace(), function (frame) {\n return (frame.functionName || '').indexOf('StackGenerator$$') === -1;\n }).slice(1 + backtraceFramesToSkip);\n } catch (e) {\n return [];\n }\n};\n\nEvent.create = function (maybeError, tolerateNonErrors, handledState, component, errorFramesToSkip, logger) {\n if (errorFramesToSkip === void 0) {\n errorFramesToSkip = 0;\n }\n\n var _normaliseError = normaliseError(maybeError, tolerateNonErrors, component, logger),\n error = _normaliseError[0],\n internalFrames = _normaliseError[1];\n\n var event;\n\n try {\n var stacktrace = Event.getStacktrace(error, // if an error was created/throw in the normaliseError() function, we need to\n // tell the getStacktrace() function to skip the number of frames we know will\n // be from our own functions. This is added to the number of frames deep we\n // were told about\n internalFrames > 0 ? 1 + internalFrames + errorFramesToSkip : 0, // if there's no stacktrace, the callstack may be walked to generated one.\n // this is how many frames should be removed because they come from our library\n 1 + errorFramesToSkip);\n event = new Event(error.name, error.message, stacktrace, handledState, maybeError);\n } catch (e) {\n event = new Event(error.name, error.message, [], handledState, maybeError);\n }\n\n if (error.name === 'InvalidError') {\n event.addMetadata(\"\" + component, 'non-error parameter', makeSerialisable(maybeError));\n }\n\n if (error.cause) {\n var _event$errors;\n\n var causes = getCauseStack(error).slice(1);\n var normalisedCauses = _$map_16(causes, function (cause) {\n // Only get stacktrace for error causes that are a valid JS Error and already have a stack\n var stacktrace = _$iserror_20(cause) && _$hasStack_19(cause) ? _$errorStackParser_10.parse(cause) : [];\n\n var _normaliseError2 = normaliseError(cause, true, 'error cause'),\n error = _normaliseError2[0];\n\n if (error.name === 'InvalidError') event.addMetadata('error cause', makeSerialisable(cause));\n return createBugsnagError(error.name, error.message, Event.__type, stacktrace);\n });\n\n (_event$errors = event.errors).push.apply(_event$errors, normalisedCauses);\n }\n\n return event;\n};\n\nvar makeSerialisable = function (err) {\n if (err === null) return 'null';\n if (err === undefined) return 'undefined';\n return err;\n};\n\nvar normaliseError = function (maybeError, tolerateNonErrors, component, logger) {\n var error;\n var internalFrames = 0;\n\n var createAndLogInputError = function (reason) {\n var verb = component === 'error cause' ? 'was' : 'received';\n if (logger) logger.warn(component + \" \" + verb + \" a non-error: \\\"\" + reason + \"\\\"\");\n var err = new Error(component + \" \" + verb + \" a non-error. See \\\"\" + component + \"\\\" tab for more detail.\");\n err.name = 'InvalidError';\n return err;\n }; // In some cases:\n //\n // - the promise rejection handler (both in the browser and node)\n // - the node uncaughtException handler\n //\n // We are really limited in what we can do to get a stacktrace. So we use the\n // tolerateNonErrors option to ensure that the resulting error communicates as\n // such.\n\n\n if (!tolerateNonErrors) {\n if (_$iserror_20(maybeError)) {\n error = maybeError;\n } else {\n error = createAndLogInputError(typeof maybeError);\n internalFrames += 2;\n }\n } else {\n switch (typeof maybeError) {\n case 'string':\n case 'number':\n case 'boolean':\n error = new Error(String(maybeError));\n internalFrames += 1;\n break;\n\n case 'function':\n error = createAndLogInputError('function');\n internalFrames += 2;\n break;\n\n case 'object':\n if (maybeError !== null && _$iserror_20(maybeError)) {\n error = maybeError;\n } else if (maybeError !== null && hasNecessaryFields(maybeError)) {\n error = new Error(maybeError.message || maybeError.errorMessage);\n error.name = maybeError.name || maybeError.errorClass;\n internalFrames += 1;\n } else {\n error = createAndLogInputError(maybeError === null ? 'null' : 'unsupported object');\n internalFrames += 2;\n }\n\n break;\n\n default:\n error = createAndLogInputError('nothing');\n internalFrames += 2;\n }\n }\n\n if (!_$hasStack_19(error)) {\n // in IE10/11 a new Error() doesn't have a stacktrace until you throw it, so try that here\n try {\n throw error;\n } catch (e) {\n if (_$hasStack_19(e)) {\n error = e; // if the error only got a stacktrace after we threw it here, we know it\n // will only have one extra internal frame from this function, regardless\n // of whether it went through createAndLogInputError() or not\n\n internalFrames = 1;\n }\n }\n }\n\n return [error, internalFrames];\n}; // default value for stacktrace.type\n\n\nEvent.__type = 'browserjs';\n\nvar hasNecessaryFields = function (error) {\n return (typeof error.name === 'string' || typeof error.errorClass === 'string') && (typeof error.message === 'string' || typeof error.errorMessage === 'string');\n};\n\nvar _$Event_6 = Event;\n\n// This is a heavily modified/simplified version of\n// https://github.com/othiym23/async-some\n// with the logic flipped so that it is akin to the\n// synchronous \"every\" method instead of \"some\".\n// run the asynchronous test function (fn) over each item in the array (arr)\n// in series until:\n// - fn(item, cb) => calls cb(null, false)\n// - or the end of the array is reached\n// the callback (cb) will be passed (null, false) if any of the items in arr\n// caused fn to call back with false, otherwise it will be passed (null, true)\nvar _$asyncEvery_7 = function (arr, fn, cb) {\n var index = 0;\n\n var next = function () {\n if (index >= arr.length) return cb(null, true);\n fn(arr[index], function (err, result) {\n if (err) return cb(err);\n if (result === false) return cb(null, false);\n index++;\n next();\n });\n };\n\n next();\n};\n\n/* removed: var _$asyncEvery_7 = require('./async-every'); */;\n\nvar _$callbackRunner_9 = function (callbacks, event, onCallbackError, cb) {\n // This function is how we support different kinds of callback:\n // - synchronous - return value\n // - node-style async with callback - cb(err, value)\n // - promise/thenable - resolve(value)\n // It normalises each of these into the lowest common denominator – a node-style callback\n var runMaybeAsyncCallback = function (fn, cb) {\n if (typeof fn !== 'function') return cb(null);\n\n try {\n // if function appears sync…\n if (fn.length !== 2) {\n var ret = fn(event); // check if it returned a \"thenable\" (promise)\n\n if (ret && typeof ret.then === 'function') {\n return ret.then( // resolve\n function (val) {\n return setTimeout(function () {\n return cb(null, val);\n });\n }, // reject\n function (err) {\n setTimeout(function () {\n onCallbackError(err);\n return cb(null, true);\n });\n });\n }\n\n return cb(null, ret);\n } // if function is async…\n\n\n fn(event, function (err, result) {\n if (err) {\n onCallbackError(err);\n return cb(null);\n }\n\n cb(null, result);\n });\n } catch (e) {\n onCallbackError(e);\n cb(null);\n }\n };\n\n _$asyncEvery_7(callbacks, runMaybeAsyncCallback, cb);\n};\n\nvar _$syncCallbackRunner_23 = function (callbacks, callbackArg, callbackType, logger) {\n var ignore = false;\n var cbs = callbacks.slice();\n\n while (!ignore) {\n if (!cbs.length) break;\n\n try {\n ignore = cbs.pop()(callbackArg) === false;\n } catch (e) {\n logger.error(\"Error occurred in \" + callbackType + \" callback, continuing anyway\\u2026\");\n logger.error(e);\n }\n }\n\n return ignore;\n};\n\nvar _$pad_29 = function pad(num, size) {\n var s = '000000000' + num;\n return s.substr(s.length - size);\n};\n\n/* removed: var _$pad_29 = require('./pad.js'); */;\n\nvar env = typeof window === 'object' ? window : self;\nvar globalCount = 0;\n\nfor (var prop in env) {\n if (Object.hasOwnProperty.call(env, prop)) globalCount++;\n}\n\nvar mimeTypesLength = navigator.mimeTypes ? navigator.mimeTypes.length : 0;\nvar clientId = _$pad_29((mimeTypesLength + navigator.userAgent.length).toString(36) + globalCount.toString(36), 4);\n\nvar _$fingerprint_28 = function fingerprint() {\n return clientId;\n};\n\n/**\n * cuid.js\n * Collision-resistant UID generator for browsers and node.\n * Sequential for fast db lookups and recency sorting.\n * Safe for element IDs and server-side lookups.\n *\n * Extracted from CLCTR\n *\n * Copyright (c) Eric Elliott 2012\n * MIT License\n */\n/* removed: var _$fingerprint_28 = require('./lib/fingerprint.js'); */;\n\n/* removed: var _$pad_29 = require('./lib/pad.js'); */;\n\nvar c = 0,\n blockSize = 4,\n base = 36,\n discreteValues = Math.pow(base, blockSize);\n\nfunction randomBlock() {\n return _$pad_29((Math.random() * discreteValues << 0).toString(base), blockSize);\n}\n\nfunction safeCounter() {\n c = c < discreteValues ? c : 0;\n c++; // this is not subliminal\n\n return c - 1;\n}\n\nfunction cuid() {\n // Starting with a lowercase letter makes\n // it HTML element ID friendly.\n var letter = 'c',\n // hard-coded allows for sequential access\n // timestamp\n // warning: this exposes the exact date and time\n // that the uid was created.\n timestamp = new Date().getTime().toString(base),\n // Prevent same-machine collisions.\n counter = _$pad_29(safeCounter().toString(base), blockSize),\n // A few chars to generate distinct ids for different\n // clients (so different computers are far less\n // likely to generate the same id)\n print = _$fingerprint_28(),\n // Grab some more chars from Math.random()\n random = randomBlock() + randomBlock();\n return letter + timestamp + counter + print + random;\n}\n\ncuid.fingerprint = _$fingerprint_28;\nvar _$cuid_27 = cuid;\n\n/* removed: var _$cuid_27 = require('@bugsnag/cuid'); */;\n\nvar Session = /*#__PURE__*/function () {\n function Session() {\n this.id = _$cuid_27();\n this.startedAt = new Date();\n this._handled = 0;\n this._unhandled = 0;\n this._user = {};\n this.app = {};\n this.device = {};\n }\n\n var _proto = Session.prototype;\n\n _proto.getUser = function getUser() {\n return this._user;\n };\n\n _proto.setUser = function setUser(id, email, name) {\n this._user = {\n id: id,\n email: email,\n name: name\n };\n };\n\n _proto.toJSON = function toJSON() {\n return {\n id: this.id,\n startedAt: this.startedAt,\n events: {\n handled: this._handled,\n unhandled: this._unhandled\n }\n };\n };\n\n _proto._track = function _track(event) {\n this[event._handledState.unhandled ? '_unhandled' : '_handled'] += 1;\n };\n\n return Session;\n}();\n\nvar _$Session_35 = Session;\n\n/* removed: var _$config_5 = require('./config'); */;\n\n/* removed: var _$Event_6 = require('./event'); */;\n\n/* removed: var _$Breadcrumb_3 = require('./breadcrumb'); */;\n\n/* removed: var _$Session_35 = require('./session'); */;\n\n/* removed: var _$map_16 = require('./lib/es-utils/map'); */;\n\n/* removed: var _$includes_13 = require('./lib/es-utils/includes'); */;\n\n/* removed: var _$filter_12 = require('./lib/es-utils/filter'); */;\n\n/* removed: var _$reduce_17 = require('./lib/es-utils/reduce'); */;\n\n/* removed: var _$keys_15 = require('./lib/es-utils/keys'); */;\n\n/* removed: var _$assign_11 = require('./lib/es-utils/assign'); */;\n\n/* removed: var _$callbackRunner_9 = require('./lib/callback-runner'); */;\n\n/* removed: var _$metadataDelegate_22 = require('./lib/metadata-delegate'); */;\n\n/* removed: var _$syncCallbackRunner_23 = require('./lib/sync-callback-runner'); */;\n\n/* removed: var _$breadcrumbTypes_8 = require('./lib/breadcrumb-types'); */;\n\nvar __add_4 = _$featureFlagDelegate_18.add,\n __clear_4 = _$featureFlagDelegate_18.clear,\n __merge_4 = _$featureFlagDelegate_18.merge;\n\nvar noop = function () {};\n\nvar Client = /*#__PURE__*/function () {\n function Client(configuration, schema, internalPlugins, notifier) {\n var _this = this;\n\n if (schema === void 0) {\n schema = _$config_5.schema;\n }\n\n if (internalPlugins === void 0) {\n internalPlugins = [];\n }\n\n // notifier id\n this._notifier = notifier; // intialise opts and config\n\n this._config = {};\n this._schema = schema; // i/o\n\n this._delivery = {\n sendSession: noop,\n sendEvent: noop\n };\n this._logger = {\n debug: noop,\n info: noop,\n warn: noop,\n error: noop\n }; // plugins\n\n this._plugins = {}; // state\n\n this._breadcrumbs = [];\n this._session = null;\n this._metadata = {};\n this._featuresIndex = {};\n this._features = [];\n this._context = undefined;\n this._user = {}; // callbacks:\n // e: onError\n // s: onSession\n // sp: onSessionPayload\n // b: onBreadcrumb\n // (note these names are minified by hand because object\n // properties are not safe to minify automatically)\n\n this._cbs = {\n e: [],\n s: [],\n sp: [],\n b: []\n }; // expose internal constructors\n\n this.Client = Client;\n this.Event = _$Event_6;\n this.Breadcrumb = _$Breadcrumb_3;\n this.Session = _$Session_35;\n this._config = this._configure(configuration, internalPlugins);\n _$map_16(internalPlugins.concat(this._config.plugins), function (pl) {\n if (pl) _this._loadPlugin(pl);\n }); // when notify() is called we need to know how many frames are from our own source\n // this inital value is 1 not 0 because we wrap notify() to ensure it is always\n // bound to have the client as its `this` value – see below.\n\n this._depth = 1;\n var self = this;\n var notify = this.notify;\n\n this.notify = function () {\n return notify.apply(self, arguments);\n };\n }\n\n var _proto = Client.prototype;\n\n _proto.addMetadata = function addMetadata(section, keyOrObj, maybeVal) {\n return _$metadataDelegate_22.add(this._metadata, section, keyOrObj, maybeVal);\n };\n\n _proto.getMetadata = function getMetadata(section, key) {\n return _$metadataDelegate_22.get(this._metadata, section, key);\n };\n\n _proto.clearMetadata = function clearMetadata(section, key) {\n return _$metadataDelegate_22.clear(this._metadata, section, key);\n };\n\n _proto.addFeatureFlag = function addFeatureFlag(name, variant) {\n if (variant === void 0) {\n variant = null;\n }\n\n __add_4(this._features, this._featuresIndex, name, variant);\n };\n\n _proto.addFeatureFlags = function addFeatureFlags(featureFlags) {\n __merge_4(this._features, featureFlags, this._featuresIndex);\n };\n\n _proto.clearFeatureFlag = function clearFeatureFlag(name) {\n __clear_4(this._features, this._featuresIndex, name);\n };\n\n _proto.clearFeatureFlags = function clearFeatureFlags() {\n this._features = [];\n this._featuresIndex = {};\n };\n\n _proto.getContext = function getContext() {\n return this._context;\n };\n\n _proto.setContext = function setContext(c) {\n this._context = c;\n };\n\n _proto._configure = function _configure(opts, internalPlugins) {\n var schema = _$reduce_17(internalPlugins, function (schema, plugin) {\n if (plugin && plugin.configSchema) return _$assign_11({}, schema, plugin.configSchema);\n return schema;\n }, this._schema); // accumulate configuration and error messages\n\n var _reduce = _$reduce_17(_$keys_15(schema), function (accum, key) {\n var defaultValue = schema[key].defaultValue(opts[key]);\n\n if (opts[key] !== undefined) {\n var valid = schema[key].validate(opts[key]);\n\n if (!valid) {\n accum.errors[key] = schema[key].message;\n accum.config[key] = defaultValue;\n } else {\n if (schema[key].allowPartialObject) {\n accum.config[key] = _$assign_11(defaultValue, opts[key]);\n } else {\n accum.config[key] = opts[key];\n }\n }\n } else {\n accum.config[key] = defaultValue;\n }\n\n return accum;\n }, {\n errors: {},\n config: {}\n }),\n errors = _reduce.errors,\n config = _reduce.config;\n\n if (schema.apiKey) {\n // missing api key is the only fatal error\n if (!config.apiKey) throw new Error('No Bugsnag API Key set'); // warn about an apikey that is not of the expected format\n\n if (!/^[0-9a-f]{32}$/i.test(config.apiKey)) errors.apiKey = 'should be a string of 32 hexadecimal characters';\n } // update and elevate some options\n\n\n this._metadata = _$assign_11({}, config.metadata);\n __merge_4(this._features, config.featureFlags, this._featuresIndex);\n this._user = _$assign_11({}, config.user);\n this._context = config.context;\n if (config.logger) this._logger = config.logger; // add callbacks\n\n if (config.onError) this._cbs.e = this._cbs.e.concat(config.onError);\n if (config.onBreadcrumb) this._cbs.b = this._cbs.b.concat(config.onBreadcrumb);\n if (config.onSession) this._cbs.s = this._cbs.s.concat(config.onSession); // finally warn about any invalid config where we fell back to the default\n\n if (_$keys_15(errors).length) {\n this._logger.warn(generateConfigErrorMessage(errors, opts));\n }\n\n return config;\n };\n\n _proto.getUser = function getUser() {\n return this._user;\n };\n\n _proto.setUser = function setUser(id, email, name) {\n this._user = {\n id: id,\n email: email,\n name: name\n };\n };\n\n _proto._loadPlugin = function _loadPlugin(plugin) {\n var result = plugin.load(this); // JS objects are not the safest way to store arbitrarily keyed values,\n // so bookend the key with some characters that prevent tampering with\n // stuff like __proto__ etc. (only store the result if the plugin had a\n // name)\n\n if (plugin.name) this._plugins[\"~\" + plugin.name + \"~\"] = result;\n return this;\n };\n\n _proto.getPlugin = function getPlugin(name) {\n return this._plugins[\"~\" + name + \"~\"];\n };\n\n _proto._setDelivery = function _setDelivery(d) {\n this._delivery = d(this);\n };\n\n _proto.startSession = function startSession() {\n var session = new _$Session_35();\n session.app.releaseStage = this._config.releaseStage;\n session.app.version = this._config.appVersion;\n session.app.type = this._config.appType;\n session._user = _$assign_11({}, this._user); // run onSession callbacks\n\n var ignore = _$syncCallbackRunner_23(this._cbs.s, session, 'onSession', this._logger);\n\n if (ignore) {\n this._logger.debug('Session not started due to onSession callback');\n\n return this;\n }\n\n return this._sessionDelegate.startSession(this, session);\n };\n\n _proto.addOnError = function addOnError(fn, front) {\n if (front === void 0) {\n front = false;\n }\n\n this._cbs.e[front ? 'unshift' : 'push'](fn);\n };\n\n _proto.removeOnError = function removeOnError(fn) {\n this._cbs.e = _$filter_12(this._cbs.e, function (f) {\n return f !== fn;\n });\n };\n\n _proto._addOnSessionPayload = function _addOnSessionPayload(fn) {\n this._cbs.sp.push(fn);\n };\n\n _proto.addOnSession = function addOnSession(fn) {\n this._cbs.s.push(fn);\n };\n\n _proto.removeOnSession = function removeOnSession(fn) {\n this._cbs.s = _$filter_12(this._cbs.s, function (f) {\n return f !== fn;\n });\n };\n\n _proto.addOnBreadcrumb = function addOnBreadcrumb(fn, front) {\n if (front === void 0) {\n front = false;\n }\n\n this._cbs.b[front ? 'unshift' : 'push'](fn);\n };\n\n _proto.removeOnBreadcrumb = function removeOnBreadcrumb(fn) {\n this._cbs.b = _$filter_12(this._cbs.b, function (f) {\n return f !== fn;\n });\n };\n\n _proto.pauseSession = function pauseSession() {\n return this._sessionDelegate.pauseSession(this);\n };\n\n _proto.resumeSession = function resumeSession() {\n return this._sessionDelegate.resumeSession(this);\n };\n\n _proto.leaveBreadcrumb = function leaveBreadcrumb(message, metadata, type) {\n // coerce bad values so that the defaults get set\n message = typeof message === 'string' ? message : '';\n type = typeof type === 'string' && _$includes_13(_$breadcrumbTypes_8, type) ? type : 'manual';\n metadata = typeof metadata === 'object' && metadata !== null ? metadata : {}; // if no message, discard\n\n if (!message) return;\n var crumb = new _$Breadcrumb_3(message, metadata, type); // run onBreadcrumb callbacks\n\n var ignore = _$syncCallbackRunner_23(this._cbs.b, crumb, 'onBreadcrumb', this._logger);\n\n if (ignore) {\n this._logger.debug('Breadcrumb not attached due to onBreadcrumb callback');\n\n return;\n } // push the valid crumb onto the queue and maintain the length\n\n\n this._breadcrumbs.push(crumb);\n\n if (this._breadcrumbs.length > this._config.maxBreadcrumbs) {\n this._breadcrumbs = this._breadcrumbs.slice(this._breadcrumbs.length - this._config.maxBreadcrumbs);\n }\n };\n\n _proto._isBreadcrumbTypeEnabled = function _isBreadcrumbTypeEnabled(type) {\n var types = this._config.enabledBreadcrumbTypes;\n return types === null || _$includes_13(types, type);\n };\n\n _proto.notify = function notify(maybeError, onError, postReportCallback) {\n if (postReportCallback === void 0) {\n postReportCallback = noop;\n }\n\n var event = _$Event_6.create(maybeError, true, undefined, 'notify()', this._depth + 1, this._logger);\n\n this._notify(event, onError, postReportCallback);\n };\n\n _proto._notify = function _notify(event, onError, postReportCallback) {\n var _this2 = this;\n\n if (postReportCallback === void 0) {\n postReportCallback = noop;\n }\n\n event.app = _$assign_11({}, event.app, {\n releaseStage: this._config.releaseStage,\n version: this._config.appVersion,\n type: this._config.appType\n });\n event.context = event.context || this._context;\n event._metadata = _$assign_11({}, event._metadata, this._metadata);\n event._user = _$assign_11({}, event._user, this._user);\n event.breadcrumbs = this._breadcrumbs.slice();\n __merge_4(event._features, this._features, event._featuresIndex); // exit early if events should not be sent on the current releaseStage\n\n if (this._config.enabledReleaseStages !== null && !_$includes_13(this._config.enabledReleaseStages, this._config.releaseStage)) {\n this._logger.warn('Event not sent due to releaseStage/enabledReleaseStages configuration');\n\n return postReportCallback(null, event);\n }\n\n var originalSeverity = event.severity;\n\n var onCallbackError = function (err) {\n // errors in callbacks are tolerated but we want to log them out\n _this2._logger.error('Error occurred in onError callback, continuing anyway…');\n\n _this2._logger.error(err);\n };\n\n var callbacks = [].concat(this._cbs.e).concat(onError);\n _$callbackRunner_9(callbacks, event, onCallbackError, function (err, shouldSend) {\n if (err) onCallbackError(err);\n\n if (!shouldSend) {\n _this2._logger.debug('Event not sent due to onError callback');\n\n return postReportCallback(null, event);\n }\n\n if (_this2._isBreadcrumbTypeEnabled('error')) {\n // only leave a crumb for the error if actually got sent\n Client.prototype.leaveBreadcrumb.call(_this2, event.errors[0].errorClass, {\n errorClass: event.errors[0].errorClass,\n errorMessage: event.errors[0].errorMessage,\n severity: event.severity\n }, 'error');\n }\n\n if (originalSeverity !== event.severity) {\n event._handledState.severityReason = {\n type: 'userCallbackSetSeverity'\n };\n }\n\n if (event.unhandled !== event._handledState.unhandled) {\n event._handledState.severityReason.unhandledOverridden = true;\n event._handledState.unhandled = event.unhandled;\n }\n\n if (_this2._session) {\n _this2._session._track(event);\n\n event._session = _this2._session;\n }\n\n _this2._delivery.sendEvent({\n apiKey: event.apiKey || _this2._config.apiKey,\n notifier: _this2._notifier,\n events: [event]\n }, function (err) {\n return postReportCallback(err, event);\n });\n });\n };\n\n return Client;\n}();\n\nvar generateConfigErrorMessage = function (errors, rawInput) {\n var er = new Error(\"Invalid configuration\\n\" + _$map_16(_$keys_15(errors), function (key) {\n return \" - \" + key + \" \" + errors[key] + \", got \" + stringify(rawInput[key]);\n }).join('\\n\\n'));\n return er;\n};\n\nvar stringify = function (val) {\n switch (typeof val) {\n case 'string':\n case 'number':\n case 'object':\n return JSON.stringify(val);\n\n default:\n return String(val);\n }\n};\n\nvar _$Client_4 = Client;\n\nvar _$jsonPayload_21 = {};\n/* removed: var _$safeJsonStringify_30 = require('@bugsnag/safe-json-stringify'); */;\n\nvar EVENT_REDACTION_PATHS = ['events.[].metaData', 'events.[].breadcrumbs.[].metaData', 'events.[].request'];\n\n_$jsonPayload_21.event = function (event, redactedKeys) {\n var payload = _$safeJsonStringify_30(event, null, null, {\n redactedPaths: EVENT_REDACTION_PATHS,\n redactedKeys: redactedKeys\n });\n\n if (payload.length > 10e5) {\n event.events[0]._metadata = {\n notifier: \"WARNING!\\nSerialized payload was \" + payload.length / 10e5 + \"MB (limit = 1MB)\\nmetadata was removed\"\n };\n payload = _$safeJsonStringify_30(event, null, null, {\n redactedPaths: EVENT_REDACTION_PATHS,\n redactedKeys: redactedKeys\n });\n }\n\n return payload;\n};\n\n_$jsonPayload_21.session = function (session, redactedKeys) {\n var payload = _$safeJsonStringify_30(session, null, null);\n return payload;\n};\n\nvar _$delivery_36 = {};\n/* removed: var _$jsonPayload_21 = require('@bugsnag/core/lib/json-payload'); */;\n\n_$delivery_36 = function (client, win) {\n if (win === void 0) {\n win = window;\n }\n\n return {\n sendEvent: function (event, cb) {\n if (cb === void 0) {\n cb = function () {};\n }\n\n var url = getApiUrl(client._config, 'notify', '4', win);\n var body = _$jsonPayload_21.event(event, client._config.redactedKeys);\n var req = new win.XDomainRequest();\n\n req.onload = function () {\n cb(null);\n };\n\n req.onerror = function () {\n var err = new Error('Event failed to send');\n\n client._logger.error('Event failed to send…', err);\n\n if (body.length > 10e5) {\n client._logger.warn(\"Event oversized (\" + (body.length / 10e5).toFixed(2) + \" MB)\");\n }\n\n cb(err);\n };\n\n req.open('POST', url);\n setTimeout(function () {\n try {\n req.send(body);\n } catch (e) {\n client._logger.error(e);\n\n cb(e);\n }\n }, 0);\n },\n sendSession: function (session, cb) {\n if (cb === void 0) {\n cb = function () {};\n }\n\n var url = getApiUrl(client._config, 'sessions', '1', win);\n var req = new win.XDomainRequest();\n\n req.onload = function () {\n cb(null);\n };\n\n req.open('POST', url);\n setTimeout(function () {\n try {\n req.send(_$jsonPayload_21.session(session, client._config.redactedKeys));\n } catch (e) {\n client._logger.error(e);\n\n cb(e);\n }\n }, 0);\n }\n };\n};\n\nvar getApiUrl = function (config, endpoint, version, win) {\n // IE8 doesn't support Date.prototype.toISOstring(), but it does convert a date\n // to an ISO string when you use JSON stringify. Simply parsing the result of\n // JSON.stringify is smaller than using a toISOstring() polyfill.\n var isoDate = JSON.parse(JSON.stringify(new Date()));\n var url = matchPageProtocol(config.endpoints[endpoint], win.location.protocol);\n return url + \"?apiKey=\" + encodeURIComponent(config.apiKey) + \"&payloadVersion=\" + version + \"&sentAt=\" + encodeURIComponent(isoDate);\n};\n\nvar matchPageProtocol = _$delivery_36._matchPageProtocol = function (endpoint, pageProtocol) {\n return pageProtocol === 'http:' ? endpoint.replace(/^https:/, 'http:') : endpoint;\n};\n\n/* removed: var _$jsonPayload_21 = require('@bugsnag/core/lib/json-payload'); */;\n\nvar _$delivery_37 = function (client, win) {\n if (win === void 0) {\n win = window;\n }\n\n return {\n sendEvent: function (event, cb) {\n if (cb === void 0) {\n cb = function () {};\n }\n\n try {\n var url = client._config.endpoints.notify;\n var req = new win.XMLHttpRequest();\n var body = _$jsonPayload_21.event(event, client._config.redactedKeys);\n\n req.onreadystatechange = function () {\n if (req.readyState === win.XMLHttpRequest.DONE) {\n var status = req.status;\n\n if (status === 0 || status >= 400) {\n client._logger.error('Event failed to send…');\n\n if (body.length > 10e5) {\n client._logger.warn(\"Event oversized (\" + (body.length / 10e5).toFixed(2) + \" MB)\");\n }\n }\n\n cb(null);\n }\n };\n\n req.open('POST', url);\n req.setRequestHeader('Content-Type', 'application/json');\n req.setRequestHeader('Bugsnag-Api-Key', event.apiKey || client._config.apiKey);\n req.setRequestHeader('Bugsnag-Payload-Version', '4');\n req.setRequestHeader('Bugsnag-Sent-At', new Date().toISOString());\n req.send(body);\n } catch (e) {\n client._logger.error(e);\n }\n },\n sendSession: function (session, cb) {\n if (cb === void 0) {\n cb = function () {};\n }\n\n try {\n var url = client._config.endpoints.sessions;\n var req = new win.XMLHttpRequest();\n\n req.onreadystatechange = function () {\n if (req.readyState === win.XMLHttpRequest.DONE) cb(null);\n };\n\n req.open('POST', url);\n req.setRequestHeader('Content-Type', 'application/json');\n req.setRequestHeader('Bugsnag-Api-Key', client._config.apiKey);\n req.setRequestHeader('Bugsnag-Payload-Version', '1');\n req.setRequestHeader('Bugsnag-Sent-At', new Date().toISOString());\n req.send(_$jsonPayload_21.session(session, client._config.redactedKeys));\n } catch (e) {\n client._logger.error(e);\n }\n }\n };\n};\n\nvar appStart = new Date();\n\nvar reset = function () {\n appStart = new Date();\n};\n\nvar _$app_38 = {\n name: 'appDuration',\n load: function (client) {\n client.addOnError(function (event) {\n var now = new Date();\n event.app.duration = now - appStart;\n }, true);\n return {\n reset: reset\n };\n }\n};\n\n/*\n * Sets the default context to be the current URL\n */\nvar _$context_39 = function (win) {\n if (win === void 0) {\n win = window;\n }\n\n return {\n load: function (client) {\n client.addOnError(function (event) {\n if (event.context !== undefined) return;\n event.context = win.location.pathname;\n }, true);\n }\n };\n};\n\nvar _$pad_43 = function pad(num, size) {\n var s = '000000000' + num;\n return s.substr(s.length - size);\n};\n\n/* removed: var _$pad_43 = require('./pad.js'); */;\n\nvar __env_42 = typeof window === 'object' ? window : self;\nvar __globalCount_42 = 0;\n\nfor (var __prop_42 in __env_42) {\n if (Object.hasOwnProperty.call(__env_42, __prop_42)) __globalCount_42++;\n}\n\nvar __mimeTypesLength_42 = navigator.mimeTypes ? navigator.mimeTypes.length : 0;\nvar __clientId_42 = _$pad_43((__mimeTypesLength_42 + navigator.userAgent.length).toString(36) + __globalCount_42.toString(36), 4);\n\nvar _$fingerprint_42 = function fingerprint() {\n return __clientId_42;\n};\n\n/**\n * cuid.js\n * Collision-resistant UID generator for browsers and node.\n * Sequential for fast db lookups and recency sorting.\n * Safe for element IDs and server-side lookups.\n *\n * Extracted from CLCTR\n *\n * Copyright (c) Eric Elliott 2012\n * MIT License\n */\n/* removed: var _$fingerprint_42 = require('./lib/fingerprint.js'); */;\n\n/* removed: var _$pad_43 = require('./lib/pad.js'); */;\n\nvar __c_41 = 0,\n __blockSize_41 = 4,\n __base_41 = 36,\n __discreteValues_41 = Math.pow(__base_41, __blockSize_41);\n\nfunction __randomBlock_41() {\n return _$pad_43((Math.random() * __discreteValues_41 << 0).toString(__base_41), __blockSize_41);\n}\n\nfunction __safeCounter_41() {\n __c_41 = __c_41 < __discreteValues_41 ? __c_41 : 0;\n __c_41++; // this is not subliminal\n\n return __c_41 - 1;\n}\n\nfunction __cuid_41() {\n // Starting with a lowercase letter makes\n // it HTML element ID friendly.\n var letter = 'c',\n // hard-coded allows for sequential access\n // timestamp\n // warning: this exposes the exact date and time\n // that the uid was created.\n timestamp = new Date().getTime().toString(__base_41),\n // Prevent same-machine collisions.\n counter = _$pad_43(__safeCounter_41().toString(__base_41), __blockSize_41),\n // A few chars to generate distinct ids for different\n // clients (so different computers are far less\n // likely to generate the same id)\n print = _$fingerprint_42(),\n // Grab some more chars from Math.random()\n random = __randomBlock_41() + __randomBlock_41();\n return letter + timestamp + counter + print + random;\n}\n\n__cuid_41.fingerprint = _$fingerprint_42;\nvar _$cuid_41 = __cuid_41;\n\n/* removed: var _$assign_11 = require('@bugsnag/core/lib/es-utils/assign'); */;\n\nvar BUGSNAG_ANONYMOUS_ID_KEY = 'bugsnag-anonymous-id';\n\nvar getDeviceId = function (win) {\n try {\n var storage = win.localStorage;\n var id = storage.getItem(BUGSNAG_ANONYMOUS_ID_KEY); // If we get an ID, make sure it looks like a valid cuid. The length can\n // fluctuate slightly, so some leeway is built in\n\n if (id && /^c[a-z0-9]{20,32}$/.test(id)) {\n return id;\n }\n\n /* removed: var _$cuid_41 = require('@bugsnag/cuid'); */;\n\n id = _$cuid_41();\n storage.setItem(BUGSNAG_ANONYMOUS_ID_KEY, id);\n return id;\n } catch (err) {// If localStorage is not available (e.g. because it's disabled) then give up\n }\n};\n/*\n * Automatically detects browser device details\n */\n\n\nvar _$device_40 = function (nav, win) {\n if (nav === void 0) {\n nav = navigator;\n }\n\n if (win === void 0) {\n win = window;\n }\n\n return {\n load: function (client) {\n var device = {\n locale: nav.browserLanguage || nav.systemLanguage || nav.userLanguage || nav.language,\n userAgent: nav.userAgent\n };\n\n if (win && win.screen && win.screen.orientation && win.screen.orientation.type) {\n device.orientation = win.screen.orientation.type;\n } else if (win && win.document) {\n device.orientation = win.document.documentElement.clientWidth > win.document.documentElement.clientHeight ? 'landscape' : 'portrait';\n }\n\n if (client._config.generateAnonymousId) {\n device.id = getDeviceId(win);\n }\n\n client.addOnSession(function (session) {\n session.device = _$assign_11({}, session.device, device); // only set device id if collectUserIp is false\n\n if (!client._config.collectUserIp) setDefaultUserId(session);\n }); // add time just as the event is sent\n\n client.addOnError(function (event) {\n event.device = _$assign_11({}, event.device, device, {\n time: new Date()\n });\n if (!client._config.collectUserIp) setDefaultUserId(event);\n }, true);\n },\n configSchema: {\n generateAnonymousId: {\n validate: function (value) {\n return value === true || value === false;\n },\n defaultValue: function () {\n return true;\n },\n message: 'should be true|false'\n }\n }\n };\n};\n\nvar setDefaultUserId = function (eventOrSession) {\n // device id is also used to populate the user id field, if it's not already set\n var user = eventOrSession.getUser();\n\n if (!user || !user.id) {\n eventOrSession.setUser(eventOrSession.device.id);\n }\n};\n\n/* removed: var _$assign_11 = require('@bugsnag/core/lib/es-utils/assign'); */;\n/*\n * Sets the event request: { url } to be the current href\n */\n\n\nvar _$request_44 = function (win) {\n if (win === void 0) {\n win = window;\n }\n\n return {\n load: function (client) {\n client.addOnError(function (event) {\n if (event.request && event.request.url) return;\n event.request = _$assign_11({}, event.request, {\n url: win.location.href\n });\n }, true);\n }\n };\n};\n\n/* removed: var _$includes_13 = require('@bugsnag/core/lib/es-utils/includes'); */;\n\nvar _$session_45 = {\n load: function (client) {\n client._sessionDelegate = sessionDelegate;\n }\n};\nvar sessionDelegate = {\n startSession: function (client, session) {\n var sessionClient = client;\n sessionClient._session = session;\n sessionClient._pausedSession = null; // exit early if the current releaseStage is not enabled\n\n if (sessionClient._config.enabledReleaseStages !== null && !_$includes_13(sessionClient._config.enabledReleaseStages, sessionClient._config.releaseStage)) {\n sessionClient._logger.warn('Session not sent due to releaseStage/enabledReleaseStages configuration');\n\n return sessionClient;\n }\n\n sessionClient._delivery.sendSession({\n notifier: sessionClient._notifier,\n device: session.device,\n app: session.app,\n sessions: [{\n id: session.id,\n startedAt: session.startedAt,\n user: session._user\n }]\n });\n\n return sessionClient;\n },\n resumeSession: function (client) {\n // Do nothing if there's already an active session\n if (client._session) {\n return client;\n } // If we have a paused session then make it the active session\n\n\n if (client._pausedSession) {\n client._session = client._pausedSession;\n client._pausedSession = null;\n return client;\n } // Otherwise start a new session\n\n\n return client.startSession();\n },\n pauseSession: function (client) {\n client._pausedSession = client._session;\n client._session = null;\n }\n};\n\n/* removed: var _$assign_11 = require('@bugsnag/core/lib/es-utils/assign'); */;\n/*\n * Prevent collection of user IPs\n */\n\n\nvar _$clientIp_46 = {\n load: function (client) {\n if (client._config.collectUserIp) return;\n client.addOnError(function (event) {\n // If user.id is explicitly undefined, it will be missing from the payload. It needs\n // removing so that the following line replaces it\n if (event._user && typeof event._user.id === 'undefined') delete event._user.id;\n event._user = _$assign_11({\n id: '[REDACTED]'\n }, event._user);\n event.request = _$assign_11({\n clientIp: '[REDACTED]'\n }, event.request);\n });\n },\n configSchema: {\n collectUserIp: {\n defaultValue: function () {\n return true;\n },\n message: 'should be true|false',\n validate: function (value) {\n return value === true || value === false;\n }\n }\n }\n};\n\nvar _$consoleBreadcrumbs_47 = {};\n/* removed: var _$map_16 = require('@bugsnag/core/lib/es-utils/map'); */;\n\n/* removed: var _$reduce_17 = require('@bugsnag/core/lib/es-utils/reduce'); */;\n\n/* removed: var _$filter_12 = require('@bugsnag/core/lib/es-utils/filter'); */;\n/*\n * Leaves breadcrumbs when console log methods are called\n */\n\n\n_$consoleBreadcrumbs_47.load = function (client) {\n var isDev = /^(local-)?dev(elopment)?$/.test(client._config.releaseStage);\n if (isDev || !client._isBreadcrumbTypeEnabled('log')) return;\n _$map_16(CONSOLE_LOG_METHODS, function (method) {\n var original = console[method];\n\n console[method] = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n client.leaveBreadcrumb('Console output', _$reduce_17(args, function (accum, arg, i) {\n // do the best/simplest stringification of each argument\n var stringified = '[Unknown value]'; // this may fail if the input is:\n // - an object whose [[Prototype]] is null (no toString)\n // - an object with a broken toString or @@toPrimitive implementation\n\n try {\n stringified = String(arg);\n } catch (e) {} // if it stringifies to [object Object] attempt to JSON stringify\n\n\n if (stringified === '[object Object]') {\n // catch stringify errors and fallback to [object Object]\n try {\n stringified = JSON.stringify(arg);\n } catch (e) {}\n }\n\n accum[\"[\" + i + \"]\"] = stringified;\n return accum;\n }, {\n severity: method.indexOf('group') === 0 ? 'log' : method\n }), 'log');\n original.apply(console, args);\n };\n\n console[method]._restore = function () {\n console[method] = original;\n };\n });\n};\n\nif (\"production\" !== 'production') {\n _$consoleBreadcrumbs_47.destroy = function () {\n return CONSOLE_LOG_METHODS.forEach(function (method) {\n if (typeof console[method]._restore === 'function') console[method]._restore();\n });\n };\n}\n\nvar CONSOLE_LOG_METHODS = _$filter_12(['log', 'debug', 'info', 'warn', 'error'], function (method) {\n return typeof console !== 'undefined' && typeof console[method] === 'function';\n});\n\n/* removed: var _$map_16 = require('@bugsnag/core/lib/es-utils/map'); */;\n\n/* removed: var _$reduce_17 = require('@bugsnag/core/lib/es-utils/reduce'); */;\n\n/* removed: var _$filter_12 = require('@bugsnag/core/lib/es-utils/filter'); */;\n\nvar MAX_LINE_LENGTH = 200;\nvar MAX_SCRIPT_LENGTH = 500000;\n\nvar _$inlineScriptContent_48 = function (doc, win) {\n if (doc === void 0) {\n doc = document;\n }\n\n if (win === void 0) {\n win = window;\n }\n\n return {\n load: function (client) {\n if (!client._config.trackInlineScripts) return;\n var originalLocation = win.location.href;\n var html = ''; // in IE8-10 the 'interactive' state can fire too soon (before scripts have finished executing), so in those\n // we wait for the 'complete' state before assuming that synchronous scripts are no longer executing\n\n var isOldIe = !!doc.attachEvent;\n var DOMContentLoaded = isOldIe ? doc.readyState === 'complete' : doc.readyState !== 'loading';\n\n var getHtml = function () {\n return doc.documentElement.outerHTML;\n }; // get whatever HTML exists at this point in time\n\n\n html = getHtml();\n var prev = doc.onreadystatechange; // then update it when the DOM content has loaded\n\n doc.onreadystatechange = function () {\n // IE8 compatible alternative to document#DOMContentLoaded\n if (doc.readyState === 'interactive') {\n html = getHtml();\n DOMContentLoaded = true;\n }\n\n try {\n prev.apply(this, arguments);\n } catch (e) {}\n };\n\n var _lastScript = null;\n\n var updateLastScript = function (script) {\n _lastScript = script;\n };\n\n var getCurrentScript = function () {\n var script = doc.currentScript || _lastScript;\n\n if (!script && !DOMContentLoaded) {\n var scripts = doc.scripts || doc.getElementsByTagName('script');\n script = scripts[scripts.length - 1];\n }\n\n return script;\n };\n\n var addSurroundingCode = function (lineNumber) {\n // get whatever html has rendered at this point\n if (!DOMContentLoaded || !html) html = getHtml(); // simulate the raw html\n\n var htmlLines = [''].concat(html.split('\\n'));\n var zeroBasedLine = lineNumber - 1;\n var start = Math.max(zeroBasedLine - 3, 0);\n var end = Math.min(zeroBasedLine + 3, htmlLines.length);\n return _$reduce_17(htmlLines.slice(start, end), function (accum, line, i) {\n accum[start + 1 + i] = line.length <= MAX_LINE_LENGTH ? line : line.substr(0, MAX_LINE_LENGTH);\n return accum;\n }, {});\n };\n\n client.addOnError(function (event) {\n // remove any of our own frames that may be part the stack this\n // happens before the inline script check as it happens for all errors\n event.errors[0].stacktrace = _$filter_12(event.errors[0].stacktrace, function (f) {\n return !/__trace__$/.test(f.method);\n });\n var frame = event.errors[0].stacktrace[0]; // if frame.file exists and is not the original location of the page, this can't be an inline script\n\n if (frame && frame.file && frame.file.replace(/#.*$/, '') !== originalLocation.replace(/#.*$/, '')) return; // grab the last script known to have run\n\n var currentScript = getCurrentScript();\n\n if (currentScript) {\n var content = currentScript.innerHTML;\n event.addMetadata('script', 'content', content.length <= MAX_SCRIPT_LENGTH ? content : content.substr(0, MAX_SCRIPT_LENGTH)); // only attempt to grab some surrounding code if we have a line number\n\n if (frame && frame.lineNumber) {\n frame.code = addSurroundingCode(frame.lineNumber);\n }\n }\n }, true); // Proxy all the timer functions whose callback is their 0th argument.\n // Keep a reference to the original setTimeout because we need it later\n\n var _map = _$map_16(['setTimeout', 'setInterval', 'setImmediate', 'requestAnimationFrame'], function (fn) {\n return __proxy(win, fn, function (original) {\n return __traceOriginalScript(original, function (args) {\n return {\n get: function () {\n return args[0];\n },\n replace: function (fn) {\n args[0] = fn;\n }\n };\n });\n });\n }),\n _setTimeout = _map[0]; // Proxy all the host objects whose prototypes have an addEventListener function\n\n\n _$map_16(['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload'], function (o) {\n if (!win[o] || !win[o].prototype || !Object.prototype.hasOwnProperty.call(win[o].prototype, 'addEventListener')) return;\n\n __proxy(win[o].prototype, 'addEventListener', function (original) {\n return __traceOriginalScript(original, eventTargetCallbackAccessor);\n });\n\n __proxy(win[o].prototype, 'removeEventListener', function (original) {\n return __traceOriginalScript(original, eventTargetCallbackAccessor, true);\n });\n });\n\n function __traceOriginalScript(fn, callbackAccessor, alsoCallOriginal) {\n if (alsoCallOriginal === void 0) {\n alsoCallOriginal = false;\n }\n\n return function () {\n // this is required for removeEventListener to remove anything added with\n // addEventListener before the functions started being wrapped by Bugsnag\n var args = [].slice.call(arguments);\n\n try {\n var cba = callbackAccessor(args);\n var cb = cba.get();\n if (alsoCallOriginal) fn.apply(this, args);\n if (typeof cb !== 'function') return fn.apply(this, args);\n\n if (cb.__trace__) {\n cba.replace(cb.__trace__);\n } else {\n var script = getCurrentScript(); // this function mustn't be annonymous due to a bug in the stack\n // generation logic, meaning it gets tripped up\n // see: https://github.com/stacktracejs/stack-generator/issues/6\n\n cb.__trace__ = function __trace__() {\n // set the script that called this function\n updateLastScript(script); // immediately unset the currentScript synchronously below, however\n // if this cb throws an error the line after will not get run so schedule\n // an almost-immediate aysnc update too\n\n _setTimeout(function () {\n updateLastScript(null);\n }, 0);\n\n var ret = cb.apply(this, arguments);\n updateLastScript(null);\n return ret;\n };\n\n cb.__trace__.__trace__ = cb.__trace__;\n cba.replace(cb.__trace__);\n }\n } catch (e) {// swallow these errors on Selenium:\n // Permission denied to access property '__trace__'\n // WebDriverException: Message: Permission denied to access property \"handleEvent\"\n } // IE8 doesn't let you call .apply() on setTimeout/setInterval\n\n\n if (fn.apply) return fn.apply(this, args);\n\n switch (args.length) {\n case 1:\n return fn(args[0]);\n\n case 2:\n return fn(args[0], args[1]);\n\n default:\n return fn();\n }\n };\n }\n },\n configSchema: {\n trackInlineScripts: {\n validate: function (value) {\n return value === true || value === false;\n },\n defaultValue: function () {\n return true;\n },\n message: 'should be true|false'\n }\n }\n };\n};\n\nfunction __proxy(host, name, replacer) {\n var original = host[name];\n if (!original) return original;\n var replacement = replacer(original);\n host[name] = replacement;\n return original;\n}\n\nfunction eventTargetCallbackAccessor(args) {\n var isEventHandlerObj = !!args[1] && typeof args[1].handleEvent === 'function';\n return {\n get: function () {\n return isEventHandlerObj ? args[1].handleEvent : args[1];\n },\n replace: function (fn) {\n if (isEventHandlerObj) {\n args[1].handleEvent = fn;\n } else {\n args[1] = fn;\n }\n }\n };\n}\n\n/*\n * Leaves breadcrumbs when the user interacts with the DOM\n */\nvar _$interactionBreadcrumbs_49 = function (win) {\n if (win === void 0) {\n win = window;\n }\n\n return {\n load: function (client) {\n if (!('addEventListener' in win)) return;\n if (!client._isBreadcrumbTypeEnabled('user')) return;\n win.addEventListener('click', function (event) {\n var targetText, targetSelector;\n\n try {\n targetText = getNodeText(event.target);\n targetSelector = getNodeSelector(event.target, win);\n } catch (e) {\n targetText = '[hidden]';\n targetSelector = '[hidden]';\n\n client._logger.error('Cross domain error when tracking click event. See docs: https://tinyurl.com/yy3rn63z');\n }\n\n client.leaveBreadcrumb('UI click', {\n targetText: targetText,\n targetSelector: targetSelector\n }, 'user');\n }, true);\n }\n };\n}; // extract text content from a element\n\n\nvar getNodeText = function (el) {\n var text = el.textContent || el.innerText || '';\n if (!text && (el.type === 'submit' || el.type === 'button')) text = el.value;\n text = text.replace(/^\\s+|\\s+$/g, ''); // trim whitespace\n\n return truncate(text, 140);\n}; // Create a label from tagname, id and css class of the element\n\n\nfunction getNodeSelector(el, win) {\n var parts = [el.tagName];\n if (el.id) parts.push('#' + el.id);\n if (el.className && el.className.length) parts.push(\".\" + el.className.split(' ').join('.')); // Can't get much more advanced with the current browser\n\n if (!win.document.querySelectorAll || !Array.prototype.indexOf) return parts.join('');\n\n try {\n if (win.document.querySelectorAll(parts.join('')).length === 1) return parts.join('');\n } catch (e) {\n // Sometimes the query selector can be invalid just return it as-is\n return parts.join('');\n } // try to get a more specific selector if this one matches more than one element\n\n\n if (el.parentNode.childNodes.length > 1) {\n var index = Array.prototype.indexOf.call(el.parentNode.childNodes, el) + 1;\n parts.push(\":nth-child(\" + index + \")\");\n }\n\n if (win.document.querySelectorAll(parts.join('')).length === 1) return parts.join(''); // try prepending the parent node selector\n\n if (el.parentNode) return getNodeSelector(el.parentNode, win) + \" > \" + parts.join('');\n return parts.join('');\n}\n\nfunction truncate(value, length) {\n var ommision = '(...)';\n if (value && value.length <= length) return value;\n return value.slice(0, length - ommision.length) + ommision;\n}\n\nvar _$navigationBreadcrumbs_50 = {};\n/*\n* Leaves breadcrumbs when navigation methods are called or events are emitted\n*/\n_$navigationBreadcrumbs_50 = function (win) {\n if (win === void 0) {\n win = window;\n }\n\n var plugin = {\n load: function (client) {\n if (!('addEventListener' in win)) return;\n if (!client._isBreadcrumbTypeEnabled('navigation')) return; // returns a function that will drop a breadcrumb with a given name\n\n var drop = function (name) {\n return function () {\n return client.leaveBreadcrumb(name, {}, 'navigation');\n };\n }; // simple drops – just names, no meta\n\n\n win.addEventListener('pagehide', drop('Page hidden'), true);\n win.addEventListener('pageshow', drop('Page shown'), true);\n win.addEventListener('load', drop('Page loaded'), true);\n win.document.addEventListener('DOMContentLoaded', drop('DOMContentLoaded'), true); // some browsers like to emit popstate when the page loads, so only add the popstate listener after that\n\n win.addEventListener('load', function () {\n return win.addEventListener('popstate', drop('Navigated back'), true);\n }); // hashchange has some metadata that we care about\n\n win.addEventListener('hashchange', function (event) {\n var metadata = event.oldURL ? {\n from: relativeLocation(event.oldURL, win),\n to: relativeLocation(event.newURL, win),\n state: getCurrentState(win)\n } : {\n to: relativeLocation(win.location.href, win)\n };\n client.leaveBreadcrumb('Hash changed', metadata, 'navigation');\n }, true); // the only way to know about replaceState/pushState is to wrap them… >_<\n\n if (win.history.replaceState) wrapHistoryFn(client, win.history, 'replaceState', win);\n if (win.history.pushState) wrapHistoryFn(client, win.history, 'pushState', win);\n }\n };\n\n if (\"production\" !== 'production') {\n plugin.destroy = function (win) {\n if (win === void 0) {\n win = window;\n }\n\n win.history.replaceState._restore();\n\n win.history.pushState._restore();\n };\n }\n\n return plugin;\n};\n\nif (\"production\" !== 'production') {\n _$navigationBreadcrumbs_50.destroy = function (win) {\n if (win === void 0) {\n win = window;\n }\n\n win.history.replaceState._restore();\n\n win.history.pushState._restore();\n };\n} // takes a full url like http://foo.com:1234/pages/01.html?yes=no#section-2 and returns\n// just the path and hash parts, e.g. /pages/01.html?yes=no#section-2\n\n\nvar relativeLocation = function (url, win) {\n var a = win.document.createElement('A');\n a.href = url;\n return \"\" + a.pathname + a.search + a.hash;\n};\n\nvar stateChangeToMetadata = function (win, state, title, url) {\n var currentPath = relativeLocation(win.location.href, win);\n return {\n title: title,\n state: state,\n prevState: getCurrentState(win),\n to: url || currentPath,\n from: currentPath\n };\n};\n\nvar wrapHistoryFn = function (client, target, fn, win) {\n var orig = target[fn];\n\n target[fn] = function (state, title, url) {\n client.leaveBreadcrumb(\"History \" + fn, stateChangeToMetadata(win, state, title, url), 'navigation'); // if throttle plugin is in use, reset the event sent count\n\n if (typeof client.resetEventCount === 'function') client.resetEventCount(); // if the client is operating in auto session-mode, a new route should trigger a new session\n\n if (client._config.autoTrackSessions) client.startSession(); // Internet Explorer will convert `undefined` to a string when passed, causing an unintended redirect\n // to '/undefined'. therefore we only pass the url if it's not undefined.\n\n orig.apply(target, [state, title].concat(url !== undefined ? url : []));\n };\n\n if (\"production\" !== 'production') {\n target[fn]._restore = function () {\n target[fn] = orig;\n };\n }\n};\n\nvar getCurrentState = function (win) {\n try {\n return win.history.state;\n } catch (e) {}\n};\n\nvar BREADCRUMB_TYPE = 'request';\n\n/* removed: var _$includes_13 = require('@bugsnag/core/lib/es-utils/includes'); */;\n/*\n * Leaves breadcrumbs when network requests occur\n */\n\n\nvar _$networkBreadcrumbs_51 = function (_ignoredUrls, win) {\n if (_ignoredUrls === void 0) {\n _ignoredUrls = [];\n }\n\n if (win === void 0) {\n win = window;\n }\n\n var restoreFunctions = [];\n var plugin = {\n load: function (client) {\n if (!client._isBreadcrumbTypeEnabled('request')) return;\n var ignoredUrls = [client._config.endpoints.notify, client._config.endpoints.sessions].concat(_ignoredUrls);\n monkeyPatchXMLHttpRequest();\n monkeyPatchFetch(); // XMLHttpRequest monkey patch\n\n function monkeyPatchXMLHttpRequest() {\n if (!('addEventListener' in win.XMLHttpRequest.prototype)) return;\n var nativeOpen = win.XMLHttpRequest.prototype.open; // override native open()\n\n win.XMLHttpRequest.prototype.open = function open(method, url) {\n var _this = this;\n\n var requestSetupKey = false;\n\n var error = function () {\n return handleXHRError(method, url);\n };\n\n var load = function () {\n return handleXHRLoad(method, url, _this.status);\n }; // if we have already setup listeners, it means open() was called twice, we need to remove\n // the listeners and recreate them\n\n\n if (requestSetupKey) {\n this.removeEventListener('load', load);\n this.removeEventListener('error', error);\n } // attach load event listener\n\n\n this.addEventListener('load', load); // attach error event listener\n\n this.addEventListener('error', error);\n requestSetupKey = true;\n nativeOpen.apply(this, arguments);\n };\n\n if (\"production\" !== 'production') {\n restoreFunctions.push(function () {\n win.XMLHttpRequest.prototype.open = nativeOpen;\n });\n }\n }\n\n function handleXHRLoad(method, url, status) {\n if (url === undefined) {\n client._logger.warn('The request URL is no longer present on this XMLHttpRequest. A breadcrumb cannot be left for this request.');\n\n return;\n } // an XMLHttpRequest's URL can be an object as long as its 'toString'\n // returns a URL, e.g. a HTMLAnchorElement\n\n\n if (typeof url === 'string' && _$includes_13(ignoredUrls, url.replace(/\\?.*$/, ''))) {\n // don't leave a network breadcrumb from bugsnag notify calls\n return;\n }\n\n var metadata = {\n status: status,\n request: method + \" \" + url\n };\n\n if (status >= 400) {\n // contacted server but got an error response\n client.leaveBreadcrumb('XMLHttpRequest failed', metadata, BREADCRUMB_TYPE);\n } else {\n client.leaveBreadcrumb('XMLHttpRequest succeeded', metadata, BREADCRUMB_TYPE);\n }\n }\n\n function handleXHRError(method, url) {\n if (url === undefined) {\n client._logger.warn('The request URL is no longer present on this XMLHttpRequest. A breadcrumb cannot be left for this request.');\n\n return;\n }\n\n if (typeof url === 'string' && _$includes_13(ignoredUrls, url.replace(/\\?.*$/, ''))) {\n // don't leave a network breadcrumb from bugsnag notify calls\n return;\n } // failed to contact server\n\n\n client.leaveBreadcrumb('XMLHttpRequest error', {\n request: method + \" \" + url\n }, BREADCRUMB_TYPE);\n } // window.fetch monkey patch\n\n\n function monkeyPatchFetch() {\n // only patch it if it exists and if it is not a polyfill (patching a polyfilled\n // fetch() results in duplicate breadcrumbs for the same request because the\n // implementation uses XMLHttpRequest which is also patched)\n if (!('fetch' in win) || win.fetch.polyfill) return;\n var oldFetch = win.fetch;\n\n win.fetch = function fetch() {\n var _arguments = arguments;\n var urlOrRequest = arguments[0];\n var options = arguments[1];\n var method;\n var url = null;\n\n if (urlOrRequest && typeof urlOrRequest === 'object') {\n url = urlOrRequest.url;\n\n if (options && 'method' in options) {\n method = options.method;\n } else if (urlOrRequest && 'method' in urlOrRequest) {\n method = urlOrRequest.method;\n }\n } else {\n url = urlOrRequest;\n\n if (options && 'method' in options) {\n method = options.method;\n }\n }\n\n if (method === undefined) {\n method = 'GET';\n }\n\n return new Promise(function (resolve, reject) {\n // pass through to native fetch\n oldFetch.apply(void 0, _arguments).then(function (response) {\n handleFetchSuccess(response, method, url);\n resolve(response);\n })[\"catch\"](function (error) {\n handleFetchError(method, url);\n reject(error);\n });\n });\n };\n\n if (\"production\" !== 'production') {\n restoreFunctions.push(function () {\n win.fetch = oldFetch;\n });\n }\n }\n\n var handleFetchSuccess = function (response, method, url) {\n var metadata = {\n status: response.status,\n request: method + \" \" + url\n };\n\n if (response.status >= 400) {\n // when the request comes back with a 4xx or 5xx status it does not reject the fetch promise,\n client.leaveBreadcrumb('fetch() failed', metadata, BREADCRUMB_TYPE);\n } else {\n client.leaveBreadcrumb('fetch() succeeded', metadata, BREADCRUMB_TYPE);\n }\n };\n\n var handleFetchError = function (method, url) {\n client.leaveBreadcrumb('fetch() error', {\n request: method + \" \" + url\n }, BREADCRUMB_TYPE);\n };\n }\n };\n\n if (\"production\" !== 'production') {\n plugin.destroy = function () {\n restoreFunctions.forEach(function (fn) {\n return fn();\n });\n restoreFunctions = [];\n };\n }\n\n return plugin;\n};\n\n/* removed: var _$intRange_24 = require('@bugsnag/core/lib/validators/int-range'); */;\n/*\n * Throttles and dedupes events\n */\n\n\nvar _$throttle_52 = {\n load: function (client) {\n // track sent events for each init of the plugin\n var n = 0; // add onError hook\n\n client.addOnError(function (event) {\n // have max events been sent already?\n if (n >= client._config.maxEvents) {\n client._logger.warn(\"Cancelling event send due to maxEvents per session limit of \" + client._config.maxEvents + \" being reached\");\n\n return false;\n }\n\n n++;\n });\n\n client.resetEventCount = function () {\n n = 0;\n };\n },\n configSchema: {\n maxEvents: {\n defaultValue: function () {\n return 10;\n },\n message: 'should be a positive integer ≤100',\n validate: function (val) {\n return _$intRange_24(1, 100)(val);\n }\n }\n }\n};\n\nvar _$stripQueryString_53 = {};\n/*\n * Remove query strings (and fragments) from stacktraces\n */\n/* removed: var _$map_16 = require('@bugsnag/core/lib/es-utils/map'); */;\n\n/* removed: var _$reduce_17 = require('@bugsnag/core/lib/es-utils/reduce'); */;\n\n_$stripQueryString_53 = {\n load: function (client) {\n client.addOnError(function (event) {\n var allFrames = _$reduce_17(event.errors, function (accum, er) {\n return accum.concat(er.stacktrace);\n }, []);\n _$map_16(allFrames, function (frame) {\n frame.file = strip(frame.file);\n });\n });\n }\n};\n\nvar strip = _$stripQueryString_53._strip = function (str) {\n return typeof str === 'string' ? str.replace(/\\?.*$/, '').replace(/#.*$/, '') : str;\n};\n\n/*\n * Automatically notifies Bugsnag when window.onerror is called\n */\nvar _$onerror_54 = function (win, component) {\n if (win === void 0) {\n win = window;\n }\n\n if (component === void 0) {\n component = 'window onerror';\n }\n\n return {\n load: function (client) {\n if (!client._config.autoDetectErrors) return;\n if (!client._config.enabledErrorTypes.unhandledExceptions) return;\n\n function onerror(messageOrEvent, url, lineNo, charNo, error) {\n // Ignore errors with no info due to CORS settings\n if (lineNo === 0 && /Script error\\.?/.test(messageOrEvent)) {\n client._logger.warn('Ignoring cross-domain or eval script error. See docs: https://tinyurl.com/yy3rn63z');\n } else {\n // any error sent to window.onerror is unhandled and has severity=error\n var handledState = {\n severity: 'error',\n unhandled: true,\n severityReason: {\n type: 'unhandledException'\n }\n };\n var event; // window.onerror can be called in a number of ways. This big if-else is how we\n // figure out which arguments were supplied, and what kind of values it received.\n\n if (error) {\n // if the last parameter (error) was supplied, this is a modern browser's\n // way of saying \"this value was thrown and not caught\"\n event = client.Event.create(error, true, handledState, component, 1);\n decorateStack(event.errors[0].stacktrace, url, lineNo, charNo);\n } else if ( // This complex case detects \"error\" events that are typically synthesised\n // by jquery's trigger method (although can be created in other ways). In\n // order to detect this:\n // - the first argument (message) must exist and be an object (most likely it's a jQuery event)\n // - the second argument (url) must either not exist or be something other than a string (if it\n // exists and is not a string, it'll be the extraParameters argument from jQuery's trigger()\n // function)\n // - the third, fourth and fifth arguments must not exist (lineNo, charNo and error)\n typeof messageOrEvent === 'object' && messageOrEvent !== null && (!url || typeof url !== 'string') && !lineNo && !charNo && !error) {\n // The jQuery event may have a \"type\" property, if so use it as part of the error message\n var name = messageOrEvent.type ? \"Event: \" + messageOrEvent.type : 'Error'; // attempt to find a message from one of the conventional properties, but\n // default to empty string (the event will fill it with a placeholder)\n\n var message = messageOrEvent.message || messageOrEvent.detail || '';\n event = client.Event.create({\n name: name,\n message: message\n }, true, handledState, component, 1); // provide the original thing onerror received – not our error-like object we passed to _notify\n\n event.originalError = messageOrEvent; // include the raw input as metadata – it might contain more info than we extracted\n\n event.addMetadata(component, {\n event: messageOrEvent,\n extraParameters: url\n });\n } else {\n // Lastly, if there was no \"error\" parameter this event was probably from an old\n // browser that doesn't support that. Instead we need to generate a stacktrace.\n event = client.Event.create(messageOrEvent, true, handledState, component, 1);\n decorateStack(event.errors[0].stacktrace, url, lineNo, charNo);\n }\n\n client._notify(event);\n }\n\n if (typeof prevOnError === 'function') prevOnError.apply(this, arguments);\n }\n\n var prevOnError = win.onerror;\n win.onerror = onerror;\n }\n };\n}; // Sometimes the stacktrace has less information than was passed to window.onerror.\n// This function will augment the first stackframe with any useful info that was\n// received as arguments to the onerror callback.\n\n\nvar decorateStack = function (stack, url, lineNo, charNo) {\n if (!stack[0]) stack.push({});\n var culprit = stack[0];\n if (!culprit.file && typeof url === 'string') culprit.file = url;\n if (!culprit.lineNumber && isActualNumber(lineNo)) culprit.lineNumber = lineNo;\n\n if (!culprit.columnNumber) {\n if (isActualNumber(charNo)) {\n culprit.columnNumber = charNo;\n } else if (window.event && isActualNumber(window.event.errorCharacter)) {\n culprit.columnNumber = window.event.errorCharacter;\n }\n }\n};\n\nvar isActualNumber = function (n) {\n return typeof n === 'number' && String.call(n) !== 'NaN';\n};\n\n/* removed: var _$map_16 = require('@bugsnag/core/lib/es-utils/map'); */;\n\n/* removed: var _$iserror_20 = require('@bugsnag/core/lib/iserror'); */;\n\nvar _listener;\n/*\n * Automatically notifies Bugsnag when window.onunhandledrejection is called\n */\n\n\nvar _$unhandledRejection_55 = function (win) {\n if (win === void 0) {\n win = window;\n }\n\n var plugin = {\n load: function (client) {\n if (!client._config.autoDetectErrors || !client._config.enabledErrorTypes.unhandledRejections) return;\n\n var listener = function (evt) {\n var error = evt.reason;\n var isBluebird = false; // accessing properties on evt.detail can throw errors (see #394)\n\n try {\n if (evt.detail && evt.detail.reason) {\n error = evt.detail.reason;\n isBluebird = true;\n }\n } catch (e) {}\n\n var event = client.Event.create(error, false, {\n severity: 'error',\n unhandled: true,\n severityReason: {\n type: 'unhandledPromiseRejection'\n }\n }, 'unhandledrejection handler', 1, client._logger);\n\n if (isBluebird) {\n _$map_16(event.errors[0].stacktrace, fixBluebirdStacktrace(error));\n }\n\n client._notify(event, function (event) {\n if (_$iserror_20(event.originalError) && !event.originalError.stack) {\n var _event$addMetadata;\n\n event.addMetadata('unhandledRejection handler', (_event$addMetadata = {}, _event$addMetadata[Object.prototype.toString.call(event.originalError)] = {\n name: event.originalError.name,\n message: event.originalError.message,\n code: event.originalError.code\n }, _event$addMetadata));\n }\n });\n };\n\n if ('addEventListener' in win) {\n win.addEventListener('unhandledrejection', listener);\n } else {\n win.onunhandledrejection = function (reason, promise) {\n listener({\n detail: {\n reason: reason,\n promise: promise\n }\n });\n };\n }\n\n _listener = listener;\n }\n };\n\n if (\"production\" !== 'production') {\n plugin.destroy = function (win) {\n if (win === void 0) {\n win = window;\n }\n\n if (_listener) {\n if ('addEventListener' in win) {\n win.removeEventListener('unhandledrejection', _listener);\n } else {\n win.onunhandledrejection = null;\n }\n }\n\n _listener = null;\n };\n }\n\n return plugin;\n}; // The stack parser on bluebird stacks in FF get a suprious first frame:\n//\n// Error: derp\n// b@http://localhost:5000/bluebird.html:22:24\n// a@http://localhost:5000/bluebird.html:18:9\n// @http://localhost:5000/bluebird.html:14:9\n//\n// results in\n// […]\n// 0: Object { file: \"Error: derp\", method: undefined, lineNumber: undefined, … }\n// 1: Object { file: \"http://localhost:5000/bluebird.html\", method: \"b\", lineNumber: 22, … }\n// 2: Object { file: \"http://localhost:5000/bluebird.html\", method: \"a\", lineNumber: 18, … }\n// 3: Object { file: \"http://localhost:5000/bluebird.html\", lineNumber: 14, columnNumber: 9, … }\n//\n// so the following reduce/accumulator function removes such frames\n//\n// Bluebird pads method names with spaces so trim that too…\n// https://github.com/petkaantonov/bluebird/blob/b7f21399816d02f979fe434585334ce901dcaf44/src/debuggability.js#L568-L571\n\n\nvar fixBluebirdStacktrace = function (error) {\n return function (frame) {\n if (frame.file === error.toString()) return;\n\n if (frame.method) {\n frame.method = frame.method.replace(/^\\s+/, '');\n }\n };\n};\n\nvar _$notifier_2 = {};\nvar name = 'Bugsnag JavaScript';\nvar version = '7.19.0';\nvar url = 'https://github.com/bugsnag/bugsnag-js';\n\n/* removed: var _$Client_4 = require('@bugsnag/core/client'); */;\n\n/* removed: var _$Event_6 = require('@bugsnag/core/event'); */;\n\n/* removed: var _$Session_35 = require('@bugsnag/core/session'); */;\n\n/* removed: var _$Breadcrumb_3 = require('@bugsnag/core/breadcrumb'); */;\n\n/* removed: var _$map_16 = require('@bugsnag/core/lib/es-utils/map'); */;\n\n/* removed: var _$keys_15 = require('@bugsnag/core/lib/es-utils/keys'); */;\n\n/* removed: var _$assign_11 = require('@bugsnag/core/lib/es-utils/assign'); */; // extend the base config schema with some browser-specific options\n\n\nvar __schema_2 = _$assign_11({}, _$config_5.schema, _$config_1);\n\n/* removed: var _$onerror_54 = require('@bugsnag/plugin-window-onerror'); */;\n\n/* removed: var _$unhandledRejection_55 = require('@bugsnag/plugin-window-unhandled-rejection'); */;\n\n/* removed: var _$app_38 = require('@bugsnag/plugin-app-duration'); */;\n\n/* removed: var _$device_40 = require('@bugsnag/plugin-browser-device'); */;\n\n/* removed: var _$context_39 = require('@bugsnag/plugin-browser-context'); */;\n\n/* removed: var _$request_44 = require('@bugsnag/plugin-browser-request'); */;\n\n/* removed: var _$throttle_52 = require('@bugsnag/plugin-simple-throttle'); */;\n\n/* removed: var _$consoleBreadcrumbs_47 = require('@bugsnag/plugin-console-breadcrumbs'); */;\n\n/* removed: var _$networkBreadcrumbs_51 = require('@bugsnag/plugin-network-breadcrumbs'); */;\n\n/* removed: var _$navigationBreadcrumbs_50 = require('@bugsnag/plugin-navigation-breadcrumbs'); */;\n\n/* removed: var _$interactionBreadcrumbs_49 = require('@bugsnag/plugin-interaction-breadcrumbs'); */;\n\n/* removed: var _$inlineScriptContent_48 = require('@bugsnag/plugin-inline-script-content'); */;\n\n/* removed: var _$session_45 = require('@bugsnag/plugin-browser-session'); */;\n\n/* removed: var _$clientIp_46 = require('@bugsnag/plugin-client-ip'); */;\n\n/* removed: var _$stripQueryString_53 = require('@bugsnag/plugin-strip-query-string'); */; // delivery mechanisms\n\n\n/* removed: var _$delivery_36 = require('@bugsnag/delivery-x-domain-request'); */;\n\n/* removed: var _$delivery_37 = require('@bugsnag/delivery-xml-http-request'); */;\n\nvar Bugsnag = {\n _client: null,\n createClient: function (opts) {\n // handle very simple use case where user supplies just the api key as a string\n if (typeof opts === 'string') opts = {\n apiKey: opts\n };\n if (!opts) opts = {};\n var internalPlugins = [// add browser-specific plugins\n _$app_38, _$device_40(), _$context_39(), _$request_44(), _$throttle_52, _$session_45, _$clientIp_46, _$stripQueryString_53, _$onerror_54(), _$unhandledRejection_55(), _$navigationBreadcrumbs_50(), _$interactionBreadcrumbs_49(), _$networkBreadcrumbs_51(), _$consoleBreadcrumbs_47, // this one added last to avoid wrapping functionality before bugsnag uses it\n _$inlineScriptContent_48()]; // configure a client with user supplied options\n\n var bugsnag = new _$Client_4(opts, __schema_2, internalPlugins, {\n name: name,\n version: version,\n url: url\n }); // set delivery based on browser capability (IE 8+9 have an XDomainRequest object)\n\n bugsnag._setDelivery(window.XDomainRequest ? _$delivery_36 : _$delivery_37);\n\n bugsnag._logger.debug('Loaded!');\n\n bugsnag.leaveBreadcrumb('Bugsnag loaded', {}, 'state');\n return bugsnag._config.autoTrackSessions ? bugsnag.startSession() : bugsnag;\n },\n start: function (opts) {\n if (Bugsnag._client) {\n Bugsnag._client._logger.warn('Bugsnag.start() was called more than once. Ignoring.');\n\n return Bugsnag._client;\n }\n\n Bugsnag._client = Bugsnag.createClient(opts);\n return Bugsnag._client;\n },\n isStarted: function () {\n return Bugsnag._client != null;\n }\n};\n_$map_16(['resetEventCount'].concat(_$keys_15(_$Client_4.prototype)), function (m) {\n if (/^_/.test(m)) return;\n\n Bugsnag[m] = function () {\n if (!Bugsnag._client) return console.log(\"Bugsnag.\" + m + \"() was called before Bugsnag.start()\");\n Bugsnag._client._depth += 1;\n\n var ret = Bugsnag._client[m].apply(Bugsnag._client, arguments);\n\n Bugsnag._client._depth -= 1;\n return ret;\n };\n});\n_$notifier_2 = Bugsnag;\n_$notifier_2.Client = _$Client_4;\n_$notifier_2.Event = _$Event_6;\n_$notifier_2.Session = _$Session_35;\n_$notifier_2.Breadcrumb = _$Breadcrumb_3; // Export a \"default\" property for compatibility with ESM imports\n\n_$notifier_2[\"default\"] = Bugsnag;\n\nreturn _$notifier_2;\n\n});\n//# sourceMappingURL=bugsnag.js.map\n","module.exports = require('@bugsnag/browser')\n","class MrCountdown extends HTMLElement {\n\t#ticker = 0;\n\n\t#lastRenderedSecond = -1;\n\n\tconnectedCallback() {\n\t\tif ( this.#ticker ) {\n\t\t\twindow.clearInterval( this.#ticker );\n\t\t}\n\n\t\trequestAnimationFrame( () => {\n\t\t\tthis.update();\n\t\t} );\n\n\t\tthis.#ticker = window.setInterval( () => {\n\t\t\tconst currentSecond = Math.floor( ( Date.now() / 1000 ) % 60 );\n\t\t\tif ( currentSecond !== this.#lastRenderedSecond ) {\n\t\t\t\tthis.update();\n\n\t\t\t\tthis.#lastRenderedSecond = currentSecond;\n\t\t\t}\n\t\t}, 100 );\n\t}\n\n\tupdate() {\n\t\tif ( !this.hasAttribute( 'data-timestamp' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst target = parseInt( this.getAttribute( 'data-timestamp' ) ?? '0', 10 ) * 1000;\n\t\tif ( !target ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst now = Date.now();\n\t\tconst diff = target - now;\n\n\n\t\tconst mrCountdownClock = this.querySelector( '[mr-countdown-clock]' );\n\t\tif ( !mrCountdownClock ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( 0 < diff ) {\n\t\t\tmrCountdownClock.setAttribute( 'is-counting-down', '' );\n\t\t\tmrCountdownClock.removeAttribute( 'has-finished' );\n\n\t\t\tthis.setAttribute( 'is-counting-down', '' );\n\t\t\tthis.removeAttribute( 'has-finished' );\n\t\t} else {\n\t\t\tmrCountdownClock.removeAttribute( 'is-counting-down' );\n\t\t\tmrCountdownClock.setAttribute( 'has-finished', '' );\n\n\t\t\tthis.removeAttribute( 'is-counting-down' );\n\t\t\tthis.setAttribute( 'has-finished', '' );\n\t\t}\n\n\t\tconst data = this.countdown( diff );\n\n\t\tconst countdownElements = this.querySelectorAll( '.countdown__part__number' );\n\t\tif ( !countdownElements || 3 !== countdownElements.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor ( let i = 0; i < data.length; i++ ) {\n\t\t\tconst countdownNumber = data[i];\n\t\t\tconst countdownElement = countdownElements[i];\n\n\t\t\tcountdownElement.innerHTML = countdownNumber;\n\t\t}\n\t}\n\n\tcountdown( diff: number ) {\n\t\tconst days = Math.floor( diff / 86400000 ) * 24;\n\t\tconst hours = Math.floor( ( diff / 3600000 ) % 24 ) + days;\n\t\tconst minutes = Math.floor( ( diff / 60000 ) % 60 );\n\t\tconst seconds = Math.floor( ( diff / 1000 ) % 60 );\n\n\t\treturn [\n\t\t\t`00${hours}`.slice( -2 ),\n\t\t\t`00${minutes}`.slice( -2 ),\n\t\t\t`00${seconds}`.slice( -2 ),\n\t\t];\n\t}\n}\n\ncustomElements.define( 'mr-countdown', MrCountdown );\n","window.addEventListener( 'change', ( e: Event ) => {\n\tif ( !e.target || !( e.target instanceof HTMLSelectElement ) ) {\n\t\treturn;\n\t}\n\n\tconst select = e.target;\n\n\tif ( select.hasAttribute( 'ksl-countries' ) ) {\n\t\thandleCountryValueChange( e );\n\n\t\treturn;\n\t}\n\n\tif ( select.hasAttribute( 'ksl-cities' ) ) {\n\t\thandleCityValueChange();\n\n\t\treturn;\n\t}\n\n} );\n\nfunction handleCountryValueChange( e: Event ) {\n\t// gather html elements\n\tconst countrySelect = document.querySelector( '[ksl-countries]' );\n\tconst citySelectGlobal = document.querySelector( '[ksl-cities=\"global\"]' );\n\tconst citySelects = document.querySelectorAll( '[ksl-cities]' );\n\n\t// verify html elements exist\n\tif ( !countrySelect || !( countrySelect instanceof HTMLSelectElement ) ) {\n\t\treturn;\n\t}\n\n\tif ( !citySelectGlobal || !( citySelectGlobal instanceof HTMLSelectElement ) ) {\n\t\treturn;\n\t}\n\n\t// If this is not triggered by \"cityChangedHandler\" -> clear the city select value\n\tif ( !( e instanceof CustomEvent ) || ( !e.detail || 'manual-trigger' !== e.detail ) ) {\n\t\tcitySelects.forEach( ( citySelect ) => {\n\t\t\tif ( !citySelect || !( citySelect instanceof HTMLSelectElement ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcitySelect.value = '';\n\t\t} );\n\t}\n\n\t// If there is no country selected -> show the global cities list\n\tif ( !countrySelect.value ) {\n\t\tcitySelects.forEach( ( citySelect ) => {\n\t\t\tif ( !citySelect || !( citySelect instanceof HTMLSelectElement ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcitySelect.value = '';\n\t\t\tcitySelect.setAttribute( 'hidden', '' );\n\t\t\tcitySelect.setAttribute( 'disabled', '' );\n\t\t} );\n\n\t\tcitySelectGlobal.removeAttribute( 'hidden' );\n\t\tcitySelectGlobal.removeAttribute( 'disabled' );\n\n\t\treturn;\n\t}\n\n\t// Show the country specific cities list\n\tcitySelects.forEach( ( citySelect ) => {\n\t\tif ( !citySelect || !( citySelect instanceof HTMLSelectElement ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcitySelect.value = '';\n\t\tcitySelect.setAttribute( 'hidden', '' );\n\t\tcitySelect.setAttribute( 'disabled', '' );\n\t} );\n\n\tconst citySelectForCountry = document.querySelector( '[ksl-cities=\"' + countrySelect.value + '\"]' );\n\tif ( !citySelectForCountry || !( citySelectForCountry instanceof HTMLSelectElement ) ) {\n\t\t// fallback to the global list.\n\t\tcitySelectGlobal.removeAttribute( 'hidden' );\n\t\tcitySelectGlobal.removeAttribute( 'disabled' );\n\n\t\treturn;\n\t}\n\n\tcitySelectForCountry.removeAttribute( 'hidden' );\n\tcitySelectForCountry.removeAttribute( 'disabled' );\n}\n\nfunction handleCityValueChange() {\n\t// gather html elements\n\tconst countrySelect = document.querySelector( '[ksl-countries]' );\n\tconst citySelectGlobal = document.querySelector( '[ksl-cities=\"global\"]' );\n\n\t// verify html elements exist\n\tif ( !countrySelect || !( countrySelect instanceof HTMLSelectElement ) ) {\n\t\treturn;\n\t}\n\n\tif ( !citySelectGlobal || !( citySelectGlobal instanceof HTMLSelectElement ) ) {\n\t\treturn;\n\t}\n\n\t// Country is already set, nothing more todo here\n\tif ( countrySelect.value ) {\n\t\treturn;\n\t}\n\n\t// If the country is empty, set it to the country from the city value\n\tfor ( let i = 0; i < citySelectGlobal.children.length; i++ ) {\n\t\tconst c = citySelectGlobal.children[i];\n\t\tif ( !( c instanceof HTMLOptionElement ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif ( c.value === citySelectGlobal.value ) {\n\n\t\t\tconst countryForCity = c.getAttribute( 'country' );\n\t\t\tif ( countryForCity ) {\n\t\t\t\tcountrySelect.value = countryForCity;\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Trigger the countryChangedHandler to update the datalist for the cities.\n\tconst countryEvent = new CustomEvent( 'change', {\n\t\tdetail: 'manual-trigger',\n\t} );\n\n\tcountrySelect.dispatchEvent( countryEvent );\n}\n","const ANIMATION_DURATION = 1920;\n\nclass MrDots extends HTMLElement {\n\t#isHovering = false;\n\n\t#timer: number|undefined;\n\n\t#isTouch = false;\n\n\t#mouseenterHandler = ( e: Event ): void => {\n\t\tif ( !e || !e.currentTarget ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst trigger = e.currentTarget;\n\t\tif ( !( trigger instanceof HTMLElement ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !trigger ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this.#isTouch ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#isHovering = true;\n\n\t\ttrigger.classList.add( 'is-hover-active' );\n\n\t\tif ( 'undefined' !== typeof this.#timer ) {\n\t\t\tclearInterval( this.#timer );\n\t\t\tthis.#timer = undefined;\n\t\t}\n\n\t\tthis.#timer = window.setInterval( () => {\n\t\t\tthis.checkState( trigger );\n\t\t}, ANIMATION_DURATION );\n\t};\n\n\tcheckState( trigger: HTMLElement ): void {\n\t\tif ( this.#isHovering ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( trigger ) {\n\t\t\ttrigger.classList.remove( 'is-hover-active' );\n\t\t}\n\n\t\tif ( 'undefined' !== typeof this.#timer ) {\n\t\t\tclearInterval( this.#timer );\n\t\t\tthis.#timer = undefined;\n\t\t}\n\t}\n\n\t#mouseleaveHandler = (): void => {\n\t\tif ( this.#isTouch ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#isHovering = false;\n\t};\n\n\tconnectedCallback() {\n\t\tthis.addEventListener( 'touchstart', () => {\n\t\t\tthis.#isTouch = true;\n\t\t}, {\n\t\t\tpassive: true,\n\t\t\tonce: true,\n\t\t} );\n\n\t\trequestAnimationFrame( () => {\n\t\t\tdocument.querySelectorAll( '.js-dots-trigger' ).forEach( ( el ) => {\n\t\t\t\tel.addEventListener( 'mouseenter', this.#mouseenterHandler );\n\t\t\t\tel.addEventListener( 'mouseleave', this.#mouseleaveHandler );\n\t\t\t} );\n\t\t} );\n\t}\n\n\tdisconnectedCallback() {\n\t\tdocument.querySelectorAll( '.js-dots-trigger' ).forEach( ( el ) => {\n\t\t\tel.removeEventListener( 'mouseenter', this.#mouseenterHandler );\n\t\t\tel.removeEventListener( 'mouseleave', this.#mouseleaveHandler );\n\t\t} );\n\t}\n}\n\ncustomElements.define( 'mr-dots', MrDots );\n","// Based on https://www.w3.org/WAI/tutorials/menus/flyout/\n\nclass MrFlyOutMenuTrigger extends HTMLElement {\n\t/* Used to store the timeout ID */\n\t#mouseTimer = 0;\n\n\t/** Click-events on the fly-out trigger should toggle the menu.\n\t * This will also work for enter and space keypresses.\n\t */\n\t#clickHandler = ( e: MouseEvent ): void => {\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst flyOutTarget = this.getFlyOutMenuFromEvent( e );\n\t\tif ( !flyOutTarget ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.toggleFlyOutMenu( flyOutTarget );\n\t};\n\n\t/** Custom hover functionality for extra A11Y:\n\t * show menu on mouseover, and clear the mouseTimer.\n\t * (also see mouseoutHandler)\n\t */\n\t#mouseoverHandler = ( e: MouseEvent ): void => {\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst flyOutTarget = this.getFlyOutMenuFromEvent( e );\n\t\tif ( !flyOutTarget ) {\n\t\t\treturn;\n\t\t}\n\n\t\twindow.clearTimeout( this.#mouseTimer );\n\n\t\tthis.showFlyOutMenu( flyOutTarget );\n\t};\n\n\t/** Custom hover functionality for extra A11Y:\n\t * show menu on mouseout, and set the mouseTimer.\n\t * This gives users with less-precise mousehandling more time to reach\n\t * the fly-out menu, and allows for \"errors\" (moving mouse outside element)\n\t * (also see mouseoverHandler)\n\t */\n\t#mouseoutHandler = ( e: MouseEvent ): void => {\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst flyOutTarget = this.getFlyOutMenuFromEvent( e );\n\t\tif ( !flyOutTarget ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#mouseTimer = window.setTimeout( () => {\n\t\t\tthis.hideFlyOutMenu( flyOutTarget );\n\t\t}, 1000 );\n\t};\n\n\tconstructor() {\n\t\tsuper();\n\t}\n\n\t/* Add event listener */\n\tconnectedCallback(): void {\n\t\trequestAnimationFrame( () => {\n\t\t\tthis.addEventListener( 'click', this.#clickHandler );\n\t\t\tthis.addEventListener( 'mouseover', this.#mouseoverHandler );\n\t\t\tthis.addEventListener( 'mouseout', this.#mouseoutHandler );\n\t\t} );\n\t}\n\n\t/* Remove event listener */\n\tdisconnectedCallback(): void {\n\t\tthis.removeEventListener( 'click', this.#clickHandler );\n\t\tthis.removeEventListener( 'mouseover', this.#mouseoverHandler );\n\t\tthis.removeEventListener( 'mouseout', this.#mouseoutHandler );\n\t}\n\n\t/* Helper function to select fly-out target from events added above */\n\tgetFlyOutMenuFromEvent( e: MouseEvent ): HTMLElement|null {\n\t\tif ( !e || !e.currentTarget ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tlet trigger: HTMLElement | null = null;\n\t\tif ( e.currentTarget instanceof HTMLElement ) {\n\t\t\ttrigger = e.currentTarget;\n\t\t}\n\n\t\tif ( !trigger || !trigger.getAttribute( 'for' ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst flyOutTargetId = trigger.getAttribute( 'for' );\n\t\tconst flyOutTarget = document.querySelector( `#${flyOutTargetId}` );\n\n\t\tif ( flyOutTarget && ( flyOutTarget instanceof HTMLElement ) ) {\n\t\t\treturn flyOutTarget;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\ttoggleFlyOutMenu( target: HTMLElement ): void {\n\t\tif ( !target ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (\n\t\t\t!target.getAttribute( 'aria-expanded' ) ||\n\t\t\t(\n\t\t\t\ttarget.getAttribute( 'aria-expanded' ) &&\n\t\t\t\t'false' === target.getAttribute( 'aria-expanded' )\n\t\t\t)\n\t\t) {\n\t\t\tif ( target.parentElement ) {\n\t\t\t\ttarget.parentElement.setAttribute( 'flyout-active', '' );\n\t\t\t}\n\n\t\t\ttarget.setAttribute( 'aria-expanded', 'true' );\n\t\t\tthis.dispatchOpenEvent();\n\t\t} else {\n\t\t\tif ( target.parentElement ) {\n\t\t\t\ttarget.parentElement.removeAttribute( 'flyout-active' );\n\t\t\t}\n\n\t\t\ttarget.setAttribute( 'aria-expanded', 'false' );\n\t\t}\n\t}\n\n\thideFlyOutMenu( target: HTMLElement ): void {\n\t\tif ( !target ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( target.parentElement ) {\n\t\t\ttarget.parentElement.removeAttribute( 'flyout-active' );\n\t\t}\n\n\t\ttarget.setAttribute( 'aria-expanded', 'false' );\n\t}\n\n\tshowFlyOutMenu( target: HTMLElement ): void {\n\t\tif ( !target ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( target.parentElement ) {\n\t\t\ttarget.parentElement.setAttribute( 'flyout-active', '' );\n\t\t}\n\n\t\ttarget.setAttribute( 'aria-expanded', 'true' );\n\t\tthis.dispatchOpenEvent();\n\t}\n\n\t/* Other fly-out menus should close when opening a new one */\n\tdispatchOpenEvent() {\n\t\twindow.dispatchEvent(\n\t\t\tnew CustomEvent(\n\t\t\t\t'mr-fly-out-menu-trigger:openedMenu',\n\t\t\t\t{\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcancelable: true,\n\t\t\t\t\tdetail: {\n\t\t\t\t\t\tid: this.getAttribute( 'for' ) ?? null,\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t)\n\t\t);\n\t}\n}\n\ncustomElements.define( 'mr-fly-out-menu-trigger', MrFlyOutMenuTrigger );\n","// Based on https://www.w3.org/WAI/tutorials/menus/flyout/\n\nclass MrFlyOutMenu extends HTMLElement {\n\t/* Listen for other fly-out menus opening, so this one can close immediatly */\n\t#openEventHandler = ( e: Event ) => {\n\t\tif ( !e || !( e instanceof CustomEvent ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst detail = e.detail;\n\t\tif ( !detail || !detail.id ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !this.getAttribute( 'id' ) || ( this.getAttribute( 'id' ) === detail.id ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this.parentElement ) {\n\t\t\tthis.parentElement.removeAttribute( 'flyout-active' );\n\t\t}\n\n\t\tthis.setAttribute( 'aria-expanded', 'false' );\n\t};\n\n\tconstructor() {\n\t\tsuper();\n\t}\n\n\tconnectedCallback(): void {\n\t\trequestAnimationFrame( () => {\n\t\t\twindow.addEventListener( 'mr-fly-out-menu-trigger:openedMenu', this.#openEventHandler );\n\t\t} );\n\t}\n\n\tdisconnectedCallback(): void {\n\t\twindow.removeEventListener( 'mr-fly-out-menu-trigger:openedMenu', this.#openEventHandler );\n\t}\n}\n\ncustomElements.define( 'mr-fly-out-menu', MrFlyOutMenu );\n","const isHoverDevice = window.matchMedia( '(hover: hover)' );\n\nclass MrHotspot extends HTMLElement {\n\t#toggleHandler = ( event: Event ) => {\n\t\tif ( event.target !== this ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !this.isOpen() ) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\n\t\t\tthis.open();\n\t\t}\n\t};\n\n\t#openHandler = () => {\n\t\tif ( !this.isOpen() ) {\n\t\t\tthis.open();\n\t\t}\n\t};\n\n\t#closeHandler = () => {\n\t\tif ( this.isOpen() ) {\n\t\t\tthis.close();\n\t\t}\n\t};\n\n\tconnectedCallback() {\n\t\tthis.parentElement?.addEventListener( 'click', this.#toggleHandler );\n\n\t\tthis.parentElement?.addEventListener( 'focus', () => {\n\t\t\tthis.ensureDetailsFitsWithinBounds();\n\t\t\tthis.closeAllOtherHotspots();\n\t\t} );\n\n\t\tif ( isHoverDevice.matches ) {\n\t\t\tthis.parentElement?.addEventListener( 'mouseenter', this.#openHandler );\n\t\t\tthis.parentElement?.addEventListener( 'mouseleave', this.#closeHandler );\n\t\t}\n\t}\n\n\tisOpen() {\n\t\treturn this.getAttribute( 'state' ) === 'open';\n\t}\n\n\topen() {\n\t\tthis.closeAllOtherHotspots();\n\t\tthis.ensureDetailsFitsWithinBounds();\n\t\tthis.setAttribute( 'state', 'open' );\n\t}\n\n\tclose() {\n\t\tthis.setAttribute( 'state', 'closed' );\n\t}\n\n\tensureDetailsFitsWithinBounds() {\n\t\tif ( this.hasAttribute( 'anchor' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst mainBoundaries = this.closest( '.l-showcase--hotspots' )?.getBoundingClientRect();\n\t\tconst detailBoundaries = this.querySelector( '[hotspot-details]' )?.getBoundingClientRect();\n\t\tif ( !mainBoundaries || !detailBoundaries ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst mainBoundariesWidth = mainBoundaries.width;\n\t\tconst hotspotIsOnTheRight = mainBoundariesWidth / 2 < detailBoundaries.left;\n\n\t\tconst goesOverRightEdge = ( detailBoundaries.right + 10 ) > mainBoundaries.right;\n\t\tconst goesOverBottomEdge = ( detailBoundaries.bottom + 10 ) > mainBoundaries.bottom;\n\n\t\tif ( goesOverRightEdge && hotspotIsOnTheRight && goesOverBottomEdge ) {\n\t\t\tthis.setAttribute( 'anchor', 'right bottom' );\n\t\t} else if ( goesOverRightEdge && hotspotIsOnTheRight ) {\n\t\t\tthis.setAttribute( 'anchor', 'right top' );\n\t\t} else if ( goesOverBottomEdge ) {\n\t\t\tthis.setAttribute( 'anchor', 'left bottom' );\n\t\t} else {\n\t\t\tthis.setAttribute( 'anchor', 'left top' );\n\t\t}\n\t}\n\n\tcloseAllOtherHotspots() {\n\t\tdocument.querySelectorAll( 'mr-hotspot' ).forEach( ( otherHotspot ) => {\n\t\t\tif ( this === otherHotspot ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( typeof otherHotspot.close === 'function' ) {\n\t\t\t\totherHotspot.close();\n\t\t\t}\n\t\t} );\n\t}\n}\n\ncustomElements.define( 'mr-hotspot', MrHotspot );\n","// Showcase Items with CTA but without video should be fully clickable.\n// This is a features targetted at mobile user so missing cursor: pointer is ok here.\n\nwindow.addEventListener( 'click', ( e: MouseEvent ) => {\n\tif ( !( e.target instanceof HTMLElement ) ) {\n\t\treturn;\n\t}\n\n\tif ( ( e.target instanceof HTMLAnchorElement ) ) {\n\t\treturn;\n\t}\n\n\tif ( ( e.target instanceof HTMLButtonElement ) ) {\n\t\treturn;\n\t}\n\n\tif ( e.target.closest( '.l-showcase__item' )?.querySelector( 'video, mr-hotspot' ) ) {\n\t\treturn;\n\t}\n\n\tconst ctaLinks = e.target.closest( '.l-showcase__item' )?.querySelectorAll( 'a.cta-link' );\n\tif ( !ctaLinks ) {\n\t\treturn;\n\t}\n\n\tconst ctaLinksArr = Array.from( ctaLinks );\n\tif ( 1 !== ctaLinksArr.length ) {\n\t\treturn;\n\t}\n\n\tif ( !ctaLinksArr[0] || !( ctaLinksArr[0] instanceof HTMLAnchorElement ) ) {\n\t\treturn;\n\t}\n\n\tctaLinksArr[0].click();\n} );\n","// MrUserInteracting detects if a user is interacting within itself\nclass MrUserInteracting extends HTMLElement {\n\t#interactionTimeout: number | null = null;\n\n\t#keyupHandler = ( e: KeyboardEvent ): void => {\n\t\tif ( document.activeElement && this.contains( document.activeElement ) ) {\n\t\t\tthis.extendInteractionDeadline( 1280 );\n\n\t\t\treturn;\n\t\t}\n\n\t\tif ( e.target && e.target instanceof Element && this.contains( e.target ) ) {\n\t\t\tthis.extendInteractionDeadline( 1280 );\n\n\t\t\treturn;\n\t\t}\n\t};\n\n\t#downHandler = (): void => {\n\t\tthis.setUserIsInteracting();\n\n\t\tif ( null !== this.#interactionTimeout ) {\n\t\t\twindow.clearTimeout( this.#interactionTimeout );\n\t\t}\n\t};\n\n\t#upHandler = (): void => {\n\t\tthis.extendInteractionDeadline( 1280 );\n\t};\n\n\t#moveHandler = (): void => {\n\t\tthis.extendInteractionDeadline( 1280 );\n\t};\n\n\t#mouseenterHandler = (): void => {\n\t\tthis.extendInteractionDeadline( 1280 );\n\t};\n\n\t#mouseleaveHandler = (): void => {\n\t\tthis.extendInteractionDeadline( 960 );\n\t};\n\n\t#focusinHandler = ( e: FocusEvent ): void => {\n\t\tif ( document.activeElement && this.contains( document.activeElement ) ) {\n\t\t\tthis.extendInteractionDeadline( 1280 );\n\n\t\t\treturn;\n\t\t}\n\n\t\tif ( e.target && e.target instanceof Element && this.contains( e.target ) ) {\n\t\t\tthis.extendInteractionDeadline( 1280 );\n\n\t\t\treturn;\n\t\t}\n\t};\n\n\t#swapHandler = (): void => {\n\t\tthis.extendInteractionDeadline( 1280 );\n\t};\n\n\tconnectedCallback(): void {\n\t\tthis.addEventListener( 'mouseup', this.#upHandler );\n\t\tthis.addEventListener( 'mousedown', this.#downHandler );\n\t\tthis.addEventListener( 'mousemove', this.#moveHandler, {\n\t\t\tpassive: true,\n\t\t} );\n\n\t\tthis.addEventListener( 'touchend', this.#upHandler );\n\t\tthis.addEventListener( 'touchstart', this.#downHandler, {\n\t\t\tpassive: true,\n\t\t} );\n\t\tthis.addEventListener( 'touchmove', this.#moveHandler, {\n\t\t\tpassive: true,\n\t\t} );\n\n\t\tthis.addEventListener( 'keyup', this.#keyupHandler );\n\n\t\tthis.addEventListener( 'mouseenter', this.#mouseenterHandler );\n\t\tthis.addEventListener( 'mouseleave', this.#mouseleaveHandler );\n\n\n\t\tthis.addEventListener( 'focusin', this.#focusinHandler );\n\n\t\tthis.addEventListener( 'swap', this.#swapHandler );\n\n\t\tthis.extendInteractionDeadline( 2000 );\n\t}\n\n\tdisconnectedCallback(): void {\n\t\tthis.removeEventListener( 'mouseup', this.#upHandler );\n\t\tthis.removeEventListener( 'mousedown', this.#downHandler );\n\t\tthis.removeEventListener( 'mousemove', this.#moveHandler );\n\n\t\tthis.removeEventListener( 'touchend', this.#upHandler );\n\t\tthis.removeEventListener( 'touchstart', this.#downHandler );\n\t\tthis.removeEventListener( 'touchmove', this.#moveHandler );\n\n\t\tthis.removeEventListener( 'keyup', this.#keyupHandler );\n\n\t\tthis.removeEventListener( 'mouseenter', this.#mouseenterHandler );\n\t\tthis.removeEventListener( 'mouseleave', this.#mouseleaveHandler );\n\n\t\tthis.removeEventListener( 'focusin', this.#focusinHandler );\n\n\t\tthis.removeEventListener( 'swap', this.#swapHandler );\n\t}\n\n\textendInteractionDeadline( amount: number ) {\n\t\tthis.setUserIsInteracting();\n\n\t\tif ( null !== this.#interactionTimeout ) {\n\t\t\twindow.clearTimeout( this.#interactionTimeout );\n\t\t}\n\n\t\tthis.#interactionTimeout = window.setTimeout( () => {\n\t\t\tthis.setUserIsPassive();\n\t\t\tthis.#interactionTimeout = null;\n\n\t\t\treturn;\n\t\t}, amount );\n\t}\n\n\tsetUserIsInteracting() {\n\t\tthis.setAttribute( 'interacting', '' );\n\t}\n\n\tsetUserIsPassive() {\n\t\tthis.removeAttribute( 'interacting' );\n\t}\n}\n\ncustomElements.define( 'mr-user-interacting', MrUserInteracting );\n","var isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw $TypeError(tryToString(argument) + ' is not a function');\n};\n","var isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw $TypeError($String(argument) + ' is not an object');\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar isArray = require('../internals/is-array');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Safari < 13 does not throw an error in this case\nvar SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () {\n // makes no sense without proper strict mode support\n if (this !== undefined) return true;\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty([], 'length', { writable: false }).length = 1;\n } catch (error) {\n return error instanceof TypeError;\n }\n}();\n\nmodule.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) {\n if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) {\n throw $TypeError('Cannot set read only .length');\n } return O.length = length;\n} : function (O, length) {\n return O.length = length;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","var hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var isCallable = require('../internals/is-callable');\nvar definePropertyModule = require('../internals/object-define-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nmodule.exports = function (O, key, value, options) {\n if (!options) options = {};\n var simple = options.enumerable;\n var name = options.name !== undefined ? options.name : key;\n if (isCallable(value)) makeBuiltIn(value, name, options);\n if (options.global) {\n if (simple) O[key] = value;\n else defineGlobalProperty(key, value);\n } else {\n try {\n if (!options.unsafe) delete O[key];\n else if (O[key]) simple = true;\n } catch (error) { /* empty */ }\n if (simple) O[key] = value;\n else definePropertyModule.f(O, key, {\n value: value,\n enumerable: false,\n configurable: !options.nonConfigurable,\n writable: !options.nonWritable\n });\n } return O;\n};\n","var global = require('../internals/global');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var documentAll = typeof document == 'object' && document.all;\n\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nvar IS_HTMLDDA = typeof documentAll == 'undefined' && documentAll !== undefined;\n\nmodule.exports = {\n all: documentAll,\n IS_HTMLDDA: IS_HTMLDDA\n};\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var $TypeError = TypeError;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991\n\nmodule.exports = function (it) {\n if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\n return it;\n};\n","module.exports = typeof navigator != 'undefined' && String(navigator.userAgent) || '';\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.dontCallGetSet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || defineGlobalProperty(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.dontCallGetSet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty == typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n defineBuiltIn(target, key, sourceProperty, options);\n }\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n return function () {\n return call.apply(fn, arguments);\n };\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","var aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","module.exports = {};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split(it, '') : $Object(it);\n} : $Object;\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n /* eslint-disable no-self-assign -- prototype methods protection */\n store.get = store.get;\n store.has = store.has;\n store.set = store.set;\n /* eslint-enable no-self-assign -- prototype methods protection */\n set = function (it, metadata) {\n if (store.has(it)) throw TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n store.set(it, metadata);\n return metadata;\n };\n get = function (it) {\n return store.get(it) || {};\n };\n has = function (it) {\n return store.has(it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n return classof(argument) == 'Array';\n};\n","var $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = $documentAll.IS_HTMLDDA ? function (argument) {\n return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n return typeof argument == 'function';\n};\n","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n return it === null || it === undefined;\n};\n","var isCallable = require('../internals/is-callable');\nvar $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\nmodule.exports = $documentAll.IS_HTMLDDA ? function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it) || it === documentAll;\n} : function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","module.exports = false;\n","var getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","var toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar $String = String;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar stringSlice = uncurryThis(''.slice);\nvar replace = uncurryThis(''.replace);\nvar join = uncurryThis([].join);\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n name = '[' + replace($String(name), /^Symbol\\(([^)]*)\\)/, '$1') + ']';\n }\n if (options && options.getter) name = 'get ' + name;\n if (options && options.setter) name = 'set ' + name;\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n else value.name = name;\n }\n if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n defineProperty(value, 'length', { value: options.arity });\n }\n try {\n if (options && hasOwn(options, 'constructor') && options.constructor) {\n if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n } else if (value.prototype) value.prototype = undefined;\n } catch (error) { /* empty */ }\n var state = enforceInternalState(value);\n if (!hasOwn(state, 'source')) {\n state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? floor : ceil)(n);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw $TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","var call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw $TypeError(\"Can't convert object to primitive value\");\n};\n","var getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","var isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (isNullOrUndefined(it)) throw $TypeError(\"Can't call method on \" + it);\n return it;\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","var global = require('../internals/global');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || defineGlobalProperty(SHARED, {});\n\nmodule.exports = store;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.29.1',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2023 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.29.1/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n","/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","var trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n","var call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","var toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","var $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype != 42;\n});\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Symbol = global.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name)) {\n WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n ? Symbol[name]\n : createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar setArrayLength = require('../internals/array-set-length');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar fails = require('../internals/fails');\n\nvar INCORRECT_TO_LENGTH = fails(function () {\n return [].push.call({ length: 0x100000000 }, 1) !== 4294967297;\n});\n\n// V8 and Safari <= 15.4, FF < 23 throws InternalError\n// https://bugs.chromium.org/p/v8/issues/detail?id=12681\nvar properErrorOnNonWritableLength = function () {\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty([], 'length', { writable: false }).push();\n } catch (error) {\n return error instanceof TypeError;\n }\n};\n\nvar FORCED = INCORRECT_TO_LENGTH || !properErrorOnNonWritableLength();\n\n// `Array.prototype.push` method\n// https://tc39.es/ecma262/#sec-array.prototype.push\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n push: function push(item) {\n var O = toObject(this);\n var len = lengthOfArrayLike(O);\n var argCount = arguments.length;\n doesNotExceedSafeInteger(len + argCount);\n for (var i = 0; i < argCount; i++) {\n O[len] = arguments[i];\n len++;\n }\n setArrayLength(O, len);\n return len;\n }\n});\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","import Bugsnag, { Client } from '@bugsnag/js';\n\ndeclare global {\n\tinterface Window {\n\t\tbugsnagClient: Client\n\t}\n}\n\nconst metaValue = ( name: string ): string | null => {\n\tif ( !document || !document.head ) {\n\t\treturn null;\n\t}\n\n\tconst metaTag: HTMLMetaElement | null = document.head.querySelector( 'meta[name=\"' + name + '\"][content]' );\n\tif ( !metaTag || !metaTag.content ) {\n\t\treturn null;\n\t}\n\n\treturn metaTag.content;\n};\n\nexport const bugsnagClient = Bugsnag.createClient( {\n\tapiKey: metaValue( 'mrh:bugsnag' ) || '',\n\tappType: metaValue( 'mrh:theme' ) || 'unknown theme',\n\tautoTrackSessions: false,\n\tcollectUserIp: false,\n\tenabledReleaseStages: [\n\t\t'production',\n\t],\n\tgenerateAnonymousId: true,\n\treleaseStage: metaValue( 'mrh:stage' ) || 'production',\n\tonError: ( event ) => {\n\t\t// Update Context\n\t\tconst theme = metaValue( 'mrh:theme' );\n\t\tif ( theme ) {\n\t\t\tevent.context = event.context + ' - ' + theme;\n\t\t}\n\n\t\t// Update Meta Data\n\t\tconst id = metaValue( 'mrh:id' );\n\t\tif ( id && theme ) {\n\t\t\tevent.addMetadata( 'site', {\n\t\t\t\tid: id,\n\t\t\t\ttheme: theme,\n\t\t\t} );\n\t\t}\n\n\t\tconst target = metaValue( 'mrh:browser-target' );\n\t\tif ( target ) {\n\t\t\tevent.addMetadata( 'js-bundle', {\n\t\t\t\ttarget: metaValue( 'mrh:browser-target' ),\n\t\t\t} );\n\t\t}\n\t},\n} );\n\nwindow.bugsnagClient = bugsnagClient;\n","interface StateMachineElement extends HTMLElement {\n\tupdateState ( state: string ): void\n}\n\nfunction isStateMachineElement( x: HTMLElement ): x is StateMachineElement {\n\treturn ( x as StateMachineElement ).updateState !== undefined && ( 'function' === typeof( x as StateMachineElement ).updateState );\n}\n\nexport class MrInputSink extends HTMLElement {\n\tstatic get observedAttributes(): Array {\n\t\treturn [\n\t\t\t'directive',\n\t\t\t'disabled',\n\t\t\t'for',\n\t\t\t'keys',\n\t\t];\n\t}\n\n\t// Event Handlers\n\t#clickHandler = ( e: MouseEvent ): void => {\n\t\tif ( this.disabled ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( e && e.metaKey ) { // ignore clicks with modifier keys : shift, ctrl, alt,...\n\t\t\treturn;\n\t\t}\n\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\n\t\tthis.trigger();\n\t};\n\n\t#keydownHandler = ( e: KeyboardEvent ): void => {\n\t\tif ( this.disabled ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !e.key ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst keysMiss = -1 === ( this.keys.indexOf( e.key.toString() ) );\n\t\tif ( keysMiss ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst forEl = this.forEl;\n\t\tif ( !forEl ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( ( document.activeElement !== forEl ) && ( !forEl.contains( document.activeElement ) ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.trigger();\n\t};\n\n\tconstructor() {\n\t\t// If you define a constructor, always call super() first!\n\t\t// This is specific to CE and required by the spec.\n\t\tsuper();\n\t}\n\n\t// Life cycle\n\tconnectedCallback(): void {\n\t\tthis._addEventListeners();\n\t}\n\n\tdisconnectedCallback(): void {\n\t\tthis._removeEventListeners();\n\t}\n\n\t// Attributes\n\toverride setAttribute( attr: string, value: string ): void {\n\t\tif ( this.disabled ) {\n\t\t\treturn;\n\t\t}\n\n\t\tsuper.setAttribute( attr, value );\n\t}\n\n\toverride removeAttribute( attr: string ): void {\n\t\tif ( this.disabled && 'disabled' !== attr ) {\n\t\t\treturn;\n\t\t}\n\n\t\tsuper.removeAttribute( attr );\n\t}\n\n\tget directive(): string|null {\n\t\treturn this.getAttribute( 'directive' );\n\t}\n\n\tset directive( value: string|null ) {\n\t\tif ( value ) {\n\t\t\tthis.setAttribute( 'directive', value );\n\t\t} else {\n\t\t\tthis.removeAttribute( 'directive' );\n\t\t}\n\t}\n\n\tget disabled(): boolean {\n\t\treturn this.hasAttribute( 'disabled' );\n\t}\n\n\tset disabled( value: boolean ) {\n\t\tif ( value ) {\n\t\t\tthis.setAttribute( 'disabled', '' );\n\t\t} else {\n\t\t\tthis.removeAttribute( 'disabled' );\n\t\t}\n\t}\n\n\tget forEl(): StateMachineElement|null {\n\t\tconst forID = this.getAttribute( 'for' );\n\t\tif ( !forID ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst el = document.getElementById( forID );\n\t\tif ( !el ) {\n\t\t\treturn null;\n\t\t}\n\t\tif ( !isStateMachineElement( el ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn el;\n\t}\n\n\tset forEl( el: StateMachineElement|null ) {\n\t\tif ( !el ) {\n\t\t\tthis.removeAttribute( 'for' );\n\n\t\t\treturn;\n\t\t}\n\n\t\tif ( el.id ) {\n\t\t\tthis.setAttribute( 'for', el.id );\n\n\t\t\treturn;\n\t\t}\n\t}\n\n\tget keys(): Array {\n\t\tconst value = this.getAttribute( 'keys' );\n\t\tif ( !value ) {\n\t\t\treturn [];\n\t\t}\n\n\t\treturn value.split( ' ' );\n\t}\n\n\tset keys( value: Array ) {\n\t\tif ( value ) {\n\t\t\tthis.setAttribute( 'keys', value.join( ' ' ) );\n\t\t} else {\n\t\t\tthis.removeAttribute( 'keys' );\n\t\t}\n\t}\n\n\tattributeChangedCallback( attrName: string, oldVal: string, newVal: string ): void {\n\t\tif ( 'disabled' === attrName ) {\n\t\t\tthis._removeEventListeners();\n\t\t\tif ( null === newVal ) {\n\t\t\t\tthis._addEventListeners();\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\t}\n\n\t_addEventListeners(): void {\n\t\tthis.addEventListener( 'click', this.#clickHandler );\n\n\t\tdocument.addEventListener( 'keydown', this.#keydownHandler );\n\t}\n\n\t_removeEventListeners(): void {\n\t\tthis.removeEventListener( 'click', this.#clickHandler );\n\n\t\tdocument.removeEventListener( 'keydown', this.#keydownHandler );\n\t}\n\n\ttrigger(): void {\n\t\tif ( this.disabled ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst directive = this.directive;\n\t\tif ( !directive ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst forEl = this.forEl;\n\t\tif ( !forEl ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// forEl must be a state machine that implements \"updateState(directive)\"\n\t\tif ( !forEl.updateState ) {\n\t\t\treturn;\n\t\t}\n\n\t\tforEl.updateState( directive );\n\t}\n}\n","// Naive implementation of key/value object packing for cookies used by Google/Youtube/...\n// - url safe\n// - compact\n//\n// Note : doesn't do any input validation.\n// If your inputs are bad this will bite you and I am ok with that.\n\nexport function unpackRecords( str: string ): Array<{ key: string, value: string }> {\n\tconst records: Array<{key: string, value:string}> = [];\n\n\tstr.split( '.' ).forEach( ( record ) => {\n\t\tconst pair = record.split( '+' );\n\t\tif ( !pair || !pair.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\trecords.push( {\n\t\t\tkey: pair[0],\n\t\t\tvalue: pair[1] || '',\n\t\t} );\n\t} );\n\n\treturn records;\n}\n\nexport function packRecords( records: Array<{ key: string, value: string }> ): string {\n\tconst out: Array = [];\n\n\trecords.forEach( ( record ) => {\n\t\tout.push( record.key + '+' + record.value );\n\t} );\n\n\treturn out.join( '.' );\n}\n","import * as Cookie from '../../cookie/cookie';\n\nexport function isEnabledInGTM( key: string ): boolean {\n\tconst match = document.cookie.match( new RegExp( '(^| )mr_prv_gtm=([^;]+)' ) );\n\tlet records: Array<{ key: string, value: string }> = [];\n\tif ( match && match[2] ) {\n\t\trecords = Cookie.unpackRecords( match[2] );\n\t}\n\n\trecords = records.filter( ( record ) => {\n\t\treturn record.key === key && '1' === record.value;\n\t} );\n\n\treturn 0 < records.length;\n}\n\nexport function isDisabledInGTM( key: string ): boolean {\n\tconst match = document.cookie.match( new RegExp( '(^| )mr_prv_gtm=([^;]+)' ) );\n\tlet records: Array<{ key: string, value: string }> = [];\n\tif ( match && match[2] ) {\n\t\trecords = Cookie.unpackRecords( match[2] );\n\t}\n\n\trecords = records.filter( ( record ) => {\n\t\treturn record.key === key && '-1' === record.value;\n\t} );\n\n\treturn 0 < records.length;\n}\n\nexport function enableInGTM( key: string ): void {\n\tconst match = document.cookie.match( new RegExp( '(^| )mr_prv_gtm=([^;]+)' ) );\n\tlet records: Array<{ key: string, value: string }> = [];\n\tif ( match && match[2] ) {\n\t\trecords = Cookie.unpackRecords( match[2] );\n\t}\n\n\trecords = records.filter( ( record ) => {\n\t\treturn record.key !== key;\n\t} );\n\n\trecords.push( {\n\t\tkey: key,\n\t\tvalue: '1',\n\t} );\n\n\tconst expires = window.Mr_Prv_GTM_Helpers.cookieExpiration();\n\n\tif ( window.Mr_Prv_GTM_Helpers.cookieDomain() ) {\n\t\tdocument.cookie = `mr_prv_gtm=${Cookie.packRecords( records )}; domain=${window.Mr_Prv_GTM_Helpers.cookieDomain()}; path=/; secure; samesite=lax; expires=` + expires.toUTCString();\n\t} else {\n\t\tdocument.cookie = `mr_prv_gtm=${Cookie.packRecords( records )}; path=/; secure; samesite=lax; expires=` + expires.toUTCString();\n\t}\n}\n\nexport function disableInGTM( key: string ): void {\n\tconst match = document.cookie.match( new RegExp( '(^| )mr_prv_gtm=([^;]+)' ) );\n\tlet records: Array<{ key: string, value: string }> = [];\n\tif ( match && match[2] ) {\n\t\trecords = Cookie.unpackRecords( match[2] );\n\t}\n\n\trecords = records.filter( ( record ) => {\n\t\treturn record.key !== key;\n\t} );\n\n\trecords.push( {\n\t\tkey: key,\n\t\tvalue: '-1',\n\t} );\n\n\tconst expires = window.Mr_Prv_GTM_Helpers.cookieExpiration();\n\n\tif ( window.Mr_Prv_GTM_Helpers.cookieDomain() ) {\n\t\tdocument.cookie = `mr_prv_gtm=${Cookie.packRecords( records )}; domain=${window.Mr_Prv_GTM_Helpers.cookieDomain()}; path=/; secure; samesite=lax; expires=` + expires.toUTCString();\n\t} else {\n\t\tdocument.cookie = `mr_prv_gtm=${Cookie.packRecords( records )}; path=/; secure; samesite=lax; expires=` + expires.toUTCString();\n\t}\n}\n","import { PrivacyControls } from '@mrhenry/wp--mr-interactive';\n\nwindow.addEventListener( 'DOMContentLoaded', () => {\n\tif ( !( 'pirsch' in window ) || !window.pirsch ) {\n\t\treturn;\n\t}\n\n\t// Sample 1 in 10 page views.\n\tif ( Math.floor( Math.random() * 10 ) !== 0 ) {\n\t\treturn;\n\t}\n\n\tconst currentSettings = {\n\t\t'Facebook Pixel': PrivacyControls.isEnabledInGTM( 'fp' ) ? 'yes' : 'no', /* eslint-disable-line no-ternary */\n\t\t'Google Ads': PrivacyControls.isEnabledInGTM( 'gr' ) ? 'yes' : 'no', /* eslint-disable-line no-ternary */\n\t\t'Google Analytics': PrivacyControls.isDisabledInGTM( 'ga' ) ? 'no' : 'yes', /* eslint-disable-line no-ternary */\n\t\tPinterest: PrivacyControls.isEnabledInGTM( 'pi' ) ? 'yes' : 'no', /* eslint-disable-line no-ternary */\n\t};\n\n\tconst hasInteractedWithDialog = new RegExp( '(^| )komono_privacy_acceptance=([^;]+)' ).test( document.cookie );\n\tconst anyAccepted = Object.values( currentSettings ).some( ( value ) => {\n\t\treturn value === 'yes';\n\t} );\n\tconst allDeclined = !anyAccepted;\n\n\tlet allowsMetricsValue = 'unknown';\n\tif ( hasInteractedWithDialog && allDeclined ) {\n\t\tallowsMetricsValue = 'no';\n\t} else if ( hasInteractedWithDialog && anyAccepted ) {\n\t\tallowsMetricsValue = 'yes';\n\t}\n\n\t// !! Danger !! Do not send any PII data to Pirsch.\n\twindow.pirsch( 'Privacy Settings', {\n\t\tmeta: {\n\t\t\t'Allows metrics': allowsMetricsValue,\n\t\t\t...currentSettings,\n\t\t},\n\t} ).catch( ( e ) => {\n\t\tconsole.error( e );\n\t} );\n}, {\n\tonce: true,\n} );\n","const query = window.matchMedia( '(prefers-reduced-motion: no-preference)' );\n\nexport function prefersReducedMotion(): boolean {\n\treturn !query.matches;\n}\n","import { prefersReducedMotion } from '@mrhenry/wp--prefers-reduced-motion';\n\nfunction getMaxTiming( timing: EffectTiming ): number {\n\tlet max = 0;\n\n\tif ( ( timing.delay ?? 0 ) > max ) {\n\t\tmax = timing.delay ?? max;\n\t}\n\n\tif ( ( timing.endDelay ?? 0 ) > max ) {\n\t\tmax = timing.endDelay ?? max;\n\t}\n\n\tif ( 'auto' === timing.duration ) {\n\t\t// noop\n\t} else if ( 'number' === typeof timing.duration && timing.duration > max ) {\n\t\tmax = timing.duration;\n\t}\n\n\treturn max;\n}\n\nfunction scaleToMaxTiming( timing: EffectTiming, max: number ): EffectTiming {\n\tif ( timing.delay ) {\n\t\ttiming.delay = timing.delay / max;\n\t} else {\n\t\ttiming.delay = 0;\n\t}\n\n\tif ( timing.endDelay ) {\n\t\ttiming.endDelay = timing.endDelay / max;\n\t} else {\n\t\ttiming.endDelay = 0;\n\t}\n\n\tif ( 'auto' === timing.duration ) {\n\t\ttiming.duration = 1;\n\t} else if ( 'number' === typeof timing.duration ) {\n\t\ttiming.duration = timing.duration / max;\n\t}\n\n\tif ( timing.iterations === Infinity ) {\n\t\ttiming.iterations = 1.0;\n\t}\n\n\treturn timing;\n}\n\n// Keep the same timing scale, just make it all very small\nfunction reduceMotion( keyframeEffects: KeyframeEffect[] ): void {\n\tif ( !( 'KeyframeEffect' in window ) || ( 'undefined' === typeof KeyframeEffect ) ) {\n\t\treturn;\n\t}\n\n\tif ( !KeyframeEffect.prototype.getTiming ) {\n\t\treturn;\n\t}\n\n\tif ( !KeyframeEffect.prototype.updateTiming ) {\n\t\treturn;\n\t}\n\n\tlet maxTiming = 0;\n\tkeyframeEffects.forEach( ( keyframeEffect ) => {\n\t\tconst newMax = getMaxTiming( keyframeEffect.getTiming() );\n\t\tif ( newMax > maxTiming ) {\n\t\t\tmaxTiming = newMax;\n\t\t}\n\t} );\n\n\tkeyframeEffects.forEach( ( keyframeEffect ) => {\n\t\tkeyframeEffect.updateTiming(\n\t\t\tscaleToMaxTiming(\n\t\t\t\tkeyframeEffect.getTiming(),\n\t\t\t\tmaxTiming\n\t\t\t)\n\t\t);\n\t} );\n}\n\n/**\n * Plays all animations and resolves when all animations are done.\n * Is aware of \"@mrhenry/wp--prefers-reduced-motion\"\n * @param {KeyframeEffect[]} keyframeEffects Collection of KeyFrameEffects to play and wait for.\n */\nexport function playAllAnimations( keyframeEffects: KeyframeEffect[] ): Promise {\n\tif ( !( 'Animation' in self ) ) {\n\t\treturn Promise.resolve();\n\t}\n\n\tif ( !( 'play' in Animation.prototype ) ) {\n\t\treturn Promise.resolve();\n\t}\n\n\tconst promises: Promise[] = [];\n\n\tif ( prefersReducedMotion() ) {\n\t\t// Very short animation without any delays\n\t\treduceMotion( keyframeEffects );\n\t}\n\n\tkeyframeEffects.forEach( ( keyframeEffect ) => {\n\t\tpromises.push( new Promise( ( resolve ) => {\n\t\t\tconst animation = new Animation( keyframeEffect, document.timeline );\n\t\t\tanimation.onfinish = ( (): void => {\n\t\t\t\tresolve();\n\t\t\t} );\n\n\t\t\tanimation.play();\n\t\t} ) );\n\t} );\n\n\treturn Promise.all( promises );\n}\n","import { playAllAnimations } from '@mrhenry/wp--play-all-animations';\n\ndeclare global {\n\tinterface Element {\n\t\tinert: boolean\n\t}\n}\n\ntype FocusableElement = Element & Record<'focus', () => void> | null;\n\nexport class MrDialog extends HTMLElement {\n\tstatic get observedAttributes(): Array {\n\t\treturn [\n\t\t\t'disabled',\n\t\t\t'state',\n\t\t];\n\t}\n\n\t// https://www.w3.org/TR/wai-aria-practices-1.1/#keyboard-interaction-7\n\t// Escape: Closes the dialog.\n\t#escapeHandler = ( e: KeyboardEvent ): void => {\n\t\tif ( 'Escape' !== e.code ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( ( document.activeElement !== this ) && ( !this.contains( document.activeElement ) ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.updateState( 'close' );\n\t};\n\n\t#previousActiveElement:FocusableElement = null;\n\n\tconstructor() {\n\t\t// If you define a constructor, always call super() first!\n\t\t// This is specific to CE and required by the spec.\n\t\tsuper();\n\t}\n\n\tconnectedCallback(): void {\n\t\t// Default State\n\t\tif ( !this.state ) {\n\t\t\tthis.state = 'closed';\n\n\t\t\ttry {\n\t\t\t\tthis.inert = true;\n\t\t\t} catch ( err ) {\n\t\t\t\tconsole.warn( err );\n\t\t\t}\n\t\t}\n\t}\n\n\tdisconnectedCallback(): void {\n\t\t// https://www.w3.org/TR/wai-aria-practices-1.1/#keyboard-interaction-7\n\t\t// Escape: Closes the dialog.\n\t\tdocument.removeEventListener( 'keydown', this.#escapeHandler );\n\t}\n\n\t// Attributes\n\toverride setAttribute( attr: string, value: string ): void {\n\t\tif ( this.disabled ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( 'state' === attr ) {\n\t\t\tconst states = [\n\t\t\t\t'opening',\n\t\t\t\t'open',\n\t\t\t\t'closing',\n\t\t\t\t'closed',\n\t\t\t\t'broken',\n\t\t\t];\n\n\t\t\tif ( -1 === states.indexOf( value ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsuper.setAttribute( 'state', value );\n\n\t\t\treturn;\n\t\t}\n\n\t\tsuper.setAttribute( attr, value );\n\t}\n\n\toverride removeAttribute( attr: string ): void {\n\t\tif ( this.disabled && 'disabled' !== attr ) {\n\t\t\treturn;\n\t\t}\n\n\t\tsuper.removeAttribute( attr );\n\t}\n\n\tget disabled(): boolean {\n\t\treturn this.hasAttribute( 'disabled' );\n\t}\n\n\tset disabled( value: boolean ) {\n\t\tif ( value ) {\n\t\t\tthis.setAttribute( 'disabled', '' );\n\t\t} else {\n\t\t\tthis.removeAttribute( 'disabled' );\n\t\t}\n\t}\n\n\tget state() :string {\n\t\treturn this.getAttribute( 'state' ) || '';\n\t}\n\n\tset state( value: string ) {\n\t\tthis.setAttribute( 'state', value );\n\t}\n\n\t/**\n\t * Update the state of the dialog\n\t * @param {string} directive The directive for the state machine\n\t * @return\n\t */\n\tasync updateState( directive: string ): Promise {\n\t\tif ( this.disabled ) {\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\n\t\t\tswitch ( this.state ) {\n\t\t\t\tcase 'closed':\n\t\t\t\t\tswitch ( directive ) {\n\t\t\t\t\t\tcase 'open':\n\t\t\t\t\t\t\t// Store current focus\n\t\t\t\t\t\t\tif ( document.activeElement && 'focus' in document.activeElement ) {\n\t\t\t\t\t\t\t\tthis.#previousActiveElement = document.activeElement as FocusableElement;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tawait this.willOpen();\n\n\t\t\t\t\t\t\t// Update focusability\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tthis.inert = false;\n\t\t\t\t\t\t\t} catch ( err ) {\n\t\t\t\t\t\t\t\tconsole.warn( err );\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Update state\n\t\t\t\t\t\t\tthis.state = 'opening';\n\n\t\t\t\t\t\t\t// Set focus\n\t\t\t\t\t\t\twindow.requestAnimationFrame( () => {\n\t\t\t\t\t\t\t\t// https://www.w3.org/TR/wai-aria-practices-1.1/#keyboard-interaction-7\n\t\t\t\t\t\t\t\t// When a dialog opens, focus placement depends on the nature and size of the content.\n\t\t\t\t\t\t\t\t// In all circumstances, focus moves to an element contained in the dialog.\n\t\t\t\t\t\t\t\tthis.firstFocusableElement().focus();\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t\tawait playAllAnimations( this.openAnimations() );\n\n\t\t\t\t\t\t\tawait this.didOpen();\n\n\t\t\t\t\t\t\t// Update state\n\t\t\t\t\t\t\tthis.state = 'open';\n\n\t\t\t\t\t\t\t// https://www.w3.org/TR/wai-aria-practices-1.1/#keyboard-interaction-7\n\t\t\t\t\t\t\t// Escape: Closes the dialog.\n\t\t\t\t\t\t\tdocument.addEventListener( 'keydown', this.#escapeHandler );\n\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'open':\n\t\t\t\t\tswitch ( directive ) {\n\t\t\t\t\t\tcase 'close':\n\t\t\t\t\t\t\tawait this.willClose();\n\n\t\t\t\t\t\t\t// Update focusability\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tthis.inert = true;\n\t\t\t\t\t\t\t} catch ( err ) {\n\t\t\t\t\t\t\t\tconsole.warn( err );\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Update state\n\t\t\t\t\t\t\tthis.state = 'closing';\n\n\t\t\t\t\t\t\t// Reset current focus\n\t\t\t\t\t\t\twindow.requestAnimationFrame( () => {\n\t\t\t\t\t\t\t\tif ( this.#previousActiveElement ) {\n\t\t\t\t\t\t\t\t\tthis.#previousActiveElement.focus();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t\tawait playAllAnimations( this.closeAnimations() );\n\n\t\t\t\t\t\t\tawait this.didClose();\n\n\t\t\t\t\t\t\t// Update state\n\t\t\t\t\t\t\tthis.state = 'closed';\n\n\t\t\t\t\t\t\t// https://www.w3.org/TR/wai-aria-practices-1.1/#keyboard-interaction-7\n\t\t\t\t\t\t\t// Escape: Closes the dialog.\n\t\t\t\t\t\t\twindow.removeEventListener( 'keydown', this.#escapeHandler );\n\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t}\n\n\t\t} catch ( err ) {\n\t\t\tthis.state = 'broken';\n\t\t\tthis.disabled = true;\n\n\t\t\tconsole.warn( err );\n\n\t\t\tif ( 'bugsnagClient' in window ) {\n\t\t\t\twindow.bugsnagClient.notify( err );\n\t\t\t}\n\n\t\t\tthis.gracefullShutdown();\n\t\t}\n\t}\n\n\t/**\n\t * Called when an unexpected error occurs.\n\t * Make sure to do all needed cleanup.\n\t */\n\tgracefullShutdown(): void {\n\t\ttry {\n\t\t\tthis.inert = true;\n\t\t} catch ( err ) {\n\t\t\tthis.hidden = true;\n\t\t\tconsole.warn( err );\n\t\t}\n\t}\n\n\t/**\n\t * Called before transitioning to the \"open\" state\n\t * Optionally implement this in your sub class\n\t */\n\tasync willOpen(): Promise {\n\t\tawait Promise.resolve();\n\t}\n\n\t/**\n\t * Called after transitioning to the \"open\" state\n\t * Optionally implement this in your sub class\n\t */\n\tasync didOpen(): Promise {\n\t\tawait Promise.resolve();\n\t}\n\n\t/**\n\t * Called before transitioning to the \"closed\" State\n\t * Optionally implement this in your sub class\n\t */\n\tasync willClose(): Promise {\n\t\tawait Promise.resolve();\n\t}\n\n\t/**\n\t * Called after transitioning to the \"closed\" state\n\t * Optionally implement this in your sub class\n\t */\n\tasync didClose(): Promise {\n\t\tawait Promise.resolve();\n\t}\n\n\t/**\n\t * The animations to play and wait for when opening the dialog\n\t * Optionally implement this in your sub class\n\t * @return {Array} The KeyframeEffects to play\n\t */\n\topenAnimations(): Array {\n\t\treturn [];\n\t}\n\n\t/**\n\t * The animations to play and wait for when closing the dialog\n\t * Implement this in your sub class\n\t * @return {Array} The KeyframeEffects to play\n\t */\n\tcloseAnimations(): Array {\n\t\treturn [];\n\t}\n\n\t// https://www.w3.org/TR/wai-aria-practices-1.1/#keyboard-interaction-7\n\t// When a dialog opens, focus placement depends on the nature and size of the content.\n\t// - In all circumstances, focus moves to an element contained in the dialog.\n\t// - Unless a condition where doing otherwise is advisable,\n\t// focus is initially set on the first focusable element.\n\t// - If content is large enough that focusing the first interactive element could cause the beginning of content to scroll out of view,\n\t// it is advisable to add tabindex=-1 to a static element at the top of the dialog,\n\t// such as the dialog title or first paragraph, and initially focus that element.\n\t// - If a dialog contains the final step in a process that is not easily reversible,\n\t// such as deleting data or completing a financial transaction,\n\t// it may be advisable to set focus on the least destructive action,\n\t// especially if undoing the action is difficult or impossible.\n\t// The Alert Dialog Pattern is often employed in such circumstances.\n\t// - If a dialog is limited to interactions that either provide additional information or continue processing,\n\t// it may be advisable to set focus to the element that is likely to be most frequently used,\n\t// such as an OK or Continue button.\n\tfirstFocusableElement(): HTMLElement {\n\t\tif ( !this.parentNode ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tconst autoFocusChild = this.querySelector( '[modal-autofocus]' );\n\t\tif ( autoFocusChild && autoFocusChild instanceof HTMLElement ) {\n\t\t\treturn autoFocusChild;\n\t\t}\n\n\t\tconst firstFocusableChild = this.querySelector( 'button, [href], input, radio, select, textarea, [tabindex]' );\n\t\tif ( firstFocusableChild && firstFocusableChild instanceof HTMLElement ) {\n\t\t\treturn firstFocusableChild;\n\t\t}\n\n\t\treturn this;\n\t}\n}\n","import { MrDialog, PrivacyControls, Cookie } from '@mrhenry/wp--mr-interactive';\n\n// Increase this number when you want the popup to reappear for all users.\nconst PRIVACY_ACCEPTANCE_GENERATION = 3;\n\nclass MrPrivacyDialog extends MrDialog {\n\n\t#controlValueChangeHandler = ( e: Event ) => {\n\t\tif ( e.target && ( e.target instanceof HTMLInputElement ) ) {\n\t\t\tconst input = e.target;\n\t\t\tif ( input.hasAttribute( 'mr-prv-gtm-control' ) ) {\n\t\t\t\tthis.updateState( 'close' );\n\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t};\n\n\toverride connectedCallback() {\n\t\tsuper.connectedCallback();\n\n\t\trequestAnimationFrame( () => {\n\t\t\tif ( !this.hasSeen() ) {\n\t\t\t\tsetTimeout( () => {\n\t\t\t\t\tthis.updateState( 'open' );\n\t\t\t\t}, 500 );\n\n\t\t\t\treturn;\n\t\t\t}\n\t\t} );\n\n\t\twindow.addEventListener( 'change', this.#controlValueChangeHandler );\n\t}\n\n\toverride disconnectedCallback() {\n\t\tsuper.disconnectedCallback();\n\n\t\twindow.removeEventListener( 'change', this.#controlValueChangeHandler );\n\t}\n\n\toverride async updateState( directive: string ): Promise {\n\t\tif ( 'close-and-accept' === directive ) {\n\t\t\tthis.setAsSeen();\n\t\t\tthis.accept();\n\n\t\t\tsuper.updateState( 'close' );\n\n\t\t\twindow.dataLayer.push( {\n\t\t\t\tevent: 'privacyConsent',\n\t\t\t\tga: {\n\t\t\t\t\tevent: {\n\t\t\t\t\t\tcategory: 'Privacy Consent',\n\t\t\t\t\t\taction: 'Accept',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t} );\n\n\t\t\treturn;\n\t\t}\n\n\t\tif ( 'close-and-reject' === directive ) {\n\t\t\tthis.setAsSeen();\n\n\t\t\t// It is theoretically possible that someone doesn't have the cookie anymore that tracks if the popup should be shown or not.\n\t\t\t// But still has cookies set to allow tracking.\n\t\t\t// We need to decline opt-ins explicitly to cover this case.\n\t\t\t// Else a user would click \"Decline\" but still be tracked because of old settings.\n\t\t\tthis.declineOptIns();\n\n\t\t\tsuper.updateState( 'close' );\n\n\t\t\treturn;\n\t\t}\n\n\t\tsuper.updateState( directive );\n\t}\n\n\thasSeen(): boolean {\n\t\tconst match = document.cookie.match( new RegExp( '(^| )komono_privacy_acceptance=([^;]+)' ) );\n\t\tlet records: Array<{ key: string, value: string }> = [];\n\t\tif ( match && match[2] ) {\n\t\t\trecords = Cookie.unpackRecords( match[2] );\n\t\t}\n\n\t\tconst accepted = ( 0 < records.filter( ( record ) => {\n\t\t\tif ( 'se' !== record.key ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst value = parseInt( record.value, 10 );\n\t\t\tif ( Number.isNaN( value ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn PRIVACY_ACCEPTANCE_GENERATION <= value;\n\t\t} ).length );\n\n\t\treturn accepted;\n\t}\n\n\tsetAsSeen(): void {\n\t\tconst match = document.cookie.match( new RegExp( '(^| )komono_privacy_acceptance=([^;]+)' ) );\n\t\tlet records: Array<{ key: string, value: string }> = [];\n\t\tif ( match && match[2] ) {\n\t\t\trecords = Cookie.unpackRecords( match[2] );\n\t\t}\n\n\t\t// Because of cache multiple pages can have different versions of this code.\n\t\t// We should never lower this number.\n\t\t// Better to preserver the highest value.\n\n\t\tlet currentGeneration = PRIVACY_ACCEPTANCE_GENERATION;\n\t\trecords.forEach( ( record ) => {\n\t\t\tif ( 'se' !== record.key ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst value = parseInt( record.value, 10 );\n\t\t\tif ( Number.isNaN( value ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( value > currentGeneration ) {\n\t\t\t\tcurrentGeneration = value;\n\t\t\t}\n\t\t} );\n\n\t\trecords = records.filter( ( record ) => {\n\t\t\treturn 'se' !== record.key;\n\t\t} );\n\n\t\trecords.push( {\n\t\t\tkey: 'se',\n\t\t\tvalue: `${currentGeneration}`,\n\t\t} );\n\n\t\tconst cookieExpiration = new Date();\n\t\tcookieExpiration.setTime( cookieExpiration.getTime() + 90 * 24 * 60 * 60 * 1000 );\n\n\t\tif ( window.Mr_Prv_GTM_Helpers.cookieDomain() ) {\n\t\t\tdocument.cookie = `komono_privacy_acceptance=${Cookie.packRecords( records )}; domain=${window.Mr_Prv_GTM_Helpers.cookieDomain()}; path=/; secure; samesite=lax; expires=` + cookieExpiration.toUTCString();\n\t\t} else {\n\t\t\tdocument.cookie = `komono_privacy_acceptance=${Cookie.packRecords( records )}; path=/; secure; samesite=lax; expires=` + cookieExpiration.toUTCString();\n\t\t}\n\t}\n\n\taccept(): void {\n\t\t// This is hard coded here for now.\n\t\t// Might be better if we can pull this from ACF\n\n\t\t// These are \"Opt In\"\n\t\tPrivacyControls.enableInGTM( 'fp' ); // Facebook pixel\n\t\tPrivacyControls.enableInGTM( 'pi' ); // Pinterest\n\t\tPrivacyControls.enableInGTM( 'tt' ); // TikTok\n\t\tPrivacyControls.enableInGTM( 'gr' ); // Google Remarketing\n\n\t\t// These are \"Opt Out\"\n\t\tPrivacyControls.enableInGTM( 'ga' ); // Google Analytics\n\n\t\t// Removed :\n\t\tPrivacyControls.disableInGTM( 'dc' ); // Daisycon\n\n\t\tif ( document.querySelector( '[mr-prv-gtm-control]' ) ) {\n\t\t\tlocation.reload();\n\t\t}\n\t}\n\n\tdeclineOptIns(): void {\n\t\t// This is hard coded here for now.\n\t\t// Might be better if we can pull this from ACF\n\n\t\t// These are \"Opt In\"\n\t\tPrivacyControls.disableInGTM( 'fp' ); // Facebook pixel\n\t\tPrivacyControls.disableInGTM( 'pi' ); // Pinterest\n\t\tPrivacyControls.disableInGTM( 'tt' ); // TikTok\n\t\tPrivacyControls.disableInGTM( 'gr' ); // Google Remarketing\n\n\t\t// Removed :\n\t\tPrivacyControls.disableInGTM( 'dc' ); // Daisycon\n\n\t\tif ( document.querySelector( '[mr-prv-gtm-control]' ) ) {\n\t\t\tlocation.reload();\n\t\t}\n\t}\n\n\n\toverride firstFocusableElement(): HTMLElement {\n\t\t// override super.\n\t\t// keep focus on this currently active element.\n\t\tif ( document.activeElement && ( document.activeElement instanceof HTMLElement ) ) {\n\t\t\treturn document.activeElement;\n\t\t}\n\n\t\treturn super.firstFocusableElement();\n\t}\n}\n\ncustomElements.define( 'mr-privacy-dialog', MrPrivacyDialog );\n","/** Simple accordion pattern\n * @see https://www.w3.org/TR/wai-aria-practices-1.1/examples/accordion/accordion.html\n */\n\nexport class MrAccordion extends HTMLElement {\n\t// Handle click events\n\t#clickHandler = ( event: MouseEvent ): void => {\n\t\tconst target = event.target;\n\n\t\tif ( !target || !( target instanceof Element ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !target.hasAttribute( 'accordion-trigger' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst handled = this.handleToggleEvent( target, false );\n\t\tif ( handled ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\n\t};\n\n\t#beforeMatchHandler = ( event: Event ): void => {\n\t\tif ( !event.target ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !( event.target instanceof Element ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst trigger = this.findTriggerFromPanelContents( event.target );\n\t\tif ( trigger ) {\n\t\t\tthis.handleToggleEvent( trigger, true );\n\t\t}\n\t};\n\n\tconstructor() {\n\t\t/** If you define a constructor, always call super() first!\n\t\t * This is specific to CE and required by the spec.\n\t\t */\n\t\tsuper();\n\t}\n\n\t// Life cycle\n\tconnectedCallback() :void {\n\t\tthis._addEventListeners();\n\t}\n\n\tdisconnectedCallback(): void {\n\t\tthis._removeEventListeners();\n\t}\n\n\t_addEventListeners(): void {\n\t\tthis.addEventListener( 'click', this.#clickHandler );\n\t\tthis.addEventListener( 'beforematch', this.#beforeMatchHandler );\n\t\taddKeypressEventListener( this.tagName );\n\t}\n\n\t_removeEventListeners(): void {\n\t\tthis.removeEventListener( 'click', this.#clickHandler );\n\t\tthis.removeEventListener( 'beforematch', this.#beforeMatchHandler );\n\t}\n\n\thandleToggleEvent( trigger: Element, onlyOpen: boolean ): boolean {\n\t\tif ( !trigger.hasAttribute( 'accordion-trigger' ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Only use events from current mr-accordion\n\t\tif (\n\t\t\t!trigger.getAttribute( 'accordion' ) ||\n\t\t\t( trigger.getAttribute( 'accordion' ) !== this.id )\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst isExpanded = 'true' === trigger.getAttribute( 'aria-expanded' );\n\n\t\tif ( !isExpanded ) { // Open panel\n\t\t\t// Set the expanded state on the triggering element\n\t\t\ttrigger.setAttribute( 'aria-expanded', 'true' );\n\n\t\t\t// Hide the accordion sections, using the 'for'-attribute to specify the desired section\n\t\t\tconst panel = this.querySelector( '#' + trigger.getAttribute( 'for' ) );\n\n\t\t\tif ( !panel ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tpanel.inert = false;\n\t\t\tpanel.removeAttribute( 'hidden' );\n\n\t\t} else if ( isExpanded && !onlyOpen ) { // Close panel\n\t\t\t// Set the expanded state on the triggering element\n\t\t\ttrigger.setAttribute( 'aria-expanded', 'false' );\n\n\t\t\t// Hide the accordion sections, using the 'for'-attribute to specify the desired section\n\t\t\tconst panel = this.querySelector( '#' + trigger.getAttribute( 'for' ) );\n\n\t\t\tif ( !panel ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tpanel.inert = true;\n\t\t\tpanel.setAttribute( 'hidden', 'until-found' );\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tprivate findTriggerFromPanelContents( el: Element ): Element|null {\n\t\tconst ids: Array = [];\n\n\t\tif ( el.id ) {\n\t\t\tids.push( el.id );\n\t\t}\n\n\t\tlet walker = el;\n\t\twhile ( walker.parentNode ) {\n\t\t\tif ( walker === this ) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif ( walker.id ) {\n\t\t\t\tids.push( walker.id );\n\t\t\t}\n\n\t\t\tif ( !walker.parentNode || !( walker.parentNode instanceof Element ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\twalker = walker.parentNode;\n\t\t}\n\n\t\tif ( 0 === ids.length ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Build a query to match triggers. We do not know which ID corresponds to a trigger so we try a lot. We will however only find one thing.\n\t\tconst query = ids.map( ( id ) => {\n\t\t\treturn `[accordion-trigger][for=\"${id}\"]`;\n\t\t} ).join( ', ' );\n\n\t\treturn this.querySelector( query );\n\t}\n}\n\n\nconst _didAddKeypressEventListener: Map = new Map();\n\nfunction addKeypressEventListener( tagName: string ): void {\n\tif ( _didAddKeypressEventListener.has( tagName ) ) {\n\t\treturn;\n\t}\n\n\t_didAddKeypressEventListener.set( tagName, true );\n\n\tconst getTriggers = (): Array|null => {\n\t\tif ( !document.activeElement ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst activeAccordion = document.activeElement.closest( tagName );\n\t\tif ( !activeAccordion ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst activeAccordionSelector = '[accordion-trigger][accordion=\"' + activeAccordion.id + '\"]';\n\t\tconst triggers = activeAccordion.querySelectorAll( activeAccordionSelector );\n\n\t\tif ( !triggers || !triggers.length ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst out: Array = [];\n\t\ttriggers.forEach( ( el ) => {\n\t\t\tif ( el instanceof HTMLElement ) {\n\t\t\t\tout.push( el );\n\t\t\t}\n\t\t} );\n\n\t\treturn out;\n\t};\n\n\t// Handle keydown events\n\tconst keydownHandler = ( event: KeyboardEvent ): void => {\n\t\tconst target = event.target;\n\t\tif ( !target || !( target instanceof HTMLElement ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !target.hasAttribute( 'accordion-trigger' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst key = event.which.toString();\n\t\tif ( !key ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// 33 = Page Up, 34 = Page Down\n\t\tconst ctrlModifier = ( event.ctrlKey && key.match( /33|34/ ) );\n\n\t\t// Up/ Down arrow and Control + Page Up/ Page Down keyboard operations\n\t\t// 38 = Up, 40 = Down\n\t\tif ( key.match( /38|40/ ) || ctrlModifier ) {\n\t\t\tconst triggers = getTriggers();\n\t\t\tif ( !triggers ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet direction = -1;\n\t\t\tif ( key.match( /34|40/ ) ) {\n\t\t\t\tdirection = 1;\n\t\t\t}\n\n\t\t\tconst index = triggers.indexOf( target );\n\t\t\tconst length = triggers.length;\n\t\t\tconst newIndex = ( index + length + direction ) % length;\n\n\t\t\ttriggers[newIndex].focus();\n\n\t\t\tevent.preventDefault();\n\n\t\t\t// 35 = End, 36 = Home keyboard operations\n\t\t} else if ( key.match( /35|36/ ) ) {\n\t\t\tconst triggers = getTriggers();\n\t\t\tif ( !triggers ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tswitch ( key ) {\n\n\t\t\t\t// Go to first accordion\n\t\t\t\tcase '36':\n\t\t\t\t\ttriggers[0].focus();\n\t\t\t\t\tbreak;\n\n\t\t\t\t// Go to last accordion\n\t\t\t\tcase '35':\n\t\t\t\t\ttriggers[triggers.length - 1].focus();\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tevent.preventDefault();\n\t\t}\n\t};\n\n\tdocument.addEventListener( 'keydown', keydownHandler );\n}\n","import { MrAccordion } from '@mrhenry/wp--mr-interactive';\n\nclass KomonoAccordion extends MrAccordion {}\n\ncustomElements.define( 'mr-accordion', KomonoAccordion );\n","import { MrDialog } from '../mr-dialog/mr-dialog';\n\ndeclare global {\n\tinterface Element {\n\t\tinert: boolean\n\t}\n}\n\nexport class MrModalDialog extends MrDialog {\n\t/**\n\t * Called when an unexpected error occurs.\n\t * Make sure to do all needed cleanup.\n\t */\n\toverride gracefullShutdown(): void {\n\t\tsuper.gracefullShutdown();\n\n\t\tArray.from( document.body.children ).forEach( ( child ) => {\n\t\t\tif ( child === this ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tchild.inert = false;\n\t\t\t} catch ( err ) {\n\t\t\t\tconsole.warn( err );\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Called before transitioning to the \"open\" state\n\t * Updates focusability\n\t */\n\toverride async willOpen(): Promise {\n\t\tawait super.willOpen();\n\n\t\t// Update focusability\n\t\t// https://www.w3.org/TR/wai-aria-practices-1.1/#dialog_modal\n\t\t// Windows under a modal dialog are inert.\n\t\t// That is, users cannot interact with content outside an active dialog window.\n\t\t// Inert content outside an active dialog is typically visually obscured or dimmed\n\t\t// so it is difficult to discern, and in some implementations,\n\t\t// attempts to interact with the inert content cause the dialog to close.\n\t\tArray.from( document.body.children ).forEach( ( child ) => {\n\t\t\tif ( child === this ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tchild.inert = true;\n\t\t\t} catch ( err ) {\n\t\t\t\tconsole.warn( err );\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Called before transitioning to the \"closed\" State\n\t * Updates focusability\n\t */\n\toverride async willClose(): Promise {\n\t\tawait super.willClose();\n\n\t\t// Update focusability\n\t\t// https://www.w3.org/TR/wai-aria-practices-1.1/#dialog_modal\n\t\t// Windows under a modal dialog are inert.\n\t\t// That is, users cannot interact with content outside an active dialog window.\n\t\t// Inert content outside an active dialog is typically visually obscured or dimmed\n\t\t// so it is difficult to discern, and in some implementations,\n\t\t// attempts to interact with the inert content cause the dialog to close.\n\t\tArray.from( document.body.children ).forEach( ( child ) => {\n\t\t\tif ( child === this ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tchild.inert = false;\n\t\t\t} catch ( err ) {\n\t\t\t\tconsole.warn( err );\n\t\t\t}\n\t\t} );\n\t}\n}\n","import { MrModalDialog } from '@mrhenry/wp--mr-interactive';\n\nclass MrNavigationOverlay extends MrModalDialog {\n\n\tmediaQuery = window.matchMedia( '(min-width: 1024px)' );\n\n\tresizeHandler = () => {\n\t\tthis.updateState( 'close' );\n\n\t\tthis.mediaQuery.removeListener( this.resizeHandler );\n\t};\n\n\toverride async willOpen() {\n\t\tawait super.willOpen();\n\n\t\tdocument.body.style.overflow = 'hidden';\n\n\t\tconst noticeBar = document.getElementById( 'notice-bar' );\n\t\tif ( noticeBar ) {\n\t\t\tnoticeBar.style.position = 'fixed';\n\t\t}\n\n\t\tconst menu = document.querySelector( '.site-header__main' ) as HTMLElement | null;\n\t\tif ( menu ) {\n\t\t\tmenu.style.display = 'none';\n\t\t}\n\n\t\tconst innerMenu = document.querySelector( '.site-header__mobile-navigation' ) as HTMLElement | null;\n\t\tif ( innerMenu ) {\n\t\t\tinnerMenu.style.display = 'none';\n\t\t}\n\n\t\tthis.mediaQuery.removeListener( this.resizeHandler );\n\t\tthis.mediaQuery.addListener( this.resizeHandler );\n\t}\n\n\toverride async willClose() {\n\t\tawait super.willClose();\n\n\t\tthis.mediaQuery.removeListener( this.resizeHandler );\n\n\t\tdocument.body.style.overflow = 'visible';\n\n\t\tconst noticeBar = document.getElementById( 'notice-bar' );\n\t\tif ( noticeBar ) {\n\t\t\tnoticeBar.style.position = '';\n\t\t}\n\n\t\tconst menu = document.querySelector( '.site-header__main' ) as HTMLElement | null;\n\t\tif ( menu ) {\n\t\t\tmenu.style.display = 'block';\n\t\t}\n\n\t\tconst innerMenu = document.querySelector( '.site-header__mobile-navigation' ) as HTMLElement | null;\n\t\tif ( innerMenu ) {\n\t\t\tinnerMenu.style.display = '';\n\t\t}\n\t}\n}\n\ncustomElements.define( 'mr-navigation-overlay', MrNavigationOverlay );\n","import { MrInputSink } from '@mrhenry/wp--mr-interactive';\n\nclass MrNavigationOverlayTrigger extends MrInputSink {\n\toverride connectedCallback(): void {\n\t\tsuper.connectedCallback();\n\n\t\trequestAnimationFrame( () => {\n\t\t\tconst onclickEl = this.querySelector( '[onclick]' );\n\n\t\t\tif ( !onclickEl ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tonclickEl.removeAttribute( 'onclick' );\n\t\t} );\n\t}\n}\n\ncustomElements.define( 'mr-navigation-overlay-trigger', MrNavigationOverlayTrigger );\n","/* Types */\nimport '../types/mr-globals.ts';\n\n/* Mr Interactive */\nimport { MrInputSink, PrivacyControls } from '@mrhenry/wp--mr-interactive';\n\ncustomElements.define( 'mr-input-sink', MrInputSink );\n\nPrivacyControls.setupPrivacyAwareGTM();\n\nwindow.Mr_Prv_GTM_Helpers.cookieDomain = () => {\n\tif ( -1 < location.hostname.indexOf( 'komono.com' ) ) {\n\t\treturn 'komono.com';\n\t}\n\n\treturn null;\n};\n\n/* Modules */\nimport '../modules/dots';\nimport '../modules/showcase-item-cta-full-click';\n\n/* Tracking */\nimport '../modules/tracking/acceptance-metrics';\nimport '../modules/tracking/privacy-dialog';\n\n/* New Stuff */\nimport '../modules/mr-accordion';\nimport '../modules/mr-fly-out-menu';\nimport '../modules/mr-fly-out-menu-trigger';\nimport '../modules/mr-navigation-overlay';\nimport '../modules/mr-navigation-overlay-trigger';\n","import { doNotTrack } from '../do-not-track/do-not-track';\nimport { isEnabledInGTM, isDisabledInGTM, enableInGTM, disableInGTM } from './gtm';\n\ndeclare global {\n\tinterface Window {\n\t\tMr_Prv_GTM_Helpers: {\n\t\t\tisEnabled( key: string ): boolean\n\t\t\tisDisabled( key: string ): boolean\n\t\t\tenable( key: string ): void\n\t\t\tdisable( key: string ): void\n\t\t\tcookieExpiration(): Date\n\t\t\tcookieDomain(): string|null\n\t\t};\n\t}\n}\n\nexport function setupPrivacyAwareGTM(): void {\n\twindow.Mr_Prv_GTM_Helpers = {\n\t\tisEnabled: isEnabledInGTM,\n\t\tisDisabled: isDisabledInGTM,\n\t\tenable: enableInGTM,\n\t\tdisable: disableInGTM,\n\t\tcookieExpiration: (): Date => {\n\t\t\tconst d = new Date();\n\t\t\td.setTime( d.getTime() + 90 * 24 * 60 * 60 * 1000 );\n\n\t\t\treturn d;\n\t\t},\n\t\tcookieDomain: (): string|null => {\n\t\t\treturn null;\n\t\t},\n\t};\n\n\t// Make sure all content is unblocked eventually\n\tdocument.addEventListener( 'readystatechange', () => {\n\t\tdocument.querySelectorAll( '[mr-prv-gtm-control]' ).forEach( ( el ) => {\n\t\t\tif ( !el || !( el instanceof HTMLInputElement ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( doNotTrack() ) {\n\t\t\t\tel.setAttribute( 'do-not-track', '1' );\n\t\t\t}\n\n\t\t\t// Explicitly enabled\n\t\t\tconst enabled = isEnabledInGTM( el.name );\n\t\t\tif ( enabled ) {\n\t\t\t\tif ( 'true' === el.value ) {\n\t\t\t\t\tel.checked = true;\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( 'false' === el.value ) {\n\t\t\t\t\tel.checked = false;\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Explicitly disabled\n\t\t\tconst disabled = isDisabledInGTM( el.name );\n\t\t\tif ( disabled ) {\n\t\t\t\tif ( 'true' === el.value ) {\n\t\t\t\t\tel.checked = false;\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( 'false' === el.value ) {\n\t\t\t\t\tel.checked = true;\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Implicitly enabled\n\t\t\tif ( 'enabled' === el.getAttribute( 'mr-prv-gtm-control-default' ) ) {\n\t\t\t\tif ( 'true' === el.value ) {\n\t\t\t\t\tel.checked = true;\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( 'false' === el.value ) {\n\t\t\t\t\tel.checked = false;\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Implicitly disabled\n\t\t\tif ( 'true' === el.value ) {\n\t\t\t\tel.checked = false;\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( 'false' === el.value ) {\n\t\t\t\tel.checked = true;\n\n\t\t\t\treturn;\n\t\t\t}\n\t\t} );\n\t} );\n\n\twindow.addEventListener( 'change', ( e ) => {\n\t\tif ( !e.target || !( e.target instanceof HTMLInputElement ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst input = e.target;\n\t\tif ( !input.hasAttribute( 'mr-prv-gtm-control' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( 'true' === input.value ) {\n\t\t\tenableInGTM( input.name );\n\n\t\t\treturn;\n\t\t}\n\n\t\tdisableInGTM( input.name );\n\t} );\n}\n","\ninterface MSDoNotTracker extends Navigator {\n\tmsDoNotTrack: string|undefined\n}\n\ninterface MSTrackingProtectionEnabler extends External {\n\tmsTrackingProtectionEnabled: () => boolean\n}\n\ninterface DoNotTrackerWindow extends Window {\n\tdoNotTrack: string\n}\n\n/**\n * Ponyfill for navigator.doNotTrack\n */\nexport function doNotTrack(): string|null {\n\ttry {\n\t\tif ( 'doNotTrack' in window ) {\n\t\t\tif ( '1' === ( ( window as unknown ) as DoNotTrackerWindow ).doNotTrack ) {\n\t\t\t\treturn '1';\n\t\t\t}\n\t\t}\n\n\t\tif ( 'navigator' in window ) {\n\t\t\tif ( '1' === navigator.doNotTrack ) {\n\t\t\t\treturn '1';\n\t\t\t}\n\n\t\t\tif ( 'yes' === navigator.doNotTrack ) {\n\t\t\t\treturn '1';\n\t\t\t}\n\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( 'msDoNotTrack' in navigator && '1' == ( navigator as MSDoNotTracker ).msDoNotTrack ) {\n\t\t\t\treturn '1';\n\t\t\t}\n\t\t}\n\n\t\tif ( 'external' in window && 'msTrackingProtectionEnabled' in window.external ) {\n\t\t\tconst trackingProtector = ( window.external as MSTrackingProtectionEnabler );\n\t\t\tif (\n\t\t\t\t( 'function' === typeof trackingProtector.msTrackingProtectionEnabled ) &&\n\t\t\t\ttrackingProtector.msTrackingProtectionEnabled()\n\t\t\t) {\n\t\t\t\treturn '1';\n\t\t\t}\n\t\t}\n\t} catch ( err ) {\n\t\tconsole.warn( err );\n\n\t\treturn null;\n\t}\n\n\treturn null;\n}\n","export const setText = ( node: Element | null, text: string ): void => {\n\tif ( !node ) {\n\t\treturn;\n\t}\n\n\tconst c = node.firstChild;\n\tif ( c && !c.nextSibling && 3 === c.nodeType ) {\n\t\t( c as Text ).data = text;\n\t} else {\n\t\tnode.textContent = text;\n\t}\n};\n","let lastPosition: GeolocationPosition | null = null;\nlet positionRequestErrored = false;\nlet positionRequest: Promise | null = null;\n\nasync function _requestCurrentPosition(): Promise {\n\tif ( positionRequestErrored ) {\n\t\treturn null;\n\t}\n\n\tif ( lastPosition ) {\n\t\treturn lastPosition;\n\t}\n\n\tif ( navigator.geolocation ) {\n\t\t// 1. first request geo data.\n\t\t// 1.a. if permissions have been granted the promise will resolve with data\n\t\t// 1.b. otherwise permissions are asked\n\t\t// 1.b.I permissions might be granted in time (data)\n\t\t// 1.b.II request can be ignored\n\t\t// 1.b.III request can be denied\n\t\t// 1.b.IV code can hang here (Browser Application doesn't have permissions)\n\t\t//\n\t\t// 2. a \"soft timeout\" handler will wait for 4 seconds\n\t\t// 2.a. if it fires it will re-request geo data (see 1.b.)\n\t\t//\n\t\t// 3. a \"hard timeout\" handler will wait for 5 seconds\n\t\t// 3.a. if it fires it will resolve with \"null\"\n\n\t\tconst newGeoP: () => Promise = () => {\n\t\t\treturn new Promise( ( resolve ) => {\n\t\t\t\tnavigator.geolocation.getCurrentPosition( ( position ) => {\n\t\t\t\t\tlastPosition = position;\n\t\t\t\t\tresolve( position );\n\t\t\t\t}, () => {\n\t\t\t\t\t// This is a non criticial func, we skip errors here.\n\t\t\t\t\tpositionRequestErrored = true;\n\t\t\t\t\tlastPosition = null;\n\t\t\t\t\tresolve( null );\n\t\t\t\t}, {\n\t\t\t\t\ttimeout: 30 * 1000, // I don't trust support for this option yet, but good to set a timeout where ever possible.\n\t\t\t\t} );\n\t\t\t} );\n\t\t};\n\n\t\t// Soft timeout will retry the request.\n\t\t// This is because \"getCurrentPosition\" can hang without permissions.\n\t\tconst softTimeout: Promise = new Promise( ( resolve ) => {\n\t\t\tsetTimeout( () => {\n\t\t\t\tnewGeoP().then( ( v ) => {\n\t\t\t\t\tresolve( v );\n\t\t\t\t} );\n\t\t\t}, 1000 * 4 );\n\t\t} );\n\n\t\t// Hard timeout just resolves \"null\".\n\t\t// Further up the stack we have a fallback that will be used when \"null\" is received\n\t\tconst hardTimeout: Promise = new Promise( ( resolve ) => {\n\t\t\tsetTimeout( () => {\n\t\t\t\tresolve( null );\n\t\t\t}, 1000 * 5 );\n\t\t} );\n\n\t\treturn Promise.race( [\n\t\t\tnewGeoP(),\n\t\t\tsoftTimeout,\n\t\t\thardTimeout,\n\t\t] );\n\t}\n\n\treturn null;\n}\n\nexport async function requestCurrentPosition(): Promise {\n\tif ( positionRequest ) {\n\t\tconst position = await positionRequest;\n\n\t\treturn position;\n\t}\n\n\tpositionRequest = _requestCurrentPosition();\n\tconst position = await positionRequest;\n\n\treturn position;\n}\n\nexport async function currentPositionWithExistingPermissions(): Promise {\n\tconst permissionStatus = await navigator?.permissions?.query( {\n\t\tname: 'geolocation',\n\t} );\n\n\tif ( !permissionStatus ) {\n\t\treturn null;\n\t}\n\n\tif ( 'granted' !== permissionStatus?.state ) {\n\t\treturn null;\n\t}\n\n\treturn requestCurrentPosition();\n}\n\n// maths for distance in KM\nexport function calcCrowKm( lat1Arg: number, lon1: number, lat2Arg: number, lon2: number ): number {\n\tconst R = 6371; // km\n\tconst dLat = toRad( lat2Arg - lat1Arg );\n\tconst dLon = toRad( lon2 - lon1 );\n\tconst lat1 = toRad( lat1Arg );\n\tconst lat2 = toRad( lat2Arg );\n\n\tconst a = Math.sin( dLat / 2 ) * Math.sin( dLat / 2 ) + Math.sin( dLon / 2 ) * Math.sin( dLon / 2 ) * Math.cos( lat1 ) * Math.cos( lat2 );\n\tconst c = 2 * Math.atan2( Math.sqrt( a ), Math.sqrt( 1 - a ) );\n\tconst d = R * c;\n\n\treturn Number( ( d ).toFixed( 1 ) );\n}\n\n// Converts numeric degrees to radians\nexport function toRad( value: number ): number {\n\treturn value * Math.PI / 180;\n}\n","import { setText } from '../helpers/set-text';\nimport { requestCurrentPosition, calcCrowKm } from '../helpers/position';\n\nclass MrDistanceFromMe extends HTMLElement {\n\t#observer: IntersectionObserver | null = null;\n\n\tconnectedCallback() {\n\t\tthis.requestLocation();\n\t}\n\n\tdisconnectedCallback() {\n\t\tif ( this.#observer ) {\n\t\t\tthis.#observer.unobserve( this );\n\t\t\tthis.#observer.disconnect();\n\t\t\tthis.#observer = null;\n\t\t}\n\t}\n\n\tasync requestLocation() {\n\t\tif ( ( 'IntersectionObserver' in window ) ) {\n\t\t\tthis.#observer = new IntersectionObserver(\n\t\t\t\tasync( entries ) => {\n\t\t\t\t\tif ( 0 === entries.length ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tentries.forEach( async( entry ) => {\n\t\t\t\t\t\tif ( entry.target === this && entry.isIntersecting ) {\n\t\t\t\t\t\t\tconst position = await requestCurrentPosition();\n\t\t\t\t\t\t\tif ( position ) {\n\t\t\t\t\t\t\t\tthis.updateInnerHTML( position );\n\n\t\t\t\t\t\t\t\tif ( this.#observer ) {\n\t\t\t\t\t\t\t\t\tthis.#observer.unobserve( this );\n\t\t\t\t\t\t\t\t\tthis.#observer.disconnect();\n\t\t\t\t\t\t\t\t\tthis.#observer = null;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tthis.#observer.observe( this );\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst position = await requestCurrentPosition();\n\t\tif ( position ) {\n\t\t\tthis.updateInnerHTML( position );\n\t\t}\n\n\t\treturn;\n\t}\n\n\tupdateInnerHTML( position: GeolocationPosition ) {\n\t\tconst coordinates = this.getAttribute( 'coordinates' );\n\t\tif ( !coordinates ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst format = this.getAttribute( 'format' );\n\t\tif ( !format ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// google maps url query format\n\t\tconst splitCoordinates = coordinates.split( ',' );\n\t\tif ( 2 !== splitCoordinates.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst latitude = parseFloat( splitCoordinates[0] );\n\t\tconst longitude = parseFloat( splitCoordinates[1] );\n\n\t\tif ( !longitude ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !latitude ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst distanceKm = calcCrowKm( latitude, longitude, position.coords.latitude, position.coords.longitude );\n\t\tsetText( this, format.replace( new RegExp( '{distance}', 'g' ), distanceKm.toString() ) );\n\t}\n}\n\ncustomElements.define( 'mr-distance-from-me', MrDistanceFromMe );\n","async function subscribeToKlaviyo( action: string, formData: FormData ) {\n\tconst langProp = document.documentElement.getAttribute( 'lang' ) || 'en';\n\tconst lang = ( langProp.split( '-' )[0] || 'en' ).toUpperCase();\n\tconst region = ( langProp.split( '-' )[1] || 'eu' ).toUpperCase();\n\n\t// $fields: $consent, $source, $method_type, $method_id, $consent_version\n\tformData.set( '$fields', '$consent,$source,$method_type,$method_id,$consent_version,language,region,Accepts Marketing' );\n\t// $list_fields: $consent\n\tformData.set( '$list_fields', '$consent' );\n\t// $source: $embed\n\tformData.set( '$source', '$embed' );\n\t// $method_type: Klaviyo Form\n\tformData.set( '$method_type', 'Klaviyo Form' );\n\t// $method_id: embed\n\tformData.set( '$method_id', 'embed' );\n\t// $consent_version: Embed default text\n\tformData.set( '$consent_version', '1' );\n\n\tformData.set( 'language', lang );\n\tformData.set( 'region', region );\n\n\tif ( formData.get( '$consent' ) ) {\n\t\tformData.set( 'Accepts Marketing', 'true' );\n\t}\n\n\tif ( formData.get( 'site_campaign' ) ) {\n\t\tformData.set( '$fields', '$consent,$source,$method_type,$method_id,$consent_version,language,region,site_campaign,Accepts Marketing' );\n\t}\n\n\tconst resp = await fetch( action, {\n\t\tbody: formData,\n\t\tmethod: 'POST',\n\t\tmode: 'cors',\n\t\tcredentials: 'omit',\n\t} );\n\n\tif ( 200 !== resp.status ) {\n\t\tthrow new Error( 'Failed to subscribe' );\n\t}\n\n\tconst data = await resp.json();\n\n\tif ( data.errors && 0 < data.errors.length ) {\n\t\tconsole.log( JSON.stringify( data.errors ) );\n\t\tthrow new Error( 'Failed to subscribe' );\n\t}\n\n\tif ( !data.success ) {\n\t\tthrow new Error( 'Failed to subscribe' );\n\t}\n}\n\nasync function subscribeToKlaviyoWithErrorHandling( form: HTMLFormElement ) {\n\tconst action = form.getAttribute( 'data-ajax-submit' ) || '';\n\tif ( !action ) {\n\t\tthrow new Error( 'Action url must be set for Klaviyo form' );\n\t}\n\n\tconst successContent = form.getAttribute( 'data-success-content' ) || '';\n\tconst errorContent = form.getAttribute( 'data-error-content' ) || '';\n\tconst messagesArea = document.getElementById( 'klaviyo-email-signup-messages' );\n\tif ( !messagesArea ) {\n\t\tthrow new Error( 'A message area for Klaviyo forms must exist on the page' );\n\t}\n\n\tconst formData = new FormData( form );\n\tfor ( let i = 0; i < form.elements.length; i++ ) {\n\t\tconst element = form.elements[i];\n\t\tif ( 'disabled' in element ) {\n\t\t\t( element as HTMLInputElement ).disabled = true;\n\t\t}\n\t}\n\n\tif ( form['klaviyo-email-signup-submit'] ) {\n\t\tform['klaviyo-email-signup-submit'].disabled = true;\n\t}\n\n\tmessagesArea.hidden = false;\n\tmessagesArea.removeAttribute( 'hidden' );\n\n\ttry {\n\t\tawait subscribeToKlaviyo( action, formData );\n\t\tif ( successContent ) {\n\t\t\tmessagesArea.innerHTML = successContent;\n\t\t}\n\n\t\twindow.dataLayer = window.dataLayer || [];\n\t\twindow.dataLayer.push( {\n\t\t\tevent: 'newsletterSignup',\n\t\t\tga: {\n\t\t\t\tevent: {\n\t\t\t\t\tcategory: 'Newsletter Signup',\n\t\t\t\t\taction: 'Submit',\n\t\t\t\t\tlabel: window.location.href,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfb: {\n\t\t\t\tlead: {\n\t\t\t\t\tcontent_category: 'Newsletter Signup',\n\t\t\t\t\tcontent_name: window.location.href,\n\t\t\t\t},\n\t\t\t},\n\t\t} );\n\n\t} catch ( e ) {\n\t\tif ( !errorContent ) {\n\t\t\t// rethrow if we can't show error messages to users.\n\t\t\t// this will notify us via Bugsnag\n\t\t\tthrow e;\n\t\t}\n\n\t\tif ( e.message ) {\n\t\t\tconsole.warn( e.message );\n\t\t}\n\n\t\tmessagesArea.classList.add( 'klaviyo-newsletter-subscribe__form__messages--error' );\n\t\tmessagesArea.innerHTML = errorContent;\n\t}\n}\n\nlet initKlaviyoSubscribe = () => {\n\tif ( !( 'FormData' in window ) ) {\n\t\treturn;\n\t}\n\n\tif ( !( 'set' in window.FormData.prototype ) ) {\n\t\treturn;\n\t}\n\n\tconst form = document.getElementById( 'klaviyo-email-signup' ) as HTMLFormElement | null;\n\tif ( !form ) {\n\t\treturn;\n\t}\n\n\tinitKlaviyoSubscribe = () => {\n\t\t/* noop */\n\t};\n\n\tif ( 'IntersectionObserver' in window ) {\n\t\tconst observer = new IntersectionObserver( ( entries ) => {\n\t\t\tif ( entries[0] && entries[0].isIntersecting ) {\n\t\t\t\twindow.dataLayer = window.dataLayer || [];\n\t\t\t\twindow.dataLayer.push( {\n\t\t\t\t\tevent: 'newsletterSignupImpression',\n\t\t\t\t\tga: {\n\t\t\t\t\t\tevent: {\n\t\t\t\t\t\t\tcategory: 'Newsletter Signup',\n\t\t\t\t\t\t\taction: 'Impression',\n\t\t\t\t\t\t\tlabel: window.location.href,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t} );\n\n\t\t\t\tobserver.unobserve( form );\n\t\t\t}\n\t\t} );\n\t\tobserver.observe( form );\n\t}\n\n\tform.addEventListener( 'submit', ( event ) => {\n\t\tif ( !form ) {\n\t\t\treturn;\n\t\t}\n\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\tsubscribeToKlaviyoWithErrorHandling( form );\n\t} );\n};\n\ninitKlaviyoSubscribe();\nrequestAnimationFrame( () => {\n\tinitKlaviyoSubscribe();\n} );\nwindow.addEventListener( 'load', () => {\n\tinitKlaviyoSubscribe();\n} );\n","import { setText } from '../helpers/set-text';\n\nfunction setCartCountInNavigation(): boolean {\n\tlet didSetCount = false;\n\tdocument.querySelectorAll( ( '.js-navigation-bar-info__cart-count' ) ).forEach( ( el ) => {\n\t\tif (\n\t\t\t!window.Mr ||\n\t\t\t!window.Mr.cart ||\n\t\t\t!window.Mr.cart.item_count\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetText( el, `${window.Mr.cart.item_count}` );\n\t\tdidSetCount = true;\n\t} );\n\n\treturn didSetCount;\n}\n\nfunction tryToSetCartCountInNavigation(): void {\n\tsetTimeout( () => {\n\t\tif ( setCartCountInNavigation() ) {\n\t\t\treturn;\n\t\t}\n\n\t\ttryToSetCartCountInNavigation();\n\t}, 500 );\n}\n\ntryToSetCartCountInNavigation();\n","export const throttle = ( fn: () => void, wait: number ): () => void => {\n\tlet time: number | null;\n\n\treturn ( (): void => {\n\t\tconst now = Date.now();\n\t\tif ( !time || ( time + wait ) < now ) {\n\t\t\tfn();\n\t\t\ttime = now;\n\t\t}\n\t} );\n};\n","import { throttle } from '../helpers/throttle';\n\nclass MrSpotlightHover extends HTMLElement {\n\tconnectedCallback() {\n\t\t/* (desktop version) */\n\t\trequestAnimationFrame( () => {\n\t\t\tthis.querySelectorAll( '.js-spotlight-hover-item' ).forEach( ( el ) => {\n\t\t\t\tel.addEventListener( 'mouseenter', ( e ) => {\n\t\t\t\t\tif ( !( e.target instanceof HTMLElement ) ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( 768 > window.innerWidth ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !e.target.hasAttribute( 'idx' ) ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.current = parseInt( e.target.getAttribute( 'idx' ) || '0', 10 );\n\t\t\t\t} );\n\t\t\t} );\n\t\t} );\n\n\t\t/* (mobile version) */\n\t\tconst throttledToNext = throttle( () => {\n\t\t\treturn this.goToNext();\n\t\t}, 256 );\n\n\t\tconst throttledToPrev = throttle( () => {\n\t\t\treturn this.goToPrev();\n\t\t}, 256 );\n\n\t\tthis.addEventListener( 'click', ( e ) => {\n\t\t\tif ( !( e.target instanceof HTMLButtonElement ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( e.target.classList.contains( 'js-spotlight-hover__next' ) ) {\n\t\t\t\te.preventDefault();\n\n\t\t\t\tthrottledToNext();\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( e.target.classList.contains( 'js-spotlight-hover__prev' ) ) {\n\t\t\t\te.preventDefault();\n\n\t\t\t\tthrottledToPrev();\n\n\t\t\t\treturn;\n\t\t\t}\n\t\t} );\n\t}\n\n\tgoToNext() {\n\t\tthis.previous = this.current;\n\n\t\t// If the current is last in the list, we'd set it back to the first\n\t\tif ( ( this.current + 1 ) >= this.querySelectorAll( '.js-spotlight-hover-item' ).length ) {\n\t\t\tthis.current = 0;\n\n\t\t\treturn;\n\t\t}\n\n\t\tthis.current = this.current + 1;\n\t}\n\n\tgoToPrev() {\n\t\tthis.previous = this.current;\n\n\t\t// If the current is first in the list, we'd set it back to the last\n\t\tif ( 0 > ( this.current - 1 ) ) {\n\t\t\tthis.current = this.querySelectorAll( '.js-spotlight-hover-item' ).length - 1;\n\n\t\t\treturn;\n\t\t}\n\n\t\tthis.current = this.current - 1;\n\t}\n\n\tget current(): number {\n\t\treturn parseInt( this.getAttribute( 'current' ) || '0', 10 );\n\t}\n\n\tset current( value: number ) {\n\t\tthis.setAttribute( 'current', value.toString() );\n\t}\n\n\tget previous(): number {\n\t\treturn parseInt( this.getAttribute( 'previous' ) || '0', 10 );\n\t}\n\n\tset previous( value: number ) {\n\t\tthis.setAttribute( 'previous', value.toString() );\n\t}\n}\n\ncustomElements.define( 'mr-spotlight-hover', MrSpotlightHover );\n","import { calcCrowKm, currentPositionWithExistingPermissions, requestCurrentPosition } from '../helpers/position';\nimport { setText } from '../helpers/set-text';\n\ninterface Store {\n\tcity: string;\n\tcountry: string;\n\t'10y': boolean;\n\taddress: string;\n\temail: string;\n\tid: number;\n\tkind: string;\n\tlatitude?: number;\n\tlongitude?: number;\n\tmarine_collection: boolean;\n\tnotes: string;\n\tofficial_store: boolean;\n\tpostalcode: string;\n\tproducts: string;\n\tregion: string;\n\tstreet: string;\n\ttelephone: string;\n\ttitle: string;\n\twebsite: string;\n\n\tdistance?: number;\n}\n\nclass MrStoreLocatorPreviewList extends HTMLElement {\n\t#observer: IntersectionObserver | null = null;\n\n\tconnectedCallback() {\n\t\tthis.#observer?.disconnect();\n\n\t\tif ( ( 'IntersectionObserver' in window ) ) {\n\t\t\tthis.#observer = new IntersectionObserver(\n\t\t\t\tasync( entries ) => {\n\t\t\t\t\tif ( 0 === entries.length ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tentries.forEach( async( entry ) => {\n\t\t\t\t\t\tif ( entry.target === this && entry.isIntersecting ) {\n\t\t\t\t\t\t\tconst position = await requestCurrentPosition();\n\t\t\t\t\t\t\tconst products = JSON.parse( this.getAttribute( 'products' ) || '' );\n\t\t\t\t\t\t\tif ( Array.isArray( products ) ) {\n\t\t\t\t\t\t\t\tthis.render( products, position );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tthis.#observer.observe( this );\n\n\t\t\treturn;\n\t\t}\n\n\t\t// fallback\n\t\trequestAnimationFrame( () => {\n\t\t\ttry {\n\t\t\t\tconst products = JSON.parse( this.getAttribute( 'products' ) || '' );\n\t\t\t\tif ( Array.isArray( products ) ) {\n\t\t\t\t\tthis.render( products );\n\t\t\t\t}\n\t\t\t} catch ( err ) {\n\t\t\t\tconsole.warn( err );\n\t\t\t}\n\t\t} );\n\t}\n\n\tdisconnectedCallback() {\n\t\tthis.#observer?.disconnect();\n\t}\n\n\tasync render( products: Array, userPosition: GeolocationPosition|null = null ) {\n\t\tconst query = window.encodeURIComponent( `{\n\t\t\t\tlocation {\n\t\t\t\t\tcity {\n\t\t\t\t\t\tname\n\t\t\t\t\t}\n\t\t\t\t\tcountry {\n\t\t\t\t\t\tname\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}` );\n\n\t\t// First get the users current city and country.\n\t\treturn fetch( `https://limbo.services/geo/graphql?query=${query}`, {\n\t\t\tmethod: 'GET',\n\t\t\tmode: 'cors',\n\t\t\tcache: 'default',\n\t\t} ).then( ( response ) => {\n\n\t\t\t// verify the response\n\t\t\tif ( !response.ok ) {\n\t\t\t\tthrow new Error( `geo : ${response.status} ${response.statusText}` );\n\t\t\t}\n\n\t\t\treturn response.json();\n\n\t\t} ).then( async( d ) => {\n\t\t\t// verify the geo response and extract the city and country\n\t\t\tif ( !d || !d.data ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst data = d.data;\n\n\t\t\tlet city = '';\n\t\t\tlet country = '';\n\n\t\t\tif ( data && data.location && data.location.city && data.location.city.name ) {\n\t\t\t\tcity = data.location.city.name;\n\t\t\t}\n\n\t\t\tlet position: GeolocationPosition|null = null;\n\t\t\tif ( userPosition ) {\n\t\t\t\tposition = userPosition;\n\t\t\t} else {\n\t\t\t\tposition = await currentPositionWithExistingPermissions();\n\t\t\t}\n\n\t\t\tif ( position ) {\n\t\t\t\tcity = '';\n\t\t\t} else {\n\t\t\t\tcity = `&city=${city}`;\n\t\t\t}\n\n\t\t\tif ( data && data.location && data.location.country && data.location.country.name ) {\n\t\t\t\tcountry = data.location.country.name;\n\t\t\t}\n\n\t\t\tlet productsArg = '';\n\t\t\tif ( products.length ) {\n\t\t\t\tproductsArg = '&products[]=' + ( products || [] ).join( '&products[]=' );\n\t\t\t}\n\n\t\t\t// fetch stores for the given city and country\n\t\t\treturn this.getAllStores( country, city, productsArg );\n\t\t} ).then( async( storesData ) => {\n\t\t\tif ( !storesData ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet stores = storesData;\n\n\t\t\tlet position: GeolocationPosition|null = null;\n\t\t\tif ( userPosition ) {\n\t\t\t\tposition = userPosition;\n\t\t\t} else {\n\t\t\t\tposition = await currentPositionWithExistingPermissions();\n\t\t\t}\n\n\t\t\tif ( position ) {\n\t\t\t\tconst p = position;\n\t\t\t\tstores.forEach( ( store ) => {\n\t\t\t\t\tif ( store.latitude && store.longitude ) {\n\t\t\t\t\t\tstore.distance = calcCrowKm(\n\t\t\t\t\t\t\tstore.latitude,\n\t\t\t\t\t\t\tstore.longitude,\n\t\t\t\t\t\t\tp.coords.latitude,\n\t\t\t\t\t\t\tp.coords.longitude\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\tstores = filterByTieredDistance( stores );\n\t\t\t}\n\n\t\t\t// Set count of stores\n\t\t\tsetText( this.querySelector( '.js-stores-count' ), stores.length.toString() );\n\n\t\t\t// Show / hide the plural / singular labels\n\t\t\tconst pluralLabel = this.querySelector( '.js-stores-count-plural' );\n\t\t\tconst singularLabel = this.querySelector( '.js-stores-count-singular' );\n\t\t\tif ( pluralLabel && pluralLabel instanceof HTMLElement && singularLabel && singularLabel instanceof HTMLElement ) {\n\t\t\t\tif ( 1 === stores.length ) {\n\t\t\t\t\tpluralLabel.style.display = 'none';\n\t\t\t\t\tsingularLabel.style.display = 'inline';\n\t\t\t\t} else {\n\t\t\t\t\tpluralLabel.style.display = 'inline';\n\t\t\t\t\tsingularLabel.style.display = 'none';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tstores.sort( ( a, b ) => {\n\t\t\t\tif ( a.official_store && !b.official_store ) {\n\t\t\t\t\treturn -1;\n\t\t\t\t}\n\n\t\t\t\tif ( !a.official_store && b.official_store ) {\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\n\t\t\t\tif ( a.distance && !b.distance ) {\n\t\t\t\t\treturn -1;\n\t\t\t\t}\n\n\t\t\t\tif ( !a.distance && b.distance ) {\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\n\t\t\t\tif ( a.distance && b.distance ) {\n\t\t\t\t\tif ( a.distance < b.distance ) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( a.distance > b.distance ) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( a.title < b.title ) {\n\t\t\t\t\treturn -1;\n\t\t\t\t}\n\n\t\t\t\tif ( a.title > b.title ) {\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\n\t\t\t\treturn 0;\n\t\t\t} );\n\n\t\t\treturn stores.slice( 0, 13 );\n\t\t} )\n\t\t\t.then( ( stores ) => {\n\t\t\t\tif ( !stores ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t// update the html\n\t\t\t\tstores.forEach( ( store, index ) => {\n\t\t\t\t\tconst title = this.querySelector( `.js-store-title-${index}` );\n\t\t\t\t\tconst address = this.querySelector( `.js-store-address-${index}` );\n\t\t\t\t\tconst telephone = this.querySelector( `.js-store-telephone-${index}` );\n\t\t\t\t\tconst email = this.querySelector( `.js-store-email-${index}` );\n\t\t\t\t\tconst website = this.querySelector( `.js-store-website-${index}` );\n\t\t\t\t\tconst mapLink = this.querySelector( `.js-store-map-link-${index}` );\n\n\t\t\t\t\tsetText( title, store.title );\n\t\t\t\t\tsetText( address, store.address );\n\t\t\t\t\tsetText( telephone, store.telephone );\n\n\t\t\t\t\tsetText( email, store.email );\n\t\t\t\t\tif ( email && email instanceof HTMLAnchorElement ) {\n\t\t\t\t\t\temail.href = `mailto:${store.email}`;\n\t\t\t\t\t}\n\n\t\t\t\t\tsetText( website, store.website );\n\t\t\t\t\tif ( website && website instanceof HTMLAnchorElement ) {\n\t\t\t\t\t\twebsite.href = store.website;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ( !store.website && !store.email && !store.telephone ) && website?.closest( '.store-list__store__info' ) ) {\n\t\t\t\t\t\twebsite.closest( '.store-list__store__info' )?.setAttribute( 'hidden', '' );\n\t\t\t\t\t} else if ( website?.closest( '.store-list__store__info' ) ) {\n\t\t\t\t\t\twebsite.closest( '.store-list__store__info' )?.removeAttribute( 'hidden' );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( store.latitude && store.longitude && mapLink && mapLink instanceof HTMLAnchorElement ) {\n\t\t\t\t\t\tmapLink.href = `https://www.google.com/maps/search/${encodeURIComponent( store.title )}/@${store.latitude},${store.longitude},18z`;\n\t\t\t\t\t} else if ( mapLink && mapLink instanceof HTMLElement ) {\n\t\t\t\t\t\tmapLink.style.display = 'none';\n\t\t\t\t\t}\n\n\t\t\t\t\t// google maps url query format\n\t\t\t\t\tconst distanceFromMe = this.querySelector( `.js-distance-from-me-${index}` );\n\t\t\t\t\tdistanceFromMe?.setAttribute( 'coordinates', `${store.latitude},${store.longitude}` );\n\n\t\t\t\t\tconst container = this.querySelector( `.js-store-${index}` );\n\t\t\t\t\tcontainer?.removeAttribute( 'hidden' );\n\t\t\t\t} );\n\n\t\t\t\t// this returns true if there were stores\n\t\t\t\treturn !!stores.length;\n\t\t\t} )\n\t\t\t.catch( ( err ) => {\n\t\t\t\tconsole.warn( err );\n\n\t\t\t\treturn;\n\t\t\t} );\n\t}\n\n\tasync getAllStores( country: string, city: string, productsArg: string ) {\n\t\treturn fetch( `https://store-locator-manager.komono.com/wp-json/wp/v2/stores?page=1&orderby=title&order=asc&per_page=100&country=${country}${city}${productsArg}`, {\n\t\t\tmethod: 'GET',\n\t\t\tmode: 'cors',\n\t\t\tcache: 'default',\n\t\t} ).then( ( resp ) => {\n\t\t\tconst response = checkIfResponseIsValid( resp );\n\n\t\t\t// set total\n\t\t\tconst total = Number.parseInt( response.headers.get( 'X-WP-Total' ) || '0', 10 );\n\t\t\tconst pages = Math.ceil( total / 100 );\n\n\t\t\tconst remaining: Array> = [\n\t\t\t\tresponse.json(),\n\t\t\t];\n\n\t\t\tfor ( let i = 2; i < ( pages + 1 ); i++ ) {\n\t\t\t\tconst pageP = fetch( `https://store-locator-manager.komono.com/wp-json/wp/v2/stores?page=${i}&orderby=title&order=asc&per_page=100&country=${country}${city}${productsArg}`, {\n\t\t\t\t\tmethod: 'GET',\n\t\t\t\t\tmode: 'cors',\n\t\t\t\t\tcache: 'default',\n\t\t\t\t} ).then( ( pagedResp ) => {\n\t\t\t\t\tconst pagedResponse = checkIfResponseIsValid( pagedResp );\n\n\t\t\t\t\treturn pagedResponse.json();\n\t\t\t\t} );\n\n\t\t\t\tremaining.push(\n\t\t\t\t\tpageP\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn Promise.all( remaining ).then( ( data ) => {\n\t\t\t\tconst out: Array = [];\n\t\t\t\tdata.forEach( ( entry ) => {\n\t\t\t\t\tconst list = entry as Array;\n\t\t\t\t\tlist.forEach( ( store ) => {\n\t\t\t\t\t\tout.push( store );\n\t\t\t\t\t} );\n\t\t\t\t} );\n\n\t\t\t\treturn out;\n\t\t\t} );\n\t\t} );\n\t}\n}\n\nfunction checkIfResponseIsValid( response: Response ): Response {\n\tif ( !response ) {\n\t\tthrow new Error( 'ksl : missing response' );\n\t}\n\n\t// verify the response\n\tif ( !response?.ok ) {\n\t\tthrow new Error( `ksl : ${response.status} ${response.statusText}` );\n\t}\n\n\treturn response;\n}\n\n// Not each country/region operates on the same scale.\n// Try to find more than 13 stores in a certain radius and use this result as the \"close to you\" set.\nfunction filterByTieredDistance( stores: Array ): Array {\n\tlet closeStores = stores.filter( ( store ) => {\n\t\treturn store.distance && 5 > store.distance;\n\t} );\n\n\tif ( 13 < closeStores.length ) {\n\t\treturn closeStores;\n\t}\n\n\tcloseStores = stores.filter( ( store ) => {\n\t\treturn store.distance && 15 > store.distance;\n\t} );\n\n\tif ( 13 < closeStores.length ) {\n\t\treturn closeStores;\n\t}\n\n\tcloseStores = stores.filter( ( store ) => {\n\t\treturn store.distance && 50 > store.distance;\n\t} );\n\n\tif ( 13 < closeStores.length ) {\n\t\treturn closeStores;\n\t}\n\n\tcloseStores = stores.filter( ( store ) => {\n\t\treturn store.distance && 150 > store.distance;\n\t} );\n\n\tif ( 13 < closeStores.length ) {\n\t\treturn closeStores;\n\t}\n\n\tcloseStores = stores.filter( ( store ) => {\n\t\treturn store.distance && 450 > store.distance;\n\t} );\n\n\tif ( 13 < closeStores.length ) {\n\t\treturn closeStores;\n\t}\n\n\treturn stores;\n}\n\ncustomElements.define( 'mr-store-locator-preview-list', MrStoreLocatorPreviewList );\n","export class SwapEvent extends CustomEvent {}\n\n// WARNING: sub optimal element\nclass MrVideoSwap extends HTMLElement {\n\t#clickHandler = ( e: MouseEvent ): void => {\n\t\tif ( !( e.currentTarget instanceof HTMLAnchorElement ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\te.preventDefault();\n\n\t\tconst videoLabel = this.querySelector( '.js-video-label' );\n\t\tif ( videoLabel ) {\n\t\t\tvideoLabel.classList.add( 'is-loading' );\n\t\t}\n\n\t\tthis.showFullVideo();\n\t};\n\n\t#labelTransitionEndHandler = (): void => {\n\t\tconst videoLabel = this.querySelector( '.js-video-label' );\n\t\tif ( !videoLabel ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvideoLabel.classList.remove( 'is-loaded' );\n\t\tvideoLabel.classList.add( 'is-hidden' );\n\n\t\tvideoLabel.removeEventListener( 'transitionend', this.#labelTransitionEndHandler );\n\t};\n\n\tconnectedCallback(): void {\n\t\trequestAnimationFrame( () => {\n\t\t\tconst videoLabel = this.querySelector( '.js-video-label' );\n\t\t\tif ( videoLabel && ( videoLabel instanceof HTMLElement ) ) {\n\t\t\t\tvideoLabel.addEventListener( 'click', this.#clickHandler );\n\t\t\t}\n\n\t\t} );\n\t}\n\n\tdisconnectedCallback(): void {\n\t\tconst videoLabel = this.querySelector( '.js-video-label' );\n\t\tif ( videoLabel && ( videoLabel instanceof HTMLElement ) ) {\n\t\t\tvideoLabel.removeEventListener( 'click', this.#clickHandler );\n\t\t\tvideoLabel.removeEventListener( 'transitionend', this.#labelTransitionEndHandler );\n\t\t}\n\n\t}\n\n\tshowFullVideo() {\n\t\tif ( this.hasAttribute( 'swapped' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst video = this.getAttachedVideo();\n\t\tif ( !video ) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet videoSource: string | null;\n\t\tif ( 768 < window.innerWidth ) {\n\t\t\tvideoSource = this.getAttribute( 'vimeo' );\n\t\t} else {\n\t\t\tvideoSource = this.getAttribute( 'mobile-vimeo' ) || this.getAttribute( 'vimeo' );\n\t\t}\n\n\t\tif ( !videoSource ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvideo.src = videoSource;\n\t\tthis.setAttribute( 'swapped', '' );\n\n\t\tconst videoLabel = this.querySelector( '.js-video-label' );\n\t\tif ( videoLabel ) {\n\t\t\tvideoLabel.classList.add( 'is-loaded' );\n\t\t\tvideoLabel.addEventListener( 'transitionend', this.#labelTransitionEndHandler );\n\t\t}\n\n\t\tvideo.dispatchEvent( new SwapEvent( 'swap', {\n\t\t\tbubbles: true,\n\t\t\tcancelable: true,\n\t\t} ) );\n\t}\n\n\tgetAttachedVideo(): HTMLVideoElement| null {\n\t\tconst videoId = this.getAttribute( 'for' );\n\t\tif ( !videoId ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst video = document.getElementById( videoId );\n\t\tif ( !video || !( video instanceof HTMLVideoElement ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn video;\n\t}\n}\n\ncustomElements.define( 'mr-video-swap', MrVideoSwap );\n","import { SwapEvent } from './video-swap';\n\n// WARNING: sub optimal element\nclass MrVideo extends HTMLElement {\n\t#video: HTMLVideoElement | null = null;\n\n\t#poster: HTMLElement | null = null;\n\n\t#initial = true;\n\n\t#videoAttributeObserver: MutationObserver|null = null;\n\n\t#swapHandler = ( e: Event ): void => {\n\t\tif ( !( e instanceof SwapEvent ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.hidePoster();\n\t};\n\n\t#canplaythroughHandler = (): void => {\n\t\tthis.hidePoster();\n\t};\n\n\tconnectedCallback() {\n\t\trequestAnimationFrame( () => {\n\t\t\tconst poster = this.querySelector( '.js-video-poster' );\n\t\t\tif ( poster instanceof HTMLElement ) {\n\t\t\t\tthis.#poster = poster;\n\t\t\t}\n\n\t\t\tconst video = this.getAttachedVideo();\n\t\t\tif ( video && video instanceof HTMLVideoElement ) {\n\t\t\t\tthis.#video = video;\n\n\t\t\t\t// Is also done through inline js, but do it again just to be sure.\n\t\t\t\tvideo.controls = false;\n\n\t\t\t\tthis.#video.addEventListener( 'swap', this.#swapHandler );\n\n\t\t\t\tthis.#video.addEventListener( 'canplaythrough', this.#canplaythroughHandler );\n\n\t\t\t\tthis.startObservingVideoAttributes( video );\n\t\t\t}\n\n\t\t\tthis.#initial = true;\n\t\t} );\n\n\t\tthis.setupVideoPlayback();\n\t}\n\n\tdisconnectedCallback() {\n\t\tconst video = this.getAttachedVideo();\n\t\tif ( video && video instanceof HTMLVideoElement ) {\n\t\t\tvideo.removeEventListener( 'swap', this.#swapHandler );\n\n\t\t\tvideo.removeEventListener( 'canplaythrough', this.#canplaythroughHandler );\n\t\t}\n\n\t\tthis.#video = null;\n\t\tthis.#poster = null;\n\t\tthis.#initial = true;\n\n\t\tthis.stopObservingVideoAttributes();\n\t}\n\n\t// user events\n\n\thidePoster() {\n\t\tif ( this.#initial && this.#poster ) {\n\t\t\tthis.#poster.classList.add( 'is-hidden' );\n\n\t\t\tthis.#poster.addEventListener( 'transitionend', () => {\n\t\t\t\tif ( this.#poster && this.#poster.parentNode ) {\n\t\t\t\t\tthis.#poster.parentNode.removeChild( this.#poster );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\tthis.#initial = false;\n\t}\n\n\tsetupVideoPlayback() {\n\t\trequestAnimationFrame( () => {\n\t\t\tObject.assign( this.style, {\n\t\t\t\tdisplay: 'block',\n\t\t\t\tposition: 'relative',\n\t\t\t} );\n\n\t\t\tconst video = this.getAttachedVideo();\n\t\t\tif ( !video ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst mobileVideoSource = this.getAttribute( 'mobile-video-loop' )?.trim();\n\t\t\tconst desktopVideoSource = this.getAttribute( 'video-loop' )?.trim();\n\n\n\t\t\tif ( mobileVideoSource && '' !== mobileVideoSource ) {\n\t\t\t\tif ( 768 > window.innerWidth ) {\n\t\t\t\t\t// Add the video src of mobile\n\t\t\t\t\tvideo.src = mobileVideoSource;\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add the video src of desktop\n\t\t\tif ( desktopVideoSource && '' !== desktopVideoSource ) {\n\t\t\t\tvideo.src = desktopVideoSource;\n\n\t\t\t\treturn;\n\t\t\t}\n\t\t} );\n\t}\n\n\t// Browsers allow users to manually enable native controls\n\t// Observer this behaviour and set an attribute with which we can hide custom controls.\n\tstartObservingVideoAttributes( video : HTMLVideoElement ) {\n\t\t// Create an observer instance linked to the callback function\n\t\tthis.#videoAttributeObserver = new MutationObserver( ( ( mutationsList ) => {\n\t\t\t// Use traditional 'for loops' for IE 11\n\t\t\tfor ( const mutation of mutationsList ) {\n\t\t\t\tif ( 'attributes' === mutation.type && 'controls' === mutation.attributeName ) {\n\t\t\t\t\tconst currentVideo = this.getAttachedVideo();\n\t\t\t\t\tif ( !currentVideo ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( currentVideo !== video ) {\n\t\t\t\t\t\treturn; // shouldn't happen, but ....\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( currentVideo.controls ) {\n\t\t\t\t\t\tthis.setAttribute( 'native-controls', '' );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.removeAttribute( 'native-controls' );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} ) );\n\n\t\t// Start observing the target node for configured mutations\n\t\tthis.#videoAttributeObserver.observe( video, {\n\t\t\tattributes: true,\n\t\t\tchildList: false,\n\t\t\tsubtree: false,\n\t\t} );\n\t}\n\n\tstopObservingVideoAttributes(): void {\n\t\tif ( !this.#videoAttributeObserver ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#videoAttributeObserver.disconnect();\n\t\tthis.#videoAttributeObserver = null;\n\t}\n\n\tgetAttachedVideo(): HTMLVideoElement| null {\n\t\tconst videoId = this.getAttribute( 'for' );\n\t\tif ( !videoId ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst video = document.getElementById( videoId );\n\t\tif ( !video || !( video instanceof HTMLVideoElement ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn video;\n\t}\n}\n\ncustomElements.define( 'mr-video', MrVideo );\n","export class ScrubEvent extends CustomEvent {\n\tget currentTime(): number {\n\t\treturn this.detail;\n\t}\n}\n\n// MrVideoProgress is a self contained scrubber for HTMLVideoElement\n// supports :\n// - jump to time\n// - scrub\nclass MrVideoScrub extends HTMLElement {\n\t#videoEl: HTMLVideoElement | null = null;\n\n\t#videoDuration = 0;\n\n\t#offsetWidth = 0;\n\n\t#videoStateOnMouseDown = {\n\t\tpaused: true,\n\t\tcurrentTime: 0,\n\t};\n\n\t// Getting offsetWidth is not free\n\t// Listen for resize and store the value\n\t#resizeHandler = (): void => {\n\t\trequestAnimationFrame( () => {\n\t\t\tthis.#offsetWidth = this.offsetWidth;\n\t\t} );\n\t};\n\n\t// Mousedown should setup scrubbing.\n\t#mousedownHandler = ( e: MouseEvent ): void => {\n\t\te.preventDefault();\n\n\t\tif ( !this.#videoEl ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !this.#offsetWidth ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.setAttribute( 'scrubbing', '' );\n\n\t\tthis.#videoDuration = this.#videoEl.duration;\n\n\t\tthis.#videoStateOnMouseDown.paused = this.#videoEl.paused;\n\t\tthis.#videoStateOnMouseDown.currentTime = this.#videoEl.currentTime;\n\n\t\tif ( !this.#videoEl.paused ) {\n\t\t\tthis.#videoEl.pause();\n\t\t}\n\n\t\t// Only add the event listener in the best case\n\t\tthis.addEventListener( 'mousemove', this.#mousemoveHandler, {\n\t\t\tpassive: true,\n\t\t} );\n\t};\n\n\t#mousemoveHandler = ( e: MouseEvent ): void => {\n\t\tif ( !this.#videoEl ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !this.#offsetWidth ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !this.#videoDuration ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst length = this.#offsetWidth;\n\t\tconst offset = this.getBoundingClientRect().left;\n\n\t\t// get position relative to scrub width\n\t\t// e.g. if user clicks in exact mid of scrub\n\t\t// position will be 0.5\n\t\tconst position = ( e.clientX - offset ) / length;\n\t\tif ( !isNaN( position ) ) {\n\t\t\tlet currentTime = Math.abs(\n\t\t\t\tMath.min(\n\t\t\t\t\tposition * this.#videoDuration,\n\t\t\t\t\tthis.#videoDuration\n\t\t\t\t)\n\t\t\t);\n\n\t\t\t// Floating point rounding combined with how video works can cause issues.\n\t\t\t// Never set currentTime to duration or above.\n\t\t\tif ( currentTime + 0.02 >= this.#videoDuration ) {\n\t\t\t\tcurrentTime = currentTime - 0.02;\n\t\t\t}\n\n\t\t\tthis.#videoEl.dispatchEvent( new ScrubEvent( 'scrub', {\n\t\t\t\tdetail: currentTime,\n\t\t\t} ) );\n\n\t\t\tthis.#videoEl.currentTime = currentTime;\n\t\t}\n\t};\n\n\t// Clicks should jump the video.\n\t// After scrub the video should continue playing.\n\t// if it was playing when scrubbing started.\n\t#mouseupHandler = ( e: MouseEvent ): void => {\n\t\t// Always remove the event listener\n\t\tthis.removeEventListener( 'mousemove', this.#mousemoveHandler );\n\t\tthis.removeAttribute( 'scrubbing' );\n\n\t\tif ( !this.#videoEl ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !this.#offsetWidth ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !this.#videoDuration ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst length = this.#offsetWidth;\n\t\tconst offset = this.getBoundingClientRect().left;\n\n\t\t// get position relative to scrub width\n\t\t// e.g. if user clicks in exact mid of scrub\n\t\t// position will be 0.5\n\t\tconst position = ( e.clientX - offset ) / length;\n\t\tif ( !isNaN( position ) ) {\n\t\t\tlet currentTime = Math.abs(\n\t\t\t\tMath.min(\n\t\t\t\t\tposition * this.#videoDuration,\n\t\t\t\t\tthis.#videoDuration\n\t\t\t\t)\n\t\t\t);\n\n\t\t\t// Floating point rounding combined with how video works can cause issues.\n\t\t\t// Never set currentTime to duration or above.\n\t\t\tif ( currentTime + 0.02 >= this.#videoDuration ) {\n\t\t\t\tcurrentTime = currentTime - 0.02;\n\t\t\t}\n\n\t\t\tthis.#videoEl.currentTime = currentTime;\n\t\t}\n\n\t\tif ( !this.#videoStateOnMouseDown.paused && this.#videoEl.paused ) {\n\t\t\tconst playPromise = this.#videoEl.play();\n\t\t\tif ( playPromise instanceof Promise ) {\n\t\t\t\tplayPromise.then( () => {\n\t\t\t\t\treturn; // noop.\n\t\t\t\t} ).catch( () => {\n\t\t\t\t\t// quickly seeking and scrubbing can cause the video to be paused again before playback starts.\n\t\t\t\t\t// these are expected errors and normal behaviour.\n\t\t\t\t\treturn; // noop.\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t};\n\n\t// Touchstart should setup scrubbing.\n\t#touchstartHandler = ( e: TouchEvent ): void => {\n\t\te.preventDefault();\n\n\t\tif ( !this.#videoEl ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !this.#offsetWidth ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.setAttribute( 'scrubbing', '' );\n\n\t\tthis.#videoDuration = this.#videoEl.duration;\n\n\t\tthis.#videoStateOnMouseDown.paused = this.#videoEl.paused;\n\t\tthis.#videoStateOnMouseDown.currentTime = this.#videoEl.currentTime;\n\n\t\tif ( !this.#videoEl.paused ) {\n\t\t\tthis.#videoEl.pause();\n\t\t}\n\n\t\t// Only add the event listener in the best case\n\t\tthis.addEventListener( 'touchmove', this.#touchmoveHandler, {\n\t\t\tpassive: true,\n\t\t} );\n\t};\n\n\t#touchmoveHandler = ( e: TouchEvent ): void => {\n\t\tif ( !this.#videoEl ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !this.#offsetWidth ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !this.#videoDuration ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !e.changedTouches.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst length = this.#offsetWidth;\n\t\tconst offset = this.getBoundingClientRect().left;\n\n\t\t// get position relative to scrub width\n\t\t// e.g. if user clicks in exact mid of scrub\n\t\t// position will be 0.5\n\t\tconst position = ( e.changedTouches[0].pageX - offset ) / length;\n\t\tif ( !isNaN( position ) ) {\n\t\t\tlet currentTime = Math.abs(\n\t\t\t\tMath.min(\n\t\t\t\t\tposition * this.#videoDuration,\n\t\t\t\t\tthis.#videoDuration\n\t\t\t\t)\n\t\t\t);\n\n\t\t\t// Floating point rounding combined with how video works can cause issues.\n\t\t\t// Never set currentTime to duration or above.\n\t\t\tif ( currentTime + 0.02 >= this.#videoDuration ) {\n\t\t\t\tcurrentTime = currentTime - 0.02;\n\t\t\t}\n\n\t\t\tthis.#videoEl.dispatchEvent( new ScrubEvent( 'scrub', {\n\t\t\t\tdetail: currentTime,\n\t\t\t} ) );\n\n\t\t\tthis.#videoEl.currentTime = currentTime;\n\t\t}\n\t};\n\n\t// Tab should jump the video.\n\t// After scrub the video should continue playing.\n\t// if it was playing when scrubbing started.\n\t#touchendHandler = ( e: TouchEvent ): void => {\n\t\t// Always remove the event listener\n\t\tthis.removeEventListener( 'touchmove', this.#touchmoveHandler );\n\t\tthis.removeAttribute( 'scrubbing' );\n\n\t\tif ( !this.#videoEl ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !this.#offsetWidth ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !this.#videoDuration ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !e.changedTouches.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst length = this.#offsetWidth;\n\t\tconst offset = this.getBoundingClientRect().left;\n\n\t\t// get position relative to scrub width\n\t\t// e.g. if user clicks in exact mid of scrub\n\t\t// position will be 0.5\n\t\tconst position = ( e.changedTouches[0].pageX - offset ) / length;\n\t\tif ( !isNaN( position ) ) {\n\t\t\tlet currentTime = Math.abs(\n\t\t\t\tMath.min(\n\t\t\t\t\tposition * this.#videoDuration,\n\t\t\t\t\tthis.#videoDuration\n\t\t\t\t)\n\t\t\t);\n\n\t\t\t// Floating point rounding combined with how video works can cause issues.\n\t\t\t// Never set currentTime to duration or above.\n\t\t\tif ( currentTime + 0.02 >= this.#videoDuration ) {\n\t\t\t\tcurrentTime = currentTime - 0.02;\n\t\t\t}\n\n\t\t\tthis.#videoEl.currentTime = currentTime;\n\t\t}\n\n\t\tif ( !this.#videoStateOnMouseDown.paused && this.#videoEl.paused ) {\n\t\t\tconst playPromise = this.#videoEl.play();\n\t\t\tif ( playPromise instanceof Promise ) {\n\t\t\t\tplayPromise.then( () => {\n\t\t\t\t\treturn; // noop.\n\t\t\t\t} ).catch( () => {\n\t\t\t\t\t// quickly seeking and scrubbing can cause the video to be paused again before playback starts.\n\t\t\t\t\t// these are expected errors and normal behaviour.\n\t\t\t\t\treturn; // noop.\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t};\n\n\tconnectedCallback(): void {\n\t\tthis.addEventListener( 'mouseup', this.#mouseupHandler );\n\t\tthis.addEventListener( 'mousedown', this.#mousedownHandler );\n\n\t\tthis.addEventListener( 'touchstart', this.#touchstartHandler, {\n\t\t\tpassive: true,\n\t\t} );\n\t\tthis.addEventListener( 'touchend', this.#touchendHandler );\n\n\t\trequestAnimationFrame( () => {\n\t\t\tthis.#offsetWidth = this.offsetWidth;\n\t\t\twindow.addEventListener( 'resize', this.#resizeHandler );\n\n\t\t\tconst video = this.getAttachedVideo();\n\t\t\tif ( video ) {\n\t\t\t\tthis.#videoEl = video;\n\t\t\t\tthis.#videoDuration = video.duration;\n\t\t\t}\n\t\t} );\n\t}\n\n\tdisconnectedCallback(): void {\n\t\tthis.removeEventListener( 'mouseup', this.#mouseupHandler );\n\t\tthis.removeEventListener( 'mousemove', this.#mousemoveHandler );\n\t\tthis.removeEventListener( 'mousedown', this.#mousedownHandler );\n\n\t\tthis.removeEventListener( 'touchstart', this.#touchstartHandler );\n\t\tthis.removeEventListener( 'touchmove', this.#touchmoveHandler );\n\t\tthis.removeEventListener( 'touchend', this.#touchendHandler );\n\n\t\twindow.removeEventListener( 'resize', this.#resizeHandler );\n\t}\n\n\tprivate getAttachedVideo(): HTMLVideoElement | null {\n\t\tif ( this.#videoEl ) {\n\t\t\treturn this.#videoEl;\n\t\t}\n\n\t\tconst forId = this.getAttribute( 'for' );\n\t\tif ( !forId ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst forEl = document.getElementById( forId );\n\t\tif ( !forEl || !( forEl instanceof HTMLVideoElement ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn forEl;\n\t}\n}\n\ncustomElements.define( 'mr-video-scrub', MrVideoScrub );\n","// MrVideoProgress is a self contained progress bar for HTMLVideoElement\n// supports :\n// - progress bar with indicator\n//\n// contained HTML :\n// - bar (class : .mr-video-progress__bar)\n// - indicator (class : .mr-video-progress__indicator)\n\nimport { ScrubEvent } from './scrub';\n\nclass MrVideoProgress extends HTMLElement {\n\t#videoEl: HTMLVideoElement | null = null;\n\n\t#videoDuration = 0;\n\n\t#offsetWidth = 0;\n\n\t#bar: HTMLDivElement;\n\n\t#indicator: HTMLDivElement;\n\n\t#moving = false;\n\n\t// Getting offsetWidth is not free\n\t// Listen for resize and store the value\n\t#resizeHandler = (): void => {\n\t\trequestAnimationFrame( () => {\n\t\t\tthis.#offsetWidth = this.offsetWidth;\n\n\t\t\tif ( !this.#moving ) {\n\t\t\t\tthis.displayVideoCurrentTimeWithIndicator();\n\t\t\t}\n\t\t} );\n\t};\n\n\t// Duration changes on the video should update the indicator\n\t#durationchangedHandler = (): void => {\n\t\trequestAnimationFrame( () => {\n\t\t\tif ( !this.#videoEl ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( this.#videoEl.duration ) {\n\t\t\t\tthis.#videoDuration = this.#videoEl.duration;\n\t\t\t}\n\n\t\t\tif ( !this.#moving ) {\n\t\t\t\tthis.displayVideoCurrentTimeWithIndicator();\n\t\t\t}\n\t\t} );\n\t};\n\n\t// Play start on the video should start moving the indicator\n\t#playHandler = (): void => {\n\t\trequestAnimationFrame( () => {\n\t\t\tif ( !this.#videoEl ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( this.#videoEl.duration ) {\n\t\t\t\tthis.#videoDuration = this.#videoEl.duration;\n\t\t\t}\n\n\t\t\tif ( !this.#moving ) {\n\t\t\t\tthis.displayVideoCurrentTimeWithIndicator();\n\t\t\t}\n\t\t} );\n\t};\n\n\t// Timeupdates on the video should start moving the indicator\n\t#timeupdateHandler = (): void => {\n\t\trequestAnimationFrame( () => {\n\t\t\tif ( !this.#videoEl ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( this.#videoEl.duration ) {\n\t\t\t\tthis.#videoDuration = this.#videoEl.duration;\n\t\t\t}\n\n\t\t\tif ( !this.#moving ) {\n\t\t\t\tthis.displayVideoCurrentTimeWithIndicator();\n\t\t\t}\n\t\t} );\n\t};\n\n\t// Scrub on the video should start moving the indicator\n\t#scrubHandler = ( e: Event ): void => {\n\t\tif ( !( e instanceof ScrubEvent ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\trequestAnimationFrame( () => {\n\t\t\tif ( !this.#videoEl ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( this.#videoEl.duration ) {\n\t\t\t\tthis.#videoDuration = this.#videoEl.duration;\n\t\t\t}\n\n\t\t\tif ( !this.#moving ) {\n\t\t\t\tthis.displayScrubTimeWithIndicator( e.currentTime );\n\t\t\t}\n\t\t} );\n\t};\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis.#bar = document.createElement( 'div' );\n\t\tthis.#bar.classList.add( `${this.tagName.toLowerCase()}__bar` );\n\n\t\tthis.#indicator = document.createElement( 'div' );\n\t\tthis.#indicator.classList.add( `${this.tagName.toLowerCase()}__indicator` );\n\t}\n\n\tconnectedCallback(): void {\n\t\tthis.appendChild( this.#bar );\n\t\tthis.appendChild( this.#indicator );\n\n\t\trequestAnimationFrame( () => {\n\t\t\tthis.#offsetWidth = this.offsetWidth;\n\t\t\twindow.addEventListener( 'resize', this.#resizeHandler );\n\n\t\t\tconst video = this.getAttachedVideo();\n\t\t\tif ( video ) {\n\t\t\t\tvideo.addEventListener( 'play', this.#playHandler );\n\t\t\t\tvideo.addEventListener( 'timeupdate', this.#timeupdateHandler );\n\t\t\t\tvideo.addEventListener( 'durationchange', this.#durationchangedHandler );\n\t\t\t\tvideo.addEventListener( 'scrub', this.#scrubHandler );\n\n\t\t\t\tthis.#videoEl = video;\n\t\t\t\tthis.#videoDuration = video.duration;\n\t\t\t}\n\t\t} );\n\t}\n\n\tdisconnectedCallback(): void {\n\t\tthis.removeChild( this.#bar );\n\t\tthis.removeChild( this.#indicator );\n\n\t\twindow.removeEventListener( 'resize', this.#resizeHandler );\n\n\t\tif ( this.#videoEl ) {\n\t\t\tthis.#videoEl.removeEventListener( 'play', this.#playHandler );\n\t\t\tthis.#videoEl.removeEventListener( 'timeupdate', this.#timeupdateHandler );\n\t\t\tthis.#videoEl.removeEventListener( 'durationchange', this.#durationchangedHandler );\n\t\t\tthis.#videoEl.removeEventListener( 'scrub', this.#scrubHandler );\n\t\t}\n\n\t\tthis.#videoEl = null;\n\t}\n\n\tprivate getAttachedVideo(): HTMLVideoElement | null {\n\t\tif ( this.#videoEl ) {\n\t\t\treturn this.#videoEl;\n\t\t}\n\n\t\tconst forId = this.getAttribute( 'for' );\n\t\tif ( !forId ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst forEl = document.getElementById( forId );\n\t\tif ( !forEl || !( forEl instanceof HTMLVideoElement ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn forEl;\n\t}\n\n\tprivate displayVideoCurrentTimeWithIndicator() {\n\t\tthis.#moving = true;\n\n\t\trequestAnimationFrame( () => {\n\t\t\tif ( !this.#videoEl ) {\n\t\t\t\tthis.#moving = false;\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( this.#videoDuration ) {\n\t\t\t\tthis.#indicator.style.transform = `translateX(${this.#offsetWidth * this.#videoEl.currentTime / this.#videoDuration}px) translateZ(0)`;\n\t\t\t} else {\n\t\t\t\tthis.#indicator.style.transform = 'translateX(0) translateZ(0)';\n\t\t\t}\n\n\t\t\tif ( this.#videoEl.paused ) {\n\t\t\t\tthis.#moving = false;\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( !this.#moving ) {\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.displayVideoCurrentTimeWithIndicator();\n\t\t} );\n\t}\n\n\tprivate displayScrubTimeWithIndicator( jump: number ) {\n\t\tif ( !this.#videoEl ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this.#videoDuration ) {\n\t\t\tthis.#indicator.style.transform = `translateX(${this.#offsetWidth * jump / this.#videoDuration}px) translateZ(0)`;\n\t\t} else {\n\t\t\tthis.#indicator.style.transform = 'translateX(0) translateZ(0)';\n\t\t}\n\t}\n}\n\ncustomElements.define( 'mr-video-progress', MrVideoProgress );\n","// MrMuteToggle is a self contained unmute/mute button for HTMLVideoElement\n// supports :\n// - mute\n// - unmute\n\ninterface AudioTrackList {\n\tlength: number\n}\n\ninterface HTMLVideoElementWithHasAudioFallbacks extends HTMLMediaElement {\n\tmozHasAudio?: boolean\n\taudioTracks?: AudioTrackList\n\twebkitAudioDecodedByteCount?: number\n}\n\nexport class MrMuteToggle extends HTMLElement {\n\t/**\n\t * \"for\" is observed.\n\t * You can update this attribute in DOM.\n\t */\n\tstatic get observedAttributes(): Array {\n\t\treturn [\n\t\t\t'for',\n\t\t];\n\t}\n\n\t/**\n\t * When disabled clicks will not toggle mute.\n\t *\n\t * External updates to mute will not update the state here.\n\t */\n\tget disabled(): boolean {\n\t\treturn this.hasAttribute( 'disabled' );\n\t}\n\n\tset disabled( value: boolean ) {\n\t\tif ( value === this.disabled ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( value ) {\n\t\t\tthis.setAttribute( 'disabled', '' );\n\n\t\t\treturn;\n\t\t}\n\n\t\tthis.removeAttribute( 'disabled' );\n\t}\n\n\tattributeChangedCallback( attrName: string, oldVal: string|null, newVal: string|null ): void {\n\t\t// Event listeners are added\n\t\tif ( 'for' === attrName ) {\n\t\t\tthis.stopListening( oldVal );\n\n\t\t\tif ( null !== newVal ) {\n\t\t\t\tthis.startListening( newVal );\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\t}\n\n\t#clickHandler = ( e: MouseEvent ): void => {\n\t\t// always prevent default button behaviour\n\t\te.preventDefault();\n\n\t\t// when disabled do nothing\n\t\tif ( this.disabled ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst media = this.getAttachedMedia();\n\t\tif ( !media ) {\n\t\t\treturn;\n\t\t}\n\n\t\tmedia.muted = !media.muted;\n\n\t\tif ( media.muted ) {\n\t\t\tthis.setAttribute( 'muted', '' );\n\n\t\t\treturn;\n\t\t}\n\n\t\tthis.removeAttribute( 'muted' );\n\t};\n\n\t#volumechangeHandler = (): void => {\n\t\trequestAnimationFrame( () => {\n\t\t\tthis.setStateAttribute();\n\t\t} );\n\t};\n\n\t#timeupdateHandler = (): void => {\n\t\trequestAnimationFrame( () => {\n\t\t\tthis.setStateAttribute();\n\t\t} );\n\t};\n\n\t#playpauseHandler = (): void => {\n\t\trequestAnimationFrame( () => {\n\t\t\tthis.setStateAttribute();\n\t\t} );\n\t};\n\n\tconnectedCallback(): void {\n\t\tthis.startListening();\n\t}\n\n\tdisconnectedCallback(): void {\n\t\tthis.stopListening();\n\n\t\tthis.removeAttribute( 'muted' );\n\t}\n\n\tprivate startListening( onId?: string|null|undefined ): void {\n\t\tthis.addEventListener( 'click', this.#clickHandler );\n\n\t\trequestAnimationFrame( () => {\n\t\t\tconst media = this.getAttachedMedia( onId );\n\t\t\tif ( media ) {\n\t\t\t\tif ( media.muted ) {\n\t\t\t\t\tthis.setAttribute( 'muted', '' );\n\t\t\t\t} else {\n\t\t\t\t\tthis.removeAttribute( 'muted' );\n\t\t\t\t}\n\n\t\t\t\tmedia.addEventListener( 'timeupdate', this.#timeupdateHandler, {\n\t\t\t\t\tonce: true,\n\t\t\t\t} );\n\n\t\t\t\tmedia.addEventListener( 'volumechange', this.#volumechangeHandler );\n\t\t\t\tmedia.addEventListener( 'play', this.#playpauseHandler );\n\t\t\t\tmedia.addEventListener( 'pause', this.#playpauseHandler );\n\t\t\t}\n\t\t} );\n\t}\n\n\tprivate stopListening( onId?: string|null|undefined ): void {\n\t\tthis.removeEventListener( 'click', this.#clickHandler );\n\n\t\tconst media = this.getAttachedMedia( onId );\n\t\tif ( media ) {\n\t\t\tmedia.removeEventListener( 'volumechange', this.#volumechangeHandler );\n\t\t\tmedia.removeEventListener( 'play', this.#playpauseHandler );\n\t\t\tmedia.removeEventListener( 'pause', this.#playpauseHandler );\n\t\t}\n\t}\n\n\tprivate setStateAttribute(): void {\n\t\tconst media = this.getAttachedMedia();\n\t\tif ( !media ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( media.muted ) {\n\t\t\tthis.setAttribute( 'muted', '' );\n\t\t} else {\n\t\t\tthis.removeAttribute( 'muted' );\n\t\t}\n\n\t\t// With a fallback to \"true\" we set a negative flag.\n\t\tthis.hasAudio( media ).then( ( hasAudio ) => {\n\t\t\tif ( hasAudio ) {\n\t\t\t\tthis.removeAttribute( 'has-no-audio-tracks' );\n\t\t\t} else {\n\t\t\t\tthis.setAttribute( 'has-no-audio-tracks', '' );\n\t\t\t}\n\t\t} );\n\t}\n\n\t// There is no spec yet for this functionality.\n\t// We can still determine if there is an audio track in some browsers.\n\tprivate hasAudio( media: HTMLMediaElement ): Promise {\n\t\tif ( !( 'HTMLVideoElement' in self ) || !( 'HTMLAudioElement' in self ) ) {\n\t\t\treturn Promise.resolve( true );\n\t\t}\n\n\t\tif ( media instanceof HTMLAudioElement ) {\n\t\t\t// fallback to true until there is an official API that is widely adopted.\n\t\t\treturn Promise.resolve( true );\n\t\t}\n\n\t\tif ( media instanceof HTMLVideoElement ) {\n\t\t\tconst video = media as HTMLVideoElementWithHasAudioFallbacks;\n\t\t\tif ( 'mozHasAudio' in HTMLVideoElement.prototype && 'undefined' !== typeof video.mozHasAudio ) {\n\t\t\t\tif ( true === video.mozHasAudio ) {\n\t\t\t\t\treturn Promise.resolve( true );\n\t\t\t\t}\n\n\t\t\t\treturn new Promise( ( resolve ) => {\n\t\t\t\t\tsetTimeout( () => {\n\t\t\t\t\t\tif ( !video.mozHasAudio ) {\n\t\t\t\t\t\t\tsetTimeout( () => {\n\t\t\t\t\t\t\t\tresolve( !!video.mozHasAudio );\n\t\t\t\t\t\t\t}, 500 );\n\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresolve( true );\n\t\t\t\t\t}, 250 );\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tif ( 'audioTracks' in HTMLVideoElement.prototype ) {\n\t\t\t\tif ( ( 'undefined' !== typeof video.audioTracks ) && ( 0 < video.audioTracks.length ) ) {\n\t\t\t\t\treturn Promise.resolve( true );\n\t\t\t\t}\n\n\t\t\t\treturn new Promise( ( resolve ) => {\n\t\t\t\t\tsetTimeout( () => {\n\t\t\t\t\t\tif ( !video.audioTracks || 0 === video.audioTracks.length ) {\n\t\t\t\t\t\t\tsetTimeout( () => {\n\t\t\t\t\t\t\t\tif ( !video.audioTracks || 0 === video.audioTracks.length ) {\n\t\t\t\t\t\t\t\t\tresolve( false );\n\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tresolve( 0 < video.audioTracks.length );\n\t\t\t\t\t\t\t}, 500 );\n\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresolve( 0 < video.audioTracks.length );\n\t\t\t\t\t}, 250 );\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tif ( 'webkitAudioDecodedByteCount' in video ) {\n\t\t\t\tif ( ( 'undefined' !== typeof video.webkitAudioDecodedByteCount ) && ( 0 < video.webkitAudioDecodedByteCount ) ) {\n\t\t\t\t\treturn Promise.resolve( true );\n\t\t\t\t}\n\n\t\t\t\treturn new Promise( ( resolve ) => {\n\t\t\t\t\tsetTimeout( () => {\n\t\t\t\t\t\tif ( ( 'undefined' === typeof video.webkitAudioDecodedByteCount ) || ( 0 === video.webkitAudioDecodedByteCount ) ) {\n\t\t\t\t\t\t\tsetTimeout( () => {\n\t\t\t\t\t\t\t\tif ( ( 'undefined' === typeof video.webkitAudioDecodedByteCount ) || ( 0 === video.webkitAudioDecodedByteCount ) ) {\n\t\t\t\t\t\t\t\t\tresolve( false );\n\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tresolve( true );\n\t\t\t\t\t\t\t}, 500 );\n\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresolve( true );\n\t\t\t\t\t}, 250 );\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\n\t\t// fallback to true until there is an official API that is widely adopted.\n\t\treturn Promise.resolve( true );\n\t}\n\n\tprivate getAttachedMedia( withId?: string|null|undefined ): HTMLMediaElement | null {\n\t\tconst id = withId || this.getAttribute( 'for' );\n\t\tif ( !id ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst media = document.getElementById( id );\n\t\tif ( !media || !( media instanceof HTMLMediaElement ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn media;\n\t}\n}\n\n\n// TODO :\n// Is there any adviced ARIA attribute that should be toggled on mute?\n","/**\n * MrPlayPauseToggle is a self contained play/pause button for HTMLMediaElement.\n *\n * Supports :\n * - pause\n * - play\n */\nexport class MrPlayPauseToggle extends HTMLElement {\n\n\t/**\n\t * \"for\" is observed.\n\t * You can update this attribute in DOM.\n\t */\n\tstatic get observedAttributes(): Array {\n\t\treturn [\n\t\t\t'for',\n\t\t];\n\t}\n\n\t/**\n\t * When disabled clicks will not toggle playback.\n\t *\n\t * External updates to playback will still update the state here.\n\t */\n\tget disabled(): boolean {\n\t\treturn this.hasAttribute( 'disabled' );\n\t}\n\n\tset disabled( value: boolean ) {\n\t\tif ( value === this.disabled ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( value ) {\n\t\t\tthis.setAttribute( 'disabled', '' );\n\n\t\t\treturn;\n\t\t}\n\n\t\tthis.removeAttribute( 'disabled' );\n\t}\n\n\tattributeChangedCallback( attrName: string, oldVal: string|null, newVal: string|null ): void {\n\t\t// Event listeners are added\n\t\tif ( 'for' === attrName ) {\n\t\t\tthis.stopListening( oldVal );\n\n\t\t\tif ( null !== newVal ) {\n\t\t\t\tthis.startListening( newVal );\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\t}\n\n\t#clickHandler = ( e: MouseEvent ): void => {\n\t\t// always prevent default button behavior\n\t\te.preventDefault();\n\n\t\t// when disabled do nothing\n\t\tif ( this.disabled ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst media = this.getAttachedMedia();\n\t\tif ( !media ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !media.paused ) {\n\t\t\tmedia.pause();\n\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this.hasAttribute( 'playback-starts-from-zero' ) ) {\n\t\t\tmedia.currentTime = 0;\n\t\t}\n\n\t\tmedia.setAttribute( 'playback-requested', '' );\n\t\tconst playPromise = media.play();\n\t\tif ( playPromise instanceof Promise ) {\n\t\t\tplayPromise.then( () => {\n\t\t\t\treturn; // noop.\n\t\t\t} ).catch( () => {\n\t\t\t\t// quickly playing and pausing can cause the video to be paused again before playback starts.\n\t\t\t\t// these are expected errors and normal behavior.\n\t\t\t\treturn; // noop.\n\t\t\t} );\n\t\t}\n\t};\n\n\t// The video can start playing before this element is alive\n\t// Lister for a single timeupdate event;\n\t#timeupdateHandler = (): void => {\n\t\trequestAnimationFrame( () => {\n\t\t\tthis.setStateAttribute();\n\t\t} );\n\t};\n\n\t#playHandler = (): void => {\n\t\trequestAnimationFrame( () => {\n\t\t\tthis.setStateAttribute();\n\t\t} );\n\t};\n\n\t#pauseHandler = (): void => {\n\t\trequestAnimationFrame( () => {\n\t\t\tthis.setStateAttribute();\n\t\t} );\n\t};\n\n\tconnectedCallback(): void {\n\t\tthis.startListening();\n\t}\n\n\tdisconnectedCallback(): void {\n\t\tthis.stopListening();\n\n\t\tthis.removeAttribute( 'playing' );\n\t}\n\n\tprivate startListening( onId?: string|null|undefined ): void {\n\t\tthis.addEventListener( 'click', this.#clickHandler );\n\n\t\trequestAnimationFrame( () => {\n\t\t\tconst media = this.getAttachedMedia( onId );\n\t\t\tif ( media ) {\n\t\t\t\tif ( media.paused ) {\n\t\t\t\t\tthis.removeAttribute( 'playing' );\n\t\t\t\t} else {\n\t\t\t\t\tthis.setAttribute( 'playing', '' );\n\t\t\t\t\tif ( this.hasAttribute( 'playback-requested' ) ) {\n\t\t\t\t\t\tthis.removeAttribute( 'playback-requested' );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tmedia.addEventListener( 'timeupdate', this.#timeupdateHandler, {\n\t\t\t\t\tonce: true,\n\t\t\t\t} );\n\n\t\t\t\tmedia.addEventListener( 'play', this.#playHandler );\n\t\t\t\tmedia.addEventListener( 'pause', this.#pauseHandler );\n\t\t\t}\n\t\t} );\n\t}\n\n\tprivate stopListening( onId?: string|null|undefined ): void {\n\t\tthis.removeEventListener( 'click', this.#clickHandler );\n\n\t\tconst media = this.getAttachedMedia( onId );\n\t\tif ( media ) {\n\t\t\tmedia.removeEventListener( 'play', this.#playHandler );\n\t\t\tmedia.removeEventListener( 'pause', this.#pauseHandler );\n\t\t}\n\t}\n\n\tprivate setStateAttribute(): void {\n\t\tconst media = this.getAttachedMedia();\n\t\tif ( media && !media.paused ) {\n\t\t\tthis.setAttribute( 'playing', '' );\n\t\t\tif ( this.hasAttribute( 'playback-requested' ) ) {\n\t\t\t\tthis.removeAttribute( 'playback-requested' );\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tthis.removeAttribute( 'playing' );\n\t}\n\n\tprivate getAttachedMedia( withId?: string|null|undefined ): HTMLMediaElement | null {\n\t\tconst id = withId || this.getAttribute( 'for' );\n\t\tif ( !id ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst media = document.getElementById( id );\n\t\tif ( !media || !( media instanceof HTMLMediaElement ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn media;\n\t}\n}\n\n// TODO :\n// Is there any advised ARIA attribute that should be toggled between pause and play?\n","// MrFullscreen is a self contained fullscreen button for HTMLVideoElement\n// supports :\n// - fullscreen\n\ninterface HTMLVideoElementWithFullscreenFallbacks extends HTMLMediaElement {\n\tmsRequestFullscreen?(): void\n\tmozRequestFullScreen?(): void\n\twebkitRequestFullscreen?(): void\n\twebkitEnterFullscreen?(): void\n}\n\nexport class MrFullscreen extends HTMLElement {\n\t/**\n\t * When disabled clicks will not trigger fullscreen.\n\t */\n\tget disabled(): boolean {\n\t\treturn this.hasAttribute( 'disabled' );\n\t}\n\n\tset disabled( value: boolean ) {\n\t\tif ( value === this.disabled ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( value ) {\n\t\t\tthis.setAttribute( 'disabled', '' );\n\n\t\t\treturn;\n\t\t}\n\n\t\tthis.removeAttribute( 'disabled' );\n\t}\n\n\t#mediaHasControls = false;\n\n\t#clickHandler = ( e: MouseEvent ): void => {\n\t\t// always prevent default button behaviour\n\t\te.preventDefault();\n\n\t\t// when disabled do nothing\n\t\tif ( this.disabled ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst media = this.getAttachedMedia();\n\t\tif ( !media ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If we can listen for fullscreen changes we switch to native controls when entering fullscreen.\n\t\t// Otherwise do nothing.\n\t\tif ( 'onfullscreenchange' in media ) {\n\t\t\tthis.#mediaHasControls = media.controls;\n\t\t\tmedia.controls = true;\n\n\t\t\tmedia.addEventListener( 'fullscreenchange', this.#fullscreenchangeHandler );\n\t\t}\n\n\t\tif ( media.requestFullscreen ) {\n\t\t\tmedia.requestFullscreen();\n\n\t\t\treturn;\n\t\t}\n\n\t\tif ( media.msRequestFullscreen ) {\n\t\t\tmedia.msRequestFullscreen();\n\n\t\t\treturn;\n\t\t}\n\n\t\tif ( media.mozRequestFullScreen ) {\n\t\t\tmedia.mozRequestFullScreen();\n\n\t\t\treturn;\n\t\t}\n\n\t\tif ( media.webkitRequestFullscreen ) {\n\t\t\tmedia.webkitRequestFullscreen();\n\n\t\t\treturn;\n\t\t}\n\n\t\tif ( media.webkitEnterFullscreen ) {\n\t\t\tmedia.webkitEnterFullscreen();\n\n\t\t\treturn;\n\t\t}\n\n\t\tconsole.warn( 'media element doesn\\'t support fullscreen' );\n\t};\n\n\t#fullscreenchangeHandler = (): void => {\n\t\tif ( document.fullscreenElement ) {\n\t\t\t// Entering fullscreen.\n\t\t\t// Do nothing here.\n\t\t\treturn;\n\t\t}\n\n\t\tconst media = this.getAttachedMedia();\n\t\tif ( !media ) {\n\t\t\treturn;\n\t\t}\n\n\t\tmedia.controls = this.#mediaHasControls;\n\n\t\tmedia.removeEventListener( 'fullscreenchange', this.#fullscreenchangeHandler );\n\t};\n\n\tconnectedCallback(): void {\n\t\tif ( ( 'undefined' !== typeof document.fullscreenEnabled ) && !document.fullscreenEnabled ) {\n\t\t\tthis.disabled = true;\n\n\t\t\treturn;\n\t\t}\n\n\t\tthis.addEventListener( 'click', this.#clickHandler );\n\t}\n\n\tdisconnectedCallback(): void {\n\t\tthis.removeEventListener( 'click', this.#clickHandler );\n\t}\n\n\tprivate getAttachedMedia(): HTMLVideoElementWithFullscreenFallbacks | null {\n\t\tconst mediaId = this.getAttribute( 'for' );\n\t\tif ( !mediaId ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst media = document.getElementById( mediaId );\n\t\tif ( !media || !( media instanceof HTMLMediaElement ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn media as HTMLVideoElementWithFullscreenFallbacks;\n\t}\n}\n\n\n// TODO :\n// Is there any adviced ARIA attribute that should be set on fullscreen?\n","import '@mrhenry/wp--bugsnag-config';\nimport './shared/shared';\n\nimport './modules/countdown';\nimport './modules/country-city-select';\nimport './modules/distance-from-me';\nimport './modules/klaviyo-subscribe';\nimport './modules/navigation-bar-info';\nimport './modules/spotlight-hover';\nimport './modules/store-locator-preview-list';\nimport './modules/mr-hotspot';\n\n/* Video */\nimport './modules/video/video-swap';\nimport './modules/video/video';\nimport './modules/video/progress';\nimport './modules/video/scrub';\nimport './modules/video/user-interacting';\n\n/* Mr Interactive */\nimport { MrMuteToggle, MrPlayPauseToggle, MrFullscreen } from '@mrhenry/wp--mr-interactive';\n\ncustomElements.define( 'mr-mute-toggle', MrMuteToggle );\ncustomElements.define( 'mr-play-pause-toggle', MrPlayPauseToggle );\ncustomElements.define( 'mr-fullscreen', MrFullscreen );\n"],"names":["module","exports","_$breadcrumbTypes_8","_$reduce_17","arr","fn","accum","val","i","len","length","_$filter_12","item","concat","_$includes_13","x","_$isArray_14","obj","Object","prototype","toString","call","_hasDontEnumBug","propertyIsEnumerable","_dontEnums","_$keys_15","prop","result","hasOwnProperty","push","_$intRange_24","min","max","Infinity","value","parseInt","_$listOfFunctions_25","f","_$stringWithLength_26","_$config_5","schema","apiKey","defaultValue","message","validate","appVersion","undefined","appType","autoDetectErrors","enabledErrorTypes","unhandledExceptions","unhandledRejections","allowPartialObject","providedKeys","defaultKeys","k","onError","onSession","onBreadcrumb","endpoints","notify","sessions","autoTrackSessions","enabledReleaseStages","releaseStage","maxBreadcrumbs","enabledBreadcrumbTypes","join","maybeType","context","user","key","metadata","logger","method","redactedKeys","s","test","plugins","p","load","featureFlags","feature","name","_$assign_11","target","arguments","source","_$map_16","_extends","assign","apply","this","_$config_1","window","location","host","console","debug","getPrefixedConsole","consoleLog","log","consoleMethod","bind","_$Breadcrumb_3","Breadcrumb","type","timestamp","Date","toJSON","metaData","_$stackframe_34","root","factory","StackFrame","_isNumber","n","isNaN","parseFloat","isFinite","_capitalize","str","charAt","toUpperCase","substring","_getter","booleanProps","numericProps","stringProps","props","getArgs","args","setArgs","v","TypeError","getEvalOrigin","evalOrigin","setEvalOrigin","getFunctionName","getFileName","getLineNumber","getColumnNumber","Boolean","j","Number","String","_$errorStackParser_31","ErrorStackParser","FIREFOX_SAFARI_STACK_REGEXP","CHROME_IE_STACK_REGEXP","SAFARI_NATIVE_CODE_REGEXP","parse","error","stacktrace","parseOpera","stack","match","parseV8OrIE","parseFFOrSafari","Error","extractLocation","urlLike","indexOf","parts","exec","replace","split","filter","line","map","sanitizedLine","tokens","slice","locationParts","pop","functionName","fileName","lineNumber","columnNumber","functionNameRegex","matches","e","parseOpera9","parseOpera11","parseOpera10","lineRE","lines","argsRaw","functionCall","shift","_$errorStackParser_10","_$safeJsonStringify_30","data","replacer","space","opts","redactedPaths","JSON","stringify","seen","edges","visit","path","edgesExceeded","MIN_PRESERVED_DEPTH","MAX_EDGES","MAX_DEPTH","REPLACEMENT_NODE","haystack","needle","find","fResult","err","throwsMessage","o","eResult","__isArray_30","aResult","isDescendent","shouldRedact","safelyGetProp","prepareObjForSerialization","paths","patterns","toLowerCase","add","existingFeatures","existingFeatureKeys","variant","existingIndex","_$featureFlagDelegate_18","clear","features","featuresIndex","merge","newFeatures","toEventApi","_ref","flag","featureFlag","_$hasStack_19","_$iserror_20","__clear_22","state","section","_$metadataDelegate_22","keyOrObj","maybeVal","_updates","updates","get","_$stackGenerator_33","StackGenerator","backtrace","maxStackSize","curr","callee","Array","RegExp","$1","caller","Event","errorClass","errorMessage","handledState","originalError","defaultHandledState","groupingHash","_handledState","severity","unhandled","app","device","request","breadcrumbs","threads","_metadata","_features","_featuresIndex","_user","_session","errors","createBugsnagError","__type","_proto","addMetadata","getMetadata","clearMetadata","addFeatureFlag","addFeatureFlags","getFeatureFlags","clearFeatureFlag","clearFeatureFlags","getUser","setUser","id","email","payloadVersion","exceptions","er","severityReason","session","formatStackframe","frame","file","normaliseFunctionName","code","inProject","ensureString","getCauseStack","cause","getStacktrace","errorFramesToSkip","backtraceFramesToSkip","create","maybeError","tolerateNonErrors","component","event","_normaliseError","normaliseError","internalFrames","makeSerialisable","_event$errors","causes","normalisedCauses","createAndLogInputError","reason","verb","warn","hasNecessaryFields","_$Event_6","_$syncCallbackRunner_23","callbacks","callbackArg","callbackType","ignore","cbs","_$pad_29","num","size","substr","env","self","globalCount","mimeTypesLength","navigator","mimeTypes","clientId","userAgent","_$fingerprint_28","c","blockSize","base","discreteValues","Math","pow","randomBlock","random","cuid","getTime","fingerprint","_$cuid_27","_$Session_35","Session","startedAt","_handled","_unhandled","events","handled","_track","__add_4","__clear_4","__merge_4","noop","Client","configuration","internalPlugins","notifier","_this","_notifier","_config","_schema","_delivery","sendSession","sendEvent","_logger","info","_plugins","_breadcrumbs","_context","_cbs","sp","b","_configure","pl","_loadPlugin","_depth","getContext","setContext","plugin","configSchema","_reduce","config","generateConfigErrorMessage","getPlugin","_setDelivery","d","startSession","version","_sessionDelegate","addOnError","front","removeOnError","_addOnSessionPayload","addOnSession","removeOnSession","addOnBreadcrumb","removeOnBreadcrumb","pauseSession","resumeSession","leaveBreadcrumb","crumb","_isBreadcrumbTypeEnabled","types","postReportCallback","_notify","_this2","originalSeverity","onCallbackError","cb","index","next","_$asyncEvery_7","ret","then","setTimeout","_$callbackRunner_9","shouldSend","unhandledOverridden","rawInput","_$Client_4","_$jsonPayload_21","EVENT_REDACTION_PATHS","payload","_$delivery_36","client","win","url","getApiUrl","body","req","XDomainRequest","onload","onerror","toFixed","open","send","endpoint","isoDate","matchPageProtocol","protocol","encodeURIComponent","_matchPageProtocol","pageProtocol","_$delivery_37","XMLHttpRequest","onreadystatechange","readyState","DONE","status","setRequestHeader","toISOString","appStart","reset","_$app_38","now","duration","_$pad_43","__env_42","__globalCount_42","__prop_42","__mimeTypesLength_42","__clientId_42","_$fingerprint_42","__c_41","__blockSize_41","__base_41","__discreteValues_41","__randomBlock_41","__cuid_41","_$cuid_41","BUGSNAG_ANONYMOUS_ID_KEY","_$device_40","nav","locale","browserLanguage","systemLanguage","userLanguage","language","screen","orientation","document","documentElement","clientWidth","clientHeight","generateAnonymousId","storage","localStorage","getItem","setItem","getDeviceId","collectUserIp","setDefaultUserId","time","eventOrSession","_$request_44","href","_$session_45","sessionDelegate","sessionClient","_pausedSession","_$clientIp_46","clientIp","_$consoleBreadcrumbs_47","CONSOLE_LOG_METHODS","original","_len","_key","arg","stringified","_restore","MAX_SCRIPT_LENGTH","_$inlineScriptContent_48","doc","trackInlineScripts","originalLocation","html","DOMContentLoaded","attachEvent","getHtml","outerHTML","prev","_lastScript","updateLastScript","script","getCurrentScript","currentScript","scripts","getElementsByTagName","content","innerHTML","htmlLines","zeroBasedLine","start","end","addSurroundingCode","_setTimeout","__proxy","__traceOriginalScript","eventTargetCallbackAccessor","callbackAccessor","alsoCallOriginal","cba","__trace__","replacement","isEventHandlerObj","handleEvent","_$interactionBreadcrumbs_49","addEventListener","targetText","targetSelector","getNodeText","getNodeSelector","el","ommision","text","textContent","innerText","tagName","className","querySelectorAll","parentNode","childNodes","_$navigationBreadcrumbs_50","drop","oldURL","from","relativeLocation","to","newURL","getCurrentState","history","replaceState","wrapHistoryFn","pushState","a","createElement","pathname","search","hash","orig","title","currentPath","prevState","stateChangeToMetadata","resetEventCount","BREADCRUMB_TYPE","_$networkBreadcrumbs_51","_ignoredUrls","ignoredUrls","nativeOpen","requestSetupKey","handleXHRError","handleXHRLoad","removeEventListener","monkeyPatchXMLHttpRequest","fetch","polyfill","oldFetch","_arguments","urlOrRequest","options","Promise","resolve","reject","response","handleFetchSuccess","handleFetchError","monkeyPatchFetch","_$throttle_52","maxEvents","_$stripQueryString_53","strip","allFrames","_strip","_$onerror_54","prevOnError","messageOrEvent","lineNo","charNo","decorateStack","detail","extraParameters","culprit","isActualNumber","errorCharacter","_$unhandledRejection_55","listener","evt","isBluebird","fixBluebirdStacktrace","_event$addMetadata","onunhandledrejection","promise","_$notifier_2","__schema_2","Bugsnag","_client","createClient","bugsnag","isStarted","m","MrCountdown","HTMLElement","constructor","_MrCountdown_ticker","set","_MrCountdown_lastRenderedSecond","connectedCallback","__classPrivateFieldGet","clearInterval","requestAnimationFrame","update","__classPrivateFieldSet","setInterval","currentSecond","floor","hasAttribute","getAttribute","diff","mrCountdownClock","querySelector","setAttribute","removeAttribute","countdown","countdownElements","countdownNumber","days","hours","minutes","seconds","customElements","define","HTMLSelectElement","select","countrySelect","citySelectGlobal","citySelects","CustomEvent","forEach","citySelect","citySelectForCountry","handleCountryValueChange","children","HTMLOptionElement","countryForCity","countryEvent","dispatchEvent","handleCityValueChange","MrDots","_MrDots_isHovering","_MrDots_timer","_MrDots_isTouch","_MrDots_mouseenterHandler","currentTarget","trigger","classList","checkState","_MrDots_mouseleaveHandler","remove","passive","once","disconnectedCallback","MrFlyOutMenuTrigger","super","_MrFlyOutMenuTrigger_mouseTimer","_MrFlyOutMenuTrigger_clickHandler","flyOutTarget","getFlyOutMenuFromEvent","toggleFlyOutMenu","_MrFlyOutMenuTrigger_mouseoverHandler","clearTimeout","showFlyOutMenu","_MrFlyOutMenuTrigger_mouseoutHandler","hideFlyOutMenu","flyOutTargetId","parentElement","dispatchOpenEvent","bubbles","cancelable","MrFlyOutMenu","_MrFlyOutMenu_openEventHandler","isHoverDevice","matchMedia","MrHotspot","_MrHotspot_toggleHandler","isOpen","preventDefault","stopPropagation","_MrHotspot_openHandler","_MrHotspot_closeHandler","close","ensureDetailsFitsWithinBounds","closeAllOtherHotspots","mainBoundaries","closest","getBoundingClientRect","detailBoundaries","hotspotIsOnTheRight","width","left","goesOverRightEdge","right","goesOverBottomEdge","bottom","otherHotspot","HTMLAnchorElement","HTMLButtonElement","ctaLinks","ctaLinksArr","click","MrUserInteracting","_MrUserInteracting_interactionTimeout","_MrUserInteracting_keyupHandler","activeElement","contains","Element","extendInteractionDeadline","_MrUserInteracting_downHandler","setUserIsInteracting","_MrUserInteracting_upHandler","_MrUserInteracting_moveHandler","_MrUserInteracting_mouseenterHandler","_MrUserInteracting_mouseleaveHandler","_MrUserInteracting_focusinHandler","_MrUserInteracting_swapHandler","amount","setUserIsPassive","isCallable","tryToString","$TypeError","argument","isObject","$String","toIndexedObject","toAbsoluteIndex","lengthOfArrayLike","createMethod","IS_INCLUDES","$this","fromIndex","O","includes","DESCRIPTORS","isArray","getOwnPropertyDescriptor","SILENT_ON_NON_WRITABLE_LENGTH_SET","defineProperty","writable","uncurryThis","stringSlice","it","hasOwn","ownKeys","getOwnPropertyDescriptorModule","definePropertyModule","keys","createPropertyDescriptor","object","bitmap","enumerable","configurable","makeBuiltIn","defineGlobalProperty","simple","global","unsafe","nonConfigurable","nonWritable","fails","documentAll","all","IS_HTMLDDA","EXISTS","process","Deno","versions","v8","createNonEnumerableProperty","defineBuiltIn","copyConstructorProperties","isForced","targetProperty","sourceProperty","descriptor","TARGET","GLOBAL","STATIC","stat","dontCallGetSet","forced","sham","NATIVE_BIND","Function","FunctionPrototype","getDescriptor","PROPER","CONFIGURABLE","uncurryThisWithBind","namespace","aCallable","isNullOrUndefined","V","P","func","check","globalThis","g","toObject","classof","$Object","store","functionToString","inspectSource","has","NATIVE_WEAK_MAP","shared","sharedKey","hiddenKeys","OBJECT_ALREADY_INITIALIZED","WeakMap","facade","STATE","enforce","getterFor","TYPE","$documentAll","detection","normalize","POLYFILL","NATIVE","string","getBuiltIn","isPrototypeOf","USE_SYMBOL_AS_UID","$Symbol","toLength","CONFIGURABLE_FUNCTION_NAME","InternalStateModule","enforceInternalState","getInternalState","CONFIGURABLE_LENGTH","TEMPLATE","getter","setter","arity","ceil","trunc","IE8_DOM_DEFINE","V8_PROTOTYPE_DEFINE_BUG","anObject","toPropertyKey","$defineProperty","$getOwnPropertyDescriptor","ENUMERABLE","WRITABLE","Attributes","current","propertyIsEnumerableModule","internalObjectKeys","getOwnPropertyNames","getOwnPropertySymbols","names","$propertyIsEnumerable","NASHORN_BUG","input","pref","valueOf","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","uid","SHARED","IS_PURE","mode","copyright","license","V8_VERSION","symbol","Symbol","toIntegerOrInfinity","integer","IndexedObject","requireObjectCoercible","number","isSymbol","getMethod","ordinaryToPrimitive","wellKnownSymbol","TO_PRIMITIVE","exoticToPrim","toPrimitive","postfix","NATIVE_SYMBOL","iterator","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","$","setArrayLength","doesNotExceedSafeInteger","proto","properErrorOnNonWritableLength","argCount","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","__esModule","definition","metaValue","head","metaTag","bugsnagClient","theme","MrInputSink","observedAttributes","_MrInputSink_clickHandler","disabled","metaKey","_MrInputSink_keydownHandler","forEl","_addEventListeners","_removeEventListeners","attr","directive","forID","getElementById","updateState","attributeChangedCallback","attrName","oldVal","newVal","unpackRecords","records","record","pair","packRecords","out","isEnabledInGTM","cookie","Cookie","isDisabledInGTM","enableInGTM","expires","Mr_Prv_GTM_Helpers","cookieExpiration","cookieDomain","toUTCString","disableInGTM","pirsch","currentSettings","PrivacyControls","Pinterest","hasInteractedWithDialog","anyAccepted","values","some","allowsMetricsValue","meta","catch","query","playAllAnimations","keyframeEffects","Animation","promises","KeyframeEffect","getTiming","updateTiming","maxTiming","keyframeEffect","newMax","timing","delay","endDelay","getMaxTiming","iterations","reduceMotion","animation","timeline","onfinish","play","MrDialog","_MrDialog_escapeHandler","_MrDialog_previousActiveElement","inert","async","willOpen","firstFocusableElement","focus","openAnimations","didOpen","willClose","closeAnimations","didClose","gracefullShutdown","hidden","autoFocusChild","firstFocusableChild","_MrPrivacyDialog_controlValueChangeHandler","HTMLInputElement","hasSeen","setAsSeen","accept","dataLayer","ga","category","action","declineOptIns","currentGeneration","setTime","reload","MrAccordion","_MrAccordion_clickHandler","handleToggleEvent","_MrAccordion_beforeMatchHandler","findTriggerFromPanelContents","_didAddKeypressEventListener","getTriggers","activeAccordion","activeAccordionSelector","triggers","which","ctrlModifier","ctrlKey","direction","addKeypressEventListener","onlyOpen","isExpanded","panel","ids","walker","Map","MrModalDialog","child","mediaQuery","resizeHandler","removeListener","style","overflow","noticeBar","position","menu","display","innerMenu","addListener","onclickEl","isEnabled","isDisabled","enable","disable","doNotTrack","msDoNotTrack","external","trackingProtector","msTrackingProtectionEnabled","checked","hostname","setText","node","firstChild","nextSibling","nodeType","lastPosition","positionRequestErrored","positionRequest","requestCurrentPosition","geolocation","newGeoP","getCurrentPosition","timeout","softTimeout","hardTimeout","race","_requestCurrentPosition","currentPositionWithExistingPermissions","permissionStatus","permissions","calcCrowKm","lat1Arg","lon1","lat2Arg","lon2","dLat","toRad","dLon","lat1","lat2","sin","cos","atan2","sqrt","PI","MrDistanceFromMe","_MrDistanceFromMe_observer","requestLocation","unobserve","disconnect","IntersectionObserver","entries","entry","isIntersecting","updateInnerHTML","observe","coordinates","format","splitCoordinates","latitude","longitude","distanceKm","coords","initKlaviyoSubscribe","FormData","form","observer","label","successContent","errorContent","messagesArea","formData","elements","element","langProp","lang","region","resp","credentials","json","success","subscribeToKlaviyo","fb","lead","content_category","content_name","subscribeToKlaviyoWithErrorHandling","tryToSetCartCountInNavigation","didSetCount","Mr","cart","item_count","setCartCountInNavigation","throttle","wait","MrSpotlightHover","innerWidth","throttledToNext","goToNext","throttledToPrev","goToPrev","previous","MrStoreLocatorPreviewList","_MrStoreLocatorPreviewList_observer","products","render","userPosition","cache","ok","statusText","city","country","productsArg","getAllStores","storesData","stores","distance","closeStores","filterByTieredDistance","pluralLabel","singularLabel","sort","official_store","address","telephone","website","mapLink","distanceFromMe","container","checkIfResponseIsValid","total","headers","pages","remaining","pageP","pagedResp","SwapEvent","MrVideoSwap","_MrVideoSwap_clickHandler","videoLabel","showFullVideo","_MrVideoSwap_labelTransitionEndHandler","video","getAttachedVideo","videoSource","src","videoId","HTMLVideoElement","MrVideo","_MrVideo_video","_MrVideo_poster","_MrVideo_initial","_MrVideo_videoAttributeObserver","_MrVideo_swapHandler","hidePoster","_MrVideo_canplaythroughHandler","poster","controls","startObservingVideoAttributes","setupVideoPlayback","stopObservingVideoAttributes","removeChild","mobileVideoSource","trim","desktopVideoSource","MutationObserver","mutationsList","mutation","attributeName","currentVideo","attributes","childList","subtree","ScrubEvent","currentTime","MrVideoScrub","_MrVideoScrub_videoEl","_MrVideoScrub_videoDuration","_MrVideoScrub_offsetWidth","_MrVideoScrub_videoStateOnMouseDown","paused","_MrVideoScrub_resizeHandler","offsetWidth","_MrVideoScrub_mousedownHandler","pause","_MrVideoScrub_mousemoveHandler","offset","clientX","abs","_MrVideoScrub_mouseupHandler","playPromise","_MrVideoScrub_touchstartHandler","_MrVideoScrub_touchmoveHandler","changedTouches","pageX","_MrVideoScrub_touchendHandler","forId","MrVideoProgress","_MrVideoProgress_videoEl","_MrVideoProgress_videoDuration","_MrVideoProgress_offsetWidth","_MrVideoProgress_bar","_MrVideoProgress_indicator","_MrVideoProgress_moving","_MrVideoProgress_resizeHandler","displayVideoCurrentTimeWithIndicator","_MrVideoProgress_durationchangedHandler","_MrVideoProgress_playHandler","_MrVideoProgress_timeupdateHandler","_MrVideoProgress_scrubHandler","displayScrubTimeWithIndicator","appendChild","transform","jump","MrMuteToggle","_MrMuteToggle_clickHandler","media","getAttachedMedia","muted","_MrMuteToggle_volumechangeHandler","setStateAttribute","_MrMuteToggle_timeupdateHandler","_MrMuteToggle_playpauseHandler","stopListening","startListening","onId","hasAudio","HTMLAudioElement","mozHasAudio","audioTracks","webkitAudioDecodedByteCount","withId","HTMLMediaElement","MrPlayPauseToggle","_MrPlayPauseToggle_clickHandler","_MrPlayPauseToggle_timeupdateHandler","_MrPlayPauseToggle_playHandler","_MrPlayPauseToggle_pauseHandler","MrFullscreen","_MrFullscreen_mediaHasControls","_MrFullscreen_clickHandler","_MrFullscreen_fullscreenchangeHandler","requestFullscreen","msRequestFullscreen","mozRequestFullScreen","webkitRequestFullscreen","webkitEnterFullscreen","fullscreenElement","fullscreenEnabled","mediaId"],"sourceRoot":""}